From be48bff5aeb4db0c098a8f94477bbe6503c1dc8d Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Wed, 16 Oct 2019 14:11:07 +0300 Subject: [PATCH] Send confirmation to new email --- apps/account/models.py | 9 +++++---- apps/account/serializers/common.py | 6 ++++-- apps/account/tasks.py | 9 +++++---- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/apps/account/models.py b/apps/account/models.py index 3eb07722..5d5005e8 100644 --- a/apps/account/models.py +++ b/apps/account/models.py @@ -158,19 +158,20 @@ class User(AbstractUser): self.is_active = True self.save() - def get_body_email_message(self, subject: str, message: str): + def get_body_email_message(self, subject: str, message: str, emails=None): """Prepare the body of the email message""" return { 'subject': subject, 'message': str(message), 'from_email': settings.EMAIL_HOST_USER, - 'recipient_list': [self.email, ] + 'recipient_list': emails if emails else [self.email, ] } - def send_email(self, subject: str, message: str): + def send_email(self, subject: str, message: str, emails=None): """Send an email to reset user password""" send_mail(**self.get_body_email_message(subject=subject, - message=message)) + message=message, + emails=emails)) @property def confirm_email_token(self): diff --git a/apps/account/serializers/common.py b/apps/account/serializers/common.py index d68cfe56..20016297 100644 --- a/apps/account/serializers/common.py +++ b/apps/account/serializers/common.py @@ -72,11 +72,13 @@ class UserSerializer(serializers.ModelSerializer): if settings.USE_CELERY: tasks.change_email_address.delay( user_id=instance.id, - country_code=self.context.get('request').country_code) + country_code=self.context.get('request').country_code, + emails=[validated_data['email'],]) else: tasks.change_email_address( user_id=instance.id, - country_code=self.context.get('request').country_code) + country_code=self.context.get('request').country_code, + emails=[validated_data['email'],]) return instance diff --git a/apps/account/tasks.py b/apps/account/tasks.py index d9fa7bb7..21b22320 100644 --- a/apps/account/tasks.py +++ b/apps/account/tasks.py @@ -10,11 +10,12 @@ from account.models import User logging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.INFO) logger = logging.getLogger(__name__) -def send_email(user_id: int, subject: str, message_prop: str, country_code: str): +def send_email(user_id: int, subject: str, message_prop: str, country_code: str, emails=None): try: user = User.objects.get(id=user_id) user.send_email(subject=_(subject), - message=getattr(user, message_prop, lambda _: '')(country_code)) + message=getattr(user, message_prop, lambda _: '')(country_code), + emails=emails) except: cur_frame = inspect.currentframe() cal_frame = inspect.getouterframes(cur_frame, 2) @@ -35,9 +36,9 @@ def confirm_new_email_address(user_id, country_code): @shared_task -def change_email_address(user_id, country_code): +def change_email_address(user_id, country_code, emails=None): """Send email to user new email.""" - send_email(user_id, 'Validate new email address', 'change_email_template', country_code) + send_email(user_id, 'Validate new email address', 'change_email_template', country_code, emails) @shared_task