From 8c0a589173369abb318273e63b1602103439d53c Mon Sep 17 00:00:00 2001 From: Sokurov Idar Date: Sun, 11 Apr 2021 01:12:07 +0300 Subject: [PATCH] Add SMTP error check --- main/extra_func.py | 4 +-- .../registration_closed.html | 2 +- main/views.py | 33 +++++++++---------- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/main/extra_func.py b/main/extra_func.py index 8b75346..03add3e 100644 --- a/main/extra_func.py +++ b/main/extra_func.py @@ -92,12 +92,12 @@ class ZendeskAdmin: def get_group(self, name: str) -> str: """ - Функция возвращает группы, к которым принадлежит пользователь. + Функция возвращает группу по названию :param name: Имя пользователя :return: Группы пользователя (в случае отсутствия None) """ - groups = self.admin.search(name) + groups = self.admin.search(name, type='group') for group in groups: return group return None diff --git a/main/templates/django_registration/registration_closed.html b/main/templates/django_registration/registration_closed.html index 9c5e013..fdf4e36 100644 --- a/main/templates/django_registration/registration_closed.html +++ b/main/templates/django_registration/registration_closed.html @@ -11,5 +11,5 @@ {% block content %}
-

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

+

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

{% endblock %} diff --git a/main/views.py b/main/views.py index 0a1a070..41aa856 100644 --- a/main/views.py +++ b/main/views.py @@ -1,7 +1,6 @@ -import logging -import os -from datetime import datetime +from smtplib import SMTPException +from django.contrib import messages from django.contrib.auth.decorators import login_required from django.contrib.auth.forms import PasswordResetForm from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin @@ -13,23 +12,19 @@ from django.contrib.messages.views import SuccessMessageMixin from django.core.exceptions import PermissionDenied from django.core.handlers.wsgi import WSGIRequest from django.http import HttpResponseRedirect, HttpResponse -from django.shortcuts import render, get_list_or_404, redirect +from django.shortcuts import render, redirect from django.urls import reverse_lazy, reverse from django.views.generic import FormView from django_registration.views import RegistrationView -from django.contrib import messages - # Django REST from rest_framework import viewsets from rest_framework.response import Response - from zenpy.lib.api_objects import User as ZenpyUser -from access_controller.settings import EMAIL_HOST_USER, ZENDESK_ROLES, ZENDESK_MAX_AGENTS -from main.extra_func import ZendeskAdmin +from access_controller.settings import EMAIL_HOST_USER, ZENDESK_ROLES, ZENDESK_MAX_AGENTS, ZENDESK_GROUPS from main.extra_func import check_user_exist, update_profile, get_user_organization, \ make_engineer, make_light_agent, get_users_list, update_users_in_model, count_users, \ - StatisticData + StatisticData,ZendeskAdmin from main.forms import AdminPageUsers, CustomRegistrationForm, CustomAuthenticationForm, StatisticForm from main.serializers import ProfileSerializer from .models import UserProfile @@ -79,14 +74,18 @@ class CustomRegistrationView(RegistrationView): 'extra_email_context': None, } user = User.objects.create_user( - username=form.data['email'], - email=form.data['email'], - password=User.objects.make_random_password(length=50) + username=form.data['email'], + email=form.data['email'], + password=User.objects.make_random_password(length=50) ) - forms.save(**opts) - update_profile(user.userprofile) - self.set_permission(user) - return user + try: + forms.save(**opts) + update_profile(user.userprofile) + self.set_permission(user) + return user + except SMTPException: + user.delete() + self.is_allowed = False else: raise ValueError('Непредвиденная ошибка') else: