From 729c0bec7ec6f301fea492b16e3035e3ba57c1ff Mon Sep 17 00:00:00 2001 From: Sokurov Idar Date: Mon, 8 Feb 2021 20:12:24 +0300 Subject: [PATCH] Email on zendesk exist check --- access_controller/urls.py | 8 ++-- main/extra_func.py | 4 +- main/migrations/0002_userprofile_name.py | 18 ++++++++ main/models.py | 1 + .../django_registration_complete.html | 10 ----- .../registration_closed.html | 15 +++++++ .../registration_complete.html | 14 +++++++ .../registration_form.html | 42 ++++++++++--------- main/views.py | 29 +++++++------ requirements.txt | 2 + 10 files changed, 95 insertions(+), 48 deletions(-) create mode 100644 main/migrations/0002_userprofile_name.py delete mode 100644 main/templates/django_registration/django_registration_complete.html create mode 100644 main/templates/django_registration/registration_closed.html create mode 100644 main/templates/django_registration/registration_complete.html diff --git a/access_controller/urls.py b/access_controller/urls.py index b9f7386..9262d42 100644 --- a/access_controller/urls.py +++ b/access_controller/urls.py @@ -15,15 +15,15 @@ Including another URLconf """ from django.conf.urls.static import static from django.contrib import admin -from django.urls import path +from django.urls import path, include from access_controller import settings from main.views import * urlpatterns = [ path('admin/', admin.site.urls, name='admin'), - path('register/', Reg.as_view(), name='registration'), - path('admin/', admin.site.urls), - path('profile/', profile_page, name="Profile"), + path('register/', CustomRegistrationView.as_view(), name='registration'), + path('', include('django_registration.backends.one_step.urls')), + path('profile/', profile_page, name='profile'), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/main/extra_func.py b/main/extra_func.py index 6d74db6..487fb13 100644 --- a/main/extra_func.py +++ b/main/extra_func.py @@ -2,9 +2,9 @@ from main.models import UserProfile # Дополнительные функции -def set_and_get_username(UP: UserProfile): # TODO: Переделать с получением данных через API +def set_and_get_name(UP: UserProfile): # TODO: Переделать с получением данных через API """ - Функция устанавливает поле :class:`user.username` текущим именем в Zendesk + Функция устанавливает поле :class:`username` текущим именем в Zendesk :param UP: Объект профиля пользователя :type UP: :class:`main.models.UserProfile` diff --git a/main/migrations/0002_userprofile_name.py b/main/migrations/0002_userprofile_name.py new file mode 100644 index 0000000..1737da2 --- /dev/null +++ b/main/migrations/0002_userprofile_name.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1.6 on 2021-02-08 16:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='userprofile', + name='name', + field=models.CharField(default='None', max_length=100), + ), + ] diff --git a/main/models.py b/main/models.py index 73fb9ce..96d04db 100644 --- a/main/models.py +++ b/main/models.py @@ -8,3 +8,4 @@ class UserProfile(models.Model): user = models.OneToOneField(to=User, on_delete=models.CASCADE) role = models.IntegerField() image = models.ImageField(upload_to='user_avatars') + name = models.CharField(default='None', max_length=100) diff --git a/main/templates/django_registration/django_registration_complete.html b/main/templates/django_registration/django_registration_complete.html deleted file mode 100644 index 61a69c0..0000000 --- a/main/templates/django_registration/django_registration_complete.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - -NIce - - diff --git a/main/templates/django_registration/registration_closed.html b/main/templates/django_registration/registration_closed.html new file mode 100644 index 0000000..9aa808d --- /dev/null +++ b/main/templates/django_registration/registration_closed.html @@ -0,0 +1,15 @@ +{% extends 'base/base.html' %} +{% load static %} + +{% block title %} + Регистрация завершена +{% endblock %} + +{% block heading %} + Регистрация +{% endblock %} + +{% block content %} +
+

Нет пользователя с указаным адресом электронной почты

+{% endblock %} diff --git a/main/templates/django_registration/registration_complete.html b/main/templates/django_registration/registration_complete.html new file mode 100644 index 0000000..8da81c0 --- /dev/null +++ b/main/templates/django_registration/registration_complete.html @@ -0,0 +1,14 @@ +{% extends 'base/base.html' %} + +{% block title %} + Регистрация завершена +{% endblock %} + +{% block heading %} + Регистрация +{% endblock %} + +{% block content %} +
+

Регистрация прошла успешно. Войти сейчас

+{% endblock %} diff --git a/main/templates/django_registration/registration_form.html b/main/templates/django_registration/registration_form.html index 6b84e1d..c4bb388 100644 --- a/main/templates/django_registration/registration_form.html +++ b/main/templates/django_registration/registration_form.html @@ -1,20 +1,24 @@ - - - - - Title - - -

Регистрация

-
- {% csrf_token %} - {% for field in form %} - {{ field.label_tag }} - {{ field }} -
- {% if field.errors %}
{{ field.errors }}
{% endif %} -{% endfor %} +{% extends 'base/base.html' %} +{% load static %} - - - +{% block title %} + Регистрация +{% endblock %} + +{% block heading %} + Регистрация +{% endblock %} +{% block content %} + + {% csrf_token %} + {% for field in form %} + {{ field.label_tag }} + {{ field }} +
+ {% if field.errors %} + {{ field.errors }} + {% endif %} + {% endfor %} + +
+{% endblock %} diff --git a/main/views.py b/main/views.py index c8271ee..2de5f8b 100644 --- a/main/views.py +++ b/main/views.py @@ -1,26 +1,25 @@ from django.shortcuts import render, redirect +from django.urls import reverse_lazy -from main.extra_func import set_and_get_username, set_and_get_email, load_and_get_image, set_and_get_role +from main.extra_func import set_and_get_name, set_and_get_email, load_and_get_image, set_and_get_role from main.models import UserProfile from django.contrib.auth.models import User -from django.urls import reverse_lazy from django_registration.forms import RegistrationFormUniqueEmail from django_registration.views import RegistrationView from zenpy import Zenpy -from main.models import UserProfile - -class Reg(RegistrationView): +class CustomRegistrationView(RegistrationView): form_class = RegistrationFormUniqueEmail template_name = 'django_registration/registration_form.html' + success_url = reverse_lazy('django_registration_complete') def register(self, form): creds = { - 'email': 'DEFINEME', + 'email': 'idar.sokurov.05@mail.ru', 'subdomain': 'ngenix1612197338', - 'token': 'DEFINEME', + 'token': 'xRL9Qqz7svFE3X9cHMVC2zOtJUdllzr441C3Z363', } client = Zenpy(**creds) zenpy_user = client.search(form.data['email'], type='user') @@ -28,16 +27,20 @@ class Reg(RegistrationView): user = User.objects.create_user( username=form.data['username'], email=form.data['email'], - password=form.data['email'], + password=form.data['password1'] ) - profile = UserProfile.objects.create( + profile = UserProfile( image='None.png', user=user, - role='None' + role=0, ) - user.save() + set_and_get_name(profile) + set_and_get_email(profile) + set_and_get_role(profile) + load_and_get_image(profile) + profile.save() else: - raise AttributeError('No such email') + self.success_url = reverse_lazy('django_registration_disallowed') def profile_page(request): @@ -53,7 +56,7 @@ def profile_page(request): else: # TODO: Убрать после появления регистрации и авторизации, добавить login_required() UP = UserProfile.objects.get(user=1) context = { - 'name': set_and_get_username(UP), + 'name': set_and_get_name(UP), 'email': set_and_get_email(UP), 'role': set_and_get_role(UP), 'image_name': load_and_get_image(UP), diff --git a/requirements.txt b/requirements.txt index 2f0966d..f51fa7a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,9 @@ # Engine Django==3.1.6 Pillow==8.1.0 +zenpy~=2.0.24 # Documentation Sphinx==3.4.3 sphinx-rtd-theme==0.5.1 +