From ea39c1815da5fe94cec6754238530f7e006e5132 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 2 Mar 2018 12:19:21 +0300 Subject: [PATCH 1/2] Merge remote-tracking branch 'origin/fix_req' into fix_req # Conflicts: # requirements.txt --- access/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/access/views.py b/access/views.py index d84f83c..983316c 100644 --- a/access/views.py +++ b/access/views.py @@ -144,7 +144,7 @@ class DetailUserView(APIView): user.first_name = f_n if not l_n is None: - user.first_name = l_n + user.last_name = l_n user.save() From 68fdd77e079d252ccdb215221a4d6f3769329248 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 2 Mar 2018 12:51:50 +0300 Subject: [PATCH 2/2] Merge remote-tracking branch 'origin/fix_req' into fix_req # Conflicts: # requirements.txt --- access/models/user.py | 11 ++++---- access/urls.py | 10 +++---- access/views.py | 62 +++++++++++++++++++++---------------------- lms/settings.py | 3 +++ 4 files changed, 45 insertions(+), 41 deletions(-) diff --git a/access/models/user.py b/access/models/user.py index ef82924..ac1ac54 100644 --- a/access/models/user.py +++ b/access/models/user.py @@ -5,7 +5,7 @@ import uuid from django.conf import settings from django.contrib.auth.base_user import BaseUserManager, AbstractBaseUser from django.contrib.auth.models import Group, PermissionsMixin -from django.core.mail import send_mail +from django.core.mail import send_mail, EmailMessage from django.db import models from django.utils import timezone from django.utils.translation import ugettext_lazy as _ @@ -70,16 +70,17 @@ class CustomUserManager(BaseUserManager): hash=''.join(random.choice(string.ascii_letters) for x in range(15))) body = { "subject": 'Спасибо за регистрацию', - "message": ''' + "body": ''' Вы были успешны зарегистрированны на портале go.skillbox.ru - ваш пароль %s + ваш пароль (он будет дествителен после активации по ссылке) %s для подтверждения регистрации перейдите по ссылке %s/api/v1/users/registration/?hash=%s''' % (password, settings.DOMAIN, invite.hash), "from_email": 'robo@skillbox.ru', - "recipient_list": [user.email], + "to": [user.email], + "bcc": [settings.SUPPORT_EMAIL], } - send_mail( + EmailMessage( **body ) return user diff --git a/access/urls.py b/access/urls.py index 9645616..579905d 100644 --- a/access/urls.py +++ b/access/urls.py @@ -18,10 +18,10 @@ urlpatterns = [ url(r'logout/$', views.LogoutView.as_view()), url(r'reset/$', views.ResetPasswordView.as_view()), url(r'progress_detail/upload/(?P[0-9A-Fa-f-]+)/$', progress.views.UploadCourseProgressUserView.as_view()), - # url( - # r'management/password/$', - # views.ManagementPassword.as_view(), - # name='management-password' - # ) + url( + r'management/password/$', + views.ManagementPassword.as_view(), + name='management-password' + ) ] diff --git a/access/views.py b/access/views.py index 983316c..cdda4bf 100644 --- a/access/views.py +++ b/access/views.py @@ -152,10 +152,10 @@ class DetailUserView(APIView): if not acc['b_day'] is None: try: - b_day = datetime.datetime.strptime(acc['b_day'], '%d.%m.%Y') # TODO вынести форматы в настройки + b_day = datetime.datetime.strptime(acc['b_day'], '%Y-%m-%d') except ValueError: - b_day = datetime.datetime.strptime(acc['b_day'], '%d-%m-%Y') - acc['b_day'] = b_day.strftime('%Y-%m-%d') + return Response("Дата в не верном формате", status=400) + acc['b_day'] = b_day acc['gender'] = 0 if acc['gender'] == "undefined" else 1 if acc['gender'] == "male" else 2 @@ -292,31 +292,31 @@ class MinUserView(APIView): return Response("User not found", status=404) -# class ManagementPassword(generics.GenericAPIView): -# permission_classes = (permissions.IsAuthenticated, permissions.IsAdminUser) -# serializer_class = UserEmailSerializer -# -# def post(self, request): -# """ -# Set password to the student in admin area by manager -# --- -# Generate new password to the student and send email with new password -# """ -# serializer = self.get_serializer(data=request.data) -# serializer.is_valid(raise_exception=True) -# serializer.save() -# logger.info(f'set password: {serializer.password} to the ' -# f'student with email: {serializer.user.email}') -# send_mail( -# subject='Установлен новый пароль', -# message=f'Ваш новый пароль {serializer.password} ' -# f'(в последствии вы сможите сменить его в личном кабинете).', -# from_email='robo@skillbox.ru', -# recipient_list=[serializer.user.email], -# ) -# logger.info(f'send email to {serializer.user.email} ' -# f'with new password') -# return Response( -# data={'message': 'Письмо с новым паролем отправлено на email студента.'}, -# status=status.HTTP_201_CREATED -# ) +class ManagementPassword(generics.GenericAPIView): + permission_classes = (permissions.IsAuthenticated, permissions.IsAdminUser) + serializer_class = UserEmailSerializer + + def post(self, request): + """ + Set password to the student in admin area by manager + --- + Generate new password to the student and send email with new password + """ + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + serializer.save() + logger.info(f'set password: {serializer.password} to the ' + f'student with email: {serializer.user.email}') + send_mail( + subject='Установлен новый пароль', + message=f'Ваш новый пароль {serializer.password} ' + f'(в последствии вы сможите сменить его в личном кабинете).', + from_email='robo@skillbox.ru', + recipient_list=[serializer.user.email], + ) + logger.info(f'send email to {serializer.user.email} ' + f'with new password') + return Response( + data={'message': 'Письмо с новым паролем отправлено на email студента.'}, + status=201 + ) diff --git a/lms/settings.py b/lms/settings.py index 2a4e59e..e2fd738 100644 --- a/lms/settings.py +++ b/lms/settings.py @@ -26,6 +26,9 @@ else: EMAIL_CONFIG = env.email_url('EMAIL_URL',) vars().update(EMAIL_CONFIG) +#TODO: Ответственый работник, который ставится в копию ко многим рассылкам, костыль +SUPPORT_EMAIL = 'anastasiya.katyuhina@skillbox.ru' + BROKER_URL = 'amqp://guest:guest@localhost:5672//' CELERY_RESULT_BACKEND = 'django-db' CELERY_CACHE_BACKEND = 'django-cache'