Signnow API/django app/отправить письмо/электронное подписание контракта/ [закрыто]
у меня было задание:
- Задачи под рукой
o Краткое описание задач, которые необходимо выполнить
▪ Задача состоит в том, чтобы создать приложение на Django, позволяющее пользователю зарегистрироваться, войти в систему, и подписать заранее определенный контракт. Контракт будут подписывать 2 стороны: одна из них один из них - пользователь, который изначально регистрируется и подписывает контракт, второй подписывающий вторая сторона должна быть приглашена к подписанию по электронной почте.
o Истории пользователей
▪ Как пользователь, я хочу зарегистрироваться, чтобы иметь возможность войти в систему и использовать функции подписи функции приложения - Критерии приемлемости
o Достаточно базовой аутентификации django (session auth) o Для регистрации достаточно имени пользователя и пароля o Не требуется дополнительной проверки пароля или имени пользователя o При входе в систему я должен быть перенаправлен на страницу инстанцирования
▪ Как пользователь, я хочу войти в систему, чтобы использовать функции подписи в приложении. - Критерии приемлемости
o Войдите в систему, используя имя пользователя и пароль o Не требуется дополнительной проверки пароля или имени пользователя o После входа в систему я должен быть направлен на страницу инстанцирования
▪ Как пользователь, я хочу создать новый контракт, чтобы определить стороны его подписания (подписантов) и подписать его
- Критерии приемлемости
o Инстанцирование контракта выполняется на странице представления (страница инстанцирования контракта страница инстанцирования), которая принимает необходимую информацию по мере необходимую информацию, как указано в следующих пунктах: o Контракт должен состоять из текста-заполнителя ("lorem impsum...") o В договоре должно быть три пустых места, которые необходимо заполнить для получателей: полное имя, дата и подпись. o Одна из подписей - это сам пользователь (я, вошедший в систему как пользователь) o Другой подписант должен быть приглашен путем сбора адреса электронной почты адреса электронной почты от пользователя (меня, который вошел в систему как пользователь). Этот информация будет собрана на этой странице создания контракта
▪ Как пользователь, я хочу подписать соглашение после его инстанцирования, чтобы я мог заполнить его, подписать цифровой подписью и отправить другому получателю для подписания
- Принятие Кртиерии
o После инстанцирования контракта на странице инстанцирования контракта я должен быть направлен на страницу, которая показывает мне соглашение Docusign o Я должен видеть соглашение с текстом-заполнителем и пустыми местами для ввода моего полного имени, даты и подписи. подпись o После заполнения соглашения я должен быть перенаправлен на на другую страницу с сообщением об успехе o Другой подписант также должен получить электронное письмо со ссылкой для подписать соглашение
Меня просили использовать для этого API docusign, но по некоторым причинам у меня есть доступ к API SignNow.
я никогда не работал с REST-API, честно говоря:)
my setting.py:
my views.py:
my forms.py:
from django import forms
from django.contrib.auth.models import User
# class ContractForm(forms.Form):
# user_name = forms.CharField(max_length=100)
# recipient_email = forms.EmailField()
class UserRegistrationForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ['username', 'email', 'password']
class ContractForm(forms.Form):
title = forms.CharField(max_length=100)
recipients = forms.CharField(widget=forms.Textarea, help_text="Enter recipient emails separated by commas.")
content = forms.CharField(widget=forms.Textarea, help_text="Enter contract content with placeholders.")
my contracts(имя приложения)/urls.py:
from django.views.generic import TemplateView
from . import views
from django.contrib.auth import views as auth_views
from django.urls import path
from .views import register, create_contract
urlpatterns = [
path('register/', register, name='register'),
path('login/', auth_views.LoginView.as_view(template_name='contracts/login.html'), name='login'),
path('create-contract/', create_contract, name='create_contract'),
path('success/', TemplateView.as_view(template_name='contracts/success.html'), name='success'),
]
templates/contracts/create_contract.html:
<!DOCTYPE html>
<html>
<head>
<title>Create Contract</title>
</head>
<body>
<h2>Create Contract</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Send Contract</button>
</form>
</body>
</html>
templates/contracts/login.html:
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<h2>Login</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>
<p>Don't have an account? <a href="{% url 'register' %}">Register here</a></p>
</body>
</html>
templates/contracts/register.html:
<!DOCTYPE html>
<html>
<head>
<title>Register</title>
</head>
<body>
<h2>Register</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
<p>Already have an account? <a href="{% url 'login' %}">Login here</a></p>
</body>
</html>
templates/contracts/success.html:
<!DOCTYPE html>
<html>
<head>
<title>Success</title>
</head>
<body>
<h2>Contract Sent Successfully!</h2>
<p>Your contract has been sent to the recipients.</p>
<a href="{% url 'create_contract' %}">Create another contract</a>
</body>
</html>