예제 #1
0
 def test_unknow_username_forgot_password_form(self):
     data = {
         'username': '******',
         'email': ''
     }
     form = UsernameAndEmailForm(data=data)
     self.assertFalse(form.is_valid())
예제 #2
0
 def test_unknow_email_forgot_password_form(self):
     data = {
         'email': '*****@*****.**',
         'username': ''
     }
     form = UsernameAndEmailForm(data=data)
     self.assertFalse(form.is_valid())
예제 #3
0
 def test_full_forgot_password_form(self):
     data = {
         'username': '******',
         'email': '*****@*****.**'
     }
     form = UsernameAndEmailForm(data=data)
     self.assertFalse(form.is_valid())
예제 #4
0
 def test_empty_name_forgot_password_form(self):
     data = {
         'username': '',
         'email': ''
     }
     form = UsernameAndEmailForm(data=data)
     self.assertFalse(form.is_valid())
예제 #5
0
 def test_valid_email_forgot_password_form(self):
     data = {
         'email': self.user1.user.email,
         'username': ''
     }
     form = UsernameAndEmailForm(data=data)
     self.assertTrue(form.is_valid())
예제 #6
0
 def test_non_valid_non_ascii_email_forgot_password_form(self):
     data = {
         'username': '',
         'email': self.userNonAscii.user.email
     }
     form = UsernameAndEmailForm(data=data)
     self.assertTrue(form.is_valid())
예제 #7
0
파일: views.py 프로젝트: firm1/zds-member
def forgot_password(request):
    """If the user forgot his password, he can have a new one."""

    if request.method == "POST":
        form = UsernameAndEmailForm(request.POST)
        if form.is_valid():

            # Get data from form
            data = form.data
            username = data["username"]
            email = data["email"]

            # Fetch the user, we need his email adress
            usr = None
            if username:
                usr = get_object_or_404(User, Q(username=username))

            if email:
                usr = get_object_or_404(User, Q(email=email))

            # Generate a valid token during one hour.
            uuid_token = str(uuid.uuid4())
            date_end = datetime.now() + timedelta(days=0, hours=1, minutes=0,
                                                  seconds=0)
            token = TokenForgotPassword(user=usr, token=uuid_token,
                                        date_end=date_end)
            token.save()

            # send email
            subject = _(u"{} - Mot de passe oublié").format(settings.APP_SITE['litteral_name'])
            from_email = "{} <{}>".format(settings.APP_SITE['litteral_name'],
                                          settings.APP_SITE['email_noreply'])
            current_site = Site.objects.get_current()
            context = {
                "username": usr.username,
                "site_name": settings.APP_SITE['litteral_name'],
                "site_url": current_site.domain,
                "url": current_site.domain + token.get_absolute_url()
            }
            message_html = render_to_string("email/member/confirm_forgot_password.html", context)
            message_txt = render_to_string("email/member/confirm_forgot_password.txt", context)

            msg = EmailMultiAlternatives(subject, message_txt, from_email, [usr.email])
            msg.attach_alternative(message_html, "text/html")
            msg.send()
            return render(request, "member/forgot_password/success.html")
        else:
            return render(request, "member/forgot_password/index.html",
                          {"form": form})
    form = UsernameAndEmailForm()
    return render(request, "member/forgot_password/index.html", {"form": form})