From be6005c4be287187e393d34739a92d5753f71dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B5=D0=BF=D0=B0=D0=BD=D0=B5=D0=BD=D0=BA?= =?UTF-8?q?=D0=BE=20=D0=9E=D0=BB=D1=8C=D0=B3=D0=B0?= Date: Sat, 13 Mar 2021 16:41:28 +0300 Subject: [PATCH] Correct view documentation using typehints --- main/forms.py | 2 +- main/templates/registration/login.html | 2 +- main/views.py | 54 +++++++++++++++++++++----- 3 files changed, 46 insertions(+), 12 deletions(-) diff --git a/main/forms.py b/main/forms.py index a8c2ec1..dab07bb 100644 --- a/main/forms.py +++ b/main/forms.py @@ -32,7 +32,7 @@ class CustomRegistrationForm(RegistrationFormUniqueEmail): class AdminPageUsers(forms.Form): """ - Форма для установки статусов engineer или light_agent пользователям + Форма для установки статусов engineer или light_agent пользователям. :param users: Поле для установки статуса :type users: :class:`ModelMultipleChoiceField` diff --git a/main/templates/registration/login.html b/main/templates/registration/login.html index 7a3ab68..ecbaa31 100644 --- a/main/templates/registration/login.html +++ b/main/templates/registration/login.html @@ -30,7 +30,7 @@ {% endif %}
- Забыли пароль? + Забыли пароль?
diff --git a/main/views.py b/main/views.py index 36365f2..d1155e0 100644 --- a/main/views.py +++ b/main/views.py @@ -27,7 +27,7 @@ from .models import UserProfile class CustomRegistrationView(RegistrationView): """ - Отображение и логика работы страницы регистрации пользователя + Класс отображения и логики работы страницы регистрации пользователя 1. Ввод email пользователя, указанный на Zendesk 2. В случае если пользователь с данным паролем зарегистрирован на Zendesk и относится к определенной организации, происходит сброс ссылки с установлением пароля на указанный email @@ -68,9 +68,11 @@ class CustomRegistrationView(RegistrationView): self.is_allowed = False @staticmethod - def set_permission(user) -> None: + def set_permission(user: User) -> None: """ - Дает разрешение на просмотр страница администратора, если пользователь имеет роль admin + Функция дает разрешение на просмотр страница администратора, если пользователь имеет роль admin. + + :param user: авторизованный пользователь (получает разрешение, имея роль "admin" """ if user.userprofile.role == 'admin': content_type = ContentType.objects.get_for_model(UserProfile) @@ -82,8 +84,11 @@ class CustomRegistrationView(RegistrationView): def get_success_url(self, user: User = None) -> success_url: """ - Возвращает url-адрес страницы, куда нужно перейти после успешной/неуспешной регистрации - Используется самой django-registration + Функция возвращает url-адрес страницы, куда нужно перейти после успешной/неуспешной регистрации. + Используется самой django-registration. + + :param user: пользователь, пытающийся зарегистроваться + :return: адресация на страницу успешной регистрации """ if self.is_allowed: return reverse_lazy('password_reset_done') @@ -94,7 +99,10 @@ class CustomRegistrationView(RegistrationView): @login_required() def profile_page(request: WSGIRequest) -> HttpResponse: """ - Отображение страницы профиля + Функция отображения страницы профиля. + + :param request: данные пользователя из БД + :return: адресация на страницу пользователя """ user_profile: UserProfile = request.user.userprofile update_profile(user_profile) @@ -105,7 +113,13 @@ def profile_page(request: WSGIRequest) -> HttpResponse: return render(request, 'pages/profile.html', context) -def auth_user(request): +def auth_user(request: WSGIRequest) -> ZenpyUser: + """ + Функция возвращает профиль пользователя на Zendesk. + + :param request: email, subdomain и token пользователя + :return: объект пользователя Zendesk + """ admin_creds = { 'email': os.environ.get('ACCESS_CONTROLLER_API_EMAIL'), 'subdomain': 'ngenix1612197338', @@ -117,7 +131,14 @@ def auth_user(request): @login_required() -def work_page(request, id): +def work_page(request: WSGIRequest, id: int) -> HttpResponse: + """ + Функция отображения страницы "Управления правами" для текущего пользователя (login_required). + + :param request: объект пользователя + :param id: id пользователя, используется для динамической адресации + :return: адресация на страницу "Управления правами" (либо на страницу "Авторизации", если id и user.id не совпадают + """ users = get_users_list() if request.user.id == id: engineers = [] @@ -139,7 +160,14 @@ def work_page(request, id): @login_required() -def work_hand_over(request): +def work_hand_over(request: WSGIRequest) -> HttpResponseRedirect: + """ + Функция позволяет текущему пользователю (login_required) сдать права, а именно сменить в Zendesk роль с "engineer" на "light agent" + и установить роль "agent" в БД. Действия выполняются, если исходная роль пользователя "engineer". + + :param request: данные текущего пользователя (login_required) + :return: перезагрузка текущей страницы после выполнения смены роли + """ zenpy_user, admin = auth_user(request) if zenpy_user.custom_role_id == ZENDESK_ROLES['engineer']: @@ -151,7 +179,13 @@ def work_hand_over(request): @login_required() -def work_become_engineer(request): +def work_become_engineer(request: WSGIRequest) -> HttpResponseRedirect: + """ + Функция меняет роль пользователя в Zendesk на "engineer" и присваевает роль "agent" в БД (в случае, если исходная роль пользователя была "light_agent"). + + :param request: данные текущего пользователя (login_required) + :return: перезагрузка текущей страницы после выполнения смены роли + """ zenpy_user, admin = auth_user(request) if zenpy_user.custom_role_id == ZENDESK_ROLES['light_agent']: zenpy_user.custom_role_id = ZENDESK_ROLES['engineer']