Пример #1
0
 def form_valid(self, form):
     cleaned_data = form.cleaned_data
     user_model = get_user_model()
     email = cleaned_data['email']
     first_name = cleaned_data['contact_name']
     last_name = cleaned_data['contact_last_name']
     user = user_model.objects.create_user(username=email, email=email,
                                           first_name=first_name, last_name=last_name)
     user.is_active = False
     user.save()
     organization = Organization(contact_email=email,
                                 name=cleaned_data['name'],
                                 contact_name=first_name,
                                 contact_phone=cleaned_data['contact_phone'],
                                 contact_last_name=last_name)
     organization.save()
     OrganizationUser.objects.create(organization=organization, user=user)
     signer = signing.TimestampSigner(salt=settings.REGISTRATION_SALT)
     activation_key = signer.sign(
         str(getattr(user, user.USERNAME_FIELD))
     )
     url = settings.SITE_URL + reverse('organization_confirmation', kwargs={'activation_key': activation_key})
     content = [
         {'name': 'name', 'content': user.get_full_name()},
         {'name': 'url', 'content': url}
     ]
     send_email_via_mandrill(email, user.get_full_name(), 'Verificación  de email',
                             'confirmation', content)
     messages.success(self.request, self.MSG_SUCCESS)
     return super().form_valid(form)
Пример #2
0
    def get_redirect_url(self, *args, **kwargs):
        activation_key = kwargs.get('activation_key')
        signer = signing.TimestampSigner(salt=settings.REGISTRATION_SALT)
        try:
            username = signer.unsign(
                activation_key,
                max_age=settings.ACCOUNT_ACTIVATION_DAYS * 86400
            )
            if username is not None:
                user_model = get_user_model()
                try:
                    kwargs = {user_model.USERNAME_FIELD: username,
                              'is_active': False}
                    user = user_model.objects.get(**kwargs)
                    try:
                        organization_user = OrganizationUser.objects.get(user=user)

                        password = user_model.objects.make_random_password()

                        user.set_password(password)
                        user.is_active = True
                        user.save()

                        auth_user = authenticate(username=user.email, password=password)
                        login(self.request, auth_user)
                        self.request.session[ORGANIZATION_ID_KEY] = organization_user.organization_id
                        content = [
                            {'name': 'name', 'content': user.get_full_name()},
                            {'name': 'password', 'content': password}
                        ]
                        send_email_via_mandrill(user.email, user.get_full_name(), 'Contraseña generada',
                                                'password', content)
                        return reverse('organization_profile')
                    except OrganizationUser.DoesNotExist:
                        pass
                except user_model.DoesNotExist:
                    pass
        except signing.BadSignature:
            pass
        raise Http404