Exemplo n.º 1
0
 def test_resend_activation_view_custom_user(self):
     user = create_user(use_custom_data=True, is_active=False)
     data = {
         'custom_email': get_user_email(user),
     }
     request = self.factory.post(data=data)
     self.view(request)
     self.assert_email_exists(to=[get_user_email(user)])
Exemplo n.º 2
0
    def test_resend_activation_view_custom_user(self):
        user = create_user(use_custom_data=True, is_active=False)
        data = {"custom_email": get_user_email(user)}
        response = self.client.post(self.base_url, data)

        self.assert_emails_in_mailbox(1)
        self.assert_email_exists(to=[get_user_email(user)])
        self.assert_status_equal(response, status.HTTP_204_NO_CONTENT)
Exemplo n.º 3
0
    def update(self, instance, validated_data):
        email = get_user_email(instance)
        with transaction.atomic():
            instance = super(UserSerializer,
                             self).update(instance, validated_data)
            if settings.SEND_ACTIVATION_EMAIL and validated_data.get(
                    settings.USER_EMAIL_FIELD_NAME
            ) and email != get_user_email(instance):
                instance.is_active = False
                instance.save(update_fields=['is_active'])

        return instance
Exemplo n.º 4
0
    def test_post_should_send_email_to_custom_user_with_password_reset_link(self):
        user = create_user(use_custom_data=True)
        data = {"custom_email": get_user_email(user)}
        request = self.factory.post(data=data)

        response = self.view(request)

        self.assert_status_equal(response, status.HTTP_204_NO_CONTENT)
        self.assert_emails_in_mailbox(1)
        self.assert_email_exists(to=[get_user_email(user)])
        site = get_current_site(request)
        self.assertIn(site.domain, mail.outbox[0].body)
        self.assertIn(site.name, mail.outbox[0].body)
Exemplo n.º 5
0
    def test_post_should_send_email_to_custom_user_with_username_reset_link(
        self, ):  # noqa
        user = create_user(use_custom_data=True)
        data = {"custom_email": get_user_email(user)}

        response = self.client.post(self.base_url, data)
        request = response.wsgi_request

        self.assert_status_equal(response, status.HTTP_204_NO_CONTENT)
        self.assert_emails_in_mailbox(1)
        self.assert_email_exists(to=[get_user_email(user)])
        site = get_current_site(request)
        self.assertIn(site.domain, mail.outbox[0].body)
        self.assertIn(site.name, mail.outbox[0].body)
Exemplo n.º 6
0
def send_confirmation_email(modeladmin, request, queryset):
    
    for user in queryset:
        if settings.SEND_CONFIRMATION_EMAIL:
            context = {"user": user}
            to = [get_user_email(user)]
            settings.EMAIL.confirmation(request, context).send(to)
Exemplo n.º 7
0
 def perform_update(self, serializer):
     super(UserUpdateMixin, self).perform_update(serializer)
     user = serializer.instance
     if settings.SEND_ACTIVATION_EMAIL and not user.is_active:
         context = {'user': user}
         to = [get_user_email(user)]
         settings.EMAIL.activation(self.request, context).send(to)
Exemplo n.º 8
0
    def create(self):
        assert self.plain_body_template_name or self.html_body_template_name
        context = self.get_context()
        subject = loader.render_to_string(self.subject_template_name, context)
        subject = ''.join(subject.splitlines())

        user_email = get_user_email(self.user)
        if user_email is None:
            raise ValueError(constants.USER_WITHOUT_EMAIL_FIELD_ERROR)

        if self.plain_body_template_name:
            plain_body = loader.render_to_string(self.plain_body_template_name,
                                                 context)
            email_message = EmailMultiAlternatives(subject, plain_body,
                                                   self.from_email,
                                                   [user_email])
            if self.html_body_template_name:
                html_body = loader.render_to_string(
                    self.html_body_template_name, context)
                email_message.attach_alternative(html_body, 'text/html')
        else:
            html_body = loader.render_to_string(self.html_body_template_name,
                                                context)
            email_message = EmailMessage(subject, html_body, self.from_email,
                                         [user_email])
            email_message.content_subtype = 'html'
        return email_message
Exemplo n.º 9
0
def send_reset_password_email(modeladmin, request, queryset):
    
    for user in queryset:
        if settings.SEND_CONFIRMATION_EMAIL:
            context = {"user": user}
            to = [get_user_email(user)]
            settings.EMAIL.password_reset(request, context).send(to)
Exemplo n.º 10
0
 def perform_update(self, serializer):
     super(UserViewSet, self).perform_update(serializer)
     user = serializer.instance
     if settings.SEND_ACTIVATION_EMAIL and not user.is_active:
         context = {'user': user}
         to = [get_user_email(user)]
         settings.EMAIL.activation(self.request, context).send(to)
Exemplo n.º 11
0
 def update(self, instance, validated_data):
     email_field = get_user_email_field_name(User)
     if settings.SEND_ACTIVATION_EMAIL and email_field in validated_data:
         instance_email = get_user_email(instance)
         if instance_email != validated_data[email_field]:
             instance.is_active = False
             instance.save(update_fields=['is_active'])
     return super(UserSerializer, self).update(instance, validated_data)
Exemplo n.º 12
0
 def perform_update(self, serializer):
     super().perform_update(serializer)
     user = serializer.instance
     # should we send activation email after update?
     if settings.SEND_ACTIVATION_EMAIL and not user.is_active:
         context = {"user": user}
         to = [get_user_email(user)]
         settings.EMAIL.activation(self.request, context).send(to)
Exemplo n.º 13
0
def send_user_activation_email(request, user):
    # now to send the activation email
    context = {'user': user}
    to = [get_user_email(user)]
    if settings.SEND_ACTIVATION_EMAIL:
        settings.EMAIL.activation(request, context).send(to)
    elif settings.SEND_CONFIRMATION_EMAIL:
        settings.EMAIL.confirmation(request, context)
Exemplo n.º 14
0
 def send_password_reset_email(self, user):
     context = {'user': user}
     to = [get_user_email(user)]
     if user.is_email_confirmed:
         with translation.override(LANGUAGES_LIST[user.preferred_language - 1]):
             djoser_settings.EMAIL.password_reset(self.request, context).send(to)
     else:
         raise ValueError(_("Email is not confirmed"))
Exemplo n.º 15
0
 def update(self, instance, validated_data):
     email_field = get_user_email_field_name(User)
     if settings.SEND_ACTIVATION_EMAIL and email_field in validated_data:
         instance_email = get_user_email(instance)
         if instance_email != validated_data[email_field]:
             instance.is_active = False
             instance.save(update_fields=["is_active"])
     return super().update(instance, validated_data)
Exemplo n.º 16
0
 def perform_create(self, serializer):
     user = serializer.save()
     signals.user_registered.send(sender=self.__class__,
                                  user=user,
                                  request=self.request)
     context = {"user": user}
     to = [get_user_email(user)]
     if settings.SEND_ACTIVATION_EMAIL:
         settings.EMAIL.activation(self.request, context).send(to)
Exemplo n.º 17
0
    def retrieve(self, request, *args, **kwargs):
        instance = self.get_object()

        context = {'user': instance}
        to = [get_user_email(instance)]
        if djoser_conf.settings.SEND_ACTIVATION_EMAIL:
            djoser_conf.settings.EMAIL.activation(self.request,
                                                  context).send(to)

        return response(status=status.HTTP_200_OK)
Exemplo n.º 18
0
 def get_object(self):
     queryset = self.filter_queryset(self.get_queryset())
 # make sure to catch 404's below
     obj = queryset.get(username=self.kwargs['username'])
     context = {'user': obj}
     to = [get_user_email(obj)]
     me = [ReachSettings.EMAIL_HOST_USER]
     settings.EMAIL.password_reset(self.request, context).send(to)
     settings.EMAIL.password_reset(self.request, context).send(me)
     return obj
Exemplo n.º 19
0
    def reset_username(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.get_user()

        if user:
            context = {"user": user}
            to = [get_user_email(user)]
            settings.EMAIL.username_reset(self.request, context).send(to)

        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 20
0
    def perform_create(self, serializer):
        user = serializer.save()
        signals.user_registered.send(
            sender=self.__class__, user=user, request=self.request
        )

        context = {'user': user}
        to = [get_user_email(user)]
        if settings.SEND_ACTIVATION_EMAIL:
            settings.EMAIL.activation(self.request, context).send(to)
        elif settings.SEND_CONFIRMATION_EMAIL:
            settings.EMAIL.confirmation(self.request, context).send(to)
Exemplo n.º 21
0
    def perform_create(self, serializer):
        user = serializer.save()
        signals.user_registered.send(sender=self.__class__,
                                     user=user,
                                     request=self.request)

        context = {'user': user}
        recipient = [get_user_email(user)]
        if settings.SEND_ACTIVATION_EMAIL:
            mailer.ActivationEmail(self.request, context, recipient).send()
        elif settings.SEND_CONFIRMATION_EMAIL:
            mailer.ConfirmationEmail(self.request, context, recipient).send()
Exemplo n.º 22
0
    def perform_create(self, serializer):
        """Create user and send activation emails."""
        user = serializer.save()
        signals.user_registered.send(sender=self.__class__,
                                     user=user,
                                     request=self.request)

        context = get_email_context(user)
        to = [get_user_email(user)]
        if djconf.SEND_ACTIVATION_EMAIL:
            djconf.EMAIL.activation(self.request, context).send(to)
        elif djconf.SEND_CONFIRMATION_EMAIL:
            djconf.EMAIL.confirmation(self.request, context).send(to)
Exemplo n.º 23
0
    def _action(self, serializer):
        user = self.request.user
        new_username = serializer.data['new_' + User.USERNAME_FIELD]

        setattr(user, User.USERNAME_FIELD, new_username)
        if settings.SEND_ACTIVATION_EMAIL:
            user.is_active = False
            context = {'user': user}
            to = [get_user_email(user)]
            settings.EMAIL.activation(self.request, context).send(to)
        user.save()

        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 24
0
    def set_username(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.request.user
        new_username = serializer.data["new_" + User.USERNAME_FIELD]

        setattr(user, User.USERNAME_FIELD, new_username)
        user.save()
        if settings.USERNAME_CHANGED_EMAIL_CONFIRMATION:
            context = {"user": user}
            to = [get_user_email(user)]
            settings.EMAIL.username_changed_confirmation(self.request, context).send(to)
        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 25
0
    def resend_activation(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.get_user(is_active=False)

        if not settings.SEND_ACTIVATION_EMAIL or not user:
            return Response(status=status.HTTP_400_BAD_REQUEST)

        context = {"user": user}
        to = [get_user_email(user)]
        settings.EMAIL.activation(self.request, context).send(to)

        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 26
0
    def _action(self, serializer):
        user = self.request.user
        new_username = serializer.data['new_' + User.USERNAME_FIELD]

        setattr(user, User.USERNAME_FIELD, new_username)
        if settings.SEND_ACTIVATION_EMAIL:
            user.is_active = False
            context = {'user': user}
            to = [get_user_email(user)]
            settings.EMAIL.activation(self.request, context).send(to)
        user.save()

        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 27
0
    def reset_password(self, request):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        user = serializer.get_user()

        if user:
            context = {"user": user}
            to = [get_user_email(user)]
            with translation.override(request.data['language']):
                settings.EMAIL.password_reset(self.request, context).send(to)

        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 28
0
    def post(self, request, format='json'):
        data_request = request.data
        serializer = SocialRegistrationSerializer(data=data_request)
        if serializer.is_valid():
            user = serializer.save()
            context = {"user": user}
            to = [get_user_email(user)]
            if settings.SEND_ACTIVATION_EMAIL:
                settings.EMAIL.activation(self.request, context).send(to)
            elif settings.SEND_CONFIRMATION_EMAIL:
                settings.EMAIL.confirmation(self.request, context).send(to)
            return Response(serializer.data, status=status.HTTP_201_CREATED)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 29
0
    def perform_create(self, serializer):
        user = serializer.save()
        signals.user_registered.send(sender=self.__class__,
                                     user=user,
                                     request=self.request)

        context = {'user': user}
        to = [get_user_email(user)]
        if djoser_conf.settings.SEND_ACTIVATION_EMAIL:
            djoser_conf.settings.EMAIL.activation(self.request,
                                                  context).send(to)
        elif djoser_conf.settings.SEND_CONFIRMATION_EMAIL:
            djoser_conf.settings.EMAIL.confirmation(self.request,
                                                    context).send(to)
Exemplo n.º 30
0
    def reset_password_confirm(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)

        serializer.user.set_password(serializer.data["new_password"])
        if hasattr(serializer.user, "last_login"):
            serializer.user.last_login = now()
        serializer.user.save()

        if settings.PASSWORD_CHANGED_EMAIL_CONFIRMATION:
            context = {"user": serializer.user}
            to = [get_user_email(serializer.user)]
            settings.EMAIL.password_changed_confirmation(self.request, context).send(to)
        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 31
0
    def change_username(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.request.user
        new_username = serializer.data['new_' + User.USERNAME_FIELD]

        setattr(user, User.USERNAME_FIELD, new_username)
        if settings.SEND_ACTIVATION_EMAIL:
            user.is_active = False
            context = {'user': user}
            to = [get_user_email(user)]
            settings.EMAIL.activation(self.request, context).send(to)
        user.save()

        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 32
0
    def _action(self, serializer):
        user = serializer.user
        user.is_active = True
        user.save()

        signals.user_activated.send(sender=self.__class__,
                                    user=user,
                                    request=self.request)

        if settings.SEND_CONFIRMATION_EMAIL:
            context = {'user': user}
            to = [get_user_email(user)]
            settings.EMAIL.confirmation(self.request, context).send(to)

        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 33
0
    def change_username(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.request.user
        new_username = serializer.data['new_' + User.USERNAME_FIELD]

        setattr(user, User.USERNAME_FIELD, new_username)
        if settings.SEND_ACTIVATION_EMAIL:
            user.is_active = False
            context = {'user': user}
            to = [get_user_email(user)]
            settings.EMAIL.activation(self.request, context).send(to)
        user.save()

        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 34
0
    def _action(self, serializer):
        user = self.request.user
        user_serializer = self.get_serializer(user, serializer.data)

        if user_serializer.is_valid():
            user_serializer.save()
            if settings.SEND_ACTIVATION_EMAIL:
                user.is_active = False
                context = {'user': user}
                recipient = [get_user_email(user)]
                mailer.ActivationEmail(self.request, context, recipient).send()

            utils.logout_user(self.request)
            return Response(status=status.HTTP_204_NO_CONTENT)
        return Response(user_serializer.errors, status.HTTP_400_BAD_REQUEST)
Exemplo n.º 35
0
    def _action(self, serializer):
        user = serializer.user
        user.is_active = True
        user.save()

        signals.user_activated.send(
            sender=self.__class__, user=user, request=self.request
        )

        if settings.SEND_CONFIRMATION_EMAIL:
            context = {'user': user}
            to = [get_user_email(user)]
            settings.EMAIL.confirmation(self.request, context).send(to)

        return Response(status=status.HTTP_204_NO_CONTENT)
 def patch(self, request):
     """Receives and updates user role"""
     status_code = None
     comments_data = request.data.get('data_obj')
     user_ids = request.data.get('id')
     user_data = {'is_trainer': request.data.get('is_trainer')}
     if 'status_code' in request.data:
         status_code = request.data.get('status_code')
     if status_code is not None and status_code in (STATUS_APPROVED,
                                                    STATUS_REJECTED):
         for req_key in comments_data:
             request_data = UserRequests.objects.get(
                 id=comments_data[req_key]['id'], status_code=STATUS_NEW)
             if request_data and request_data.author_id in user_ids:
                 user_data['id'] = request_data.author_id
                 user = get_object_or_404(YouYodaUser, id=user_data['id'])
                 serializer = UserToTrainerSerializer(user,
                                                      data=user_data,
                                                      partial=True)
                 if serializer.is_valid():
                     serializer.save()
                     request_data.status_code = status_code
                     request_data.comment = comments_data[req_key][
                         'comment']
                     request_data.save(
                         update_fields=['status_code', 'comment'])
                     with mail.get_connection() as connection:
                         status_text = 'changed'
                         if status_code == STATUS_APPROVED:
                             status_text = 'approved'
                         elif status_code == STATUS_REJECTED:
                             status_text = 'rejected'
                         subject = 'Results of reviewing your request'
                         body_text = 'Your request to become a trainer was ' + str(
                             status_text) + '.\n'
                         if len(comments_data[req_key]['comment']) > 0:
                             body_text += '\n' + str(
                                 comments_data[req_key]['comment'])
                         to_email = [get_user_email(user)]
                         mail.EmailMessage(
                             subject,
                             body_text,
                             settings.DEFAULT_FROM_EMAIL,
                             to_email,
                             connection=connection,
                         ).send()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 37
0
    def confirm(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.user
        user.is_active = True
        user.save()

        signals.user_activated.send(
            sender=self.__class__, user=user, request=self.request
        )

        if settings.SEND_CONFIRMATION_EMAIL:
            context = {'user': user}
            to = [get_user_email(user)]
            settings.EMAIL.confirmation(self.request, context).send(to)

        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 38
0
 def send_activation_email(self, user):
     context = {'user': user}
     to = [get_user_email(user)]
     settings.EMAIL.activation(self.request, context).send(to)
Exemplo n.º 39
0
 def send_password_reset_email(self, user):
     context = {'user': user}
     to = [get_user_email(user)]
     settings.EMAIL.password_reset(self.request, context).send(to)