예제 #1
0
파일: views.py 프로젝트: refik/raptiye
def forgotten_password(request, template="users/forgotten_password.html"):
    if request.method == "POST":
        form = ForgottenPasswordForm(request.POST)
        extra_context = {"form": form}

        if form.is_valid():
            email = form.cleaned_data["email"]
            # getting user who has that e-mail address
            if User.objects.filter(email=email).__len__() > 0:
                site = Site.objects.get_current()
                user = User.objects.get(email=email)
                # changing the user's password
                password = Captcha.generate_random_text()
                user.set_password(password)
                user.save()
                # mailing the new password to the user
                send_mail(
                    settings.EMAIL_SUBJECT_PREFIX + messages.FORGOTTEN_PASSWORD_SUBJECT,
                    messages.FORGOTTEN_PASSWORD_BODY % (site.name, site.name, password),
                    settings.EMAIL_INFO_ADDRESS_TR,
                    [user.email],
                    fail_silently=settings.EMAIL_FAIL_SILENCE,
                    auth_user=settings.EMAIL_HOST_USER,
                    auth_password=settings.EMAIL_HOST_PASSWORD,
                )
                extra_context["status"] = True
            else:
                # can't find such a user
                extra_context["status"] = False
                extra_context["error"] = messages.FRG_CANNOT_FIND_EMAIL
    else:
        form = ForgottenPasswordForm()
        extra_context = {"form": form}

    return render_to_response(template, extra_context, context_instance=RequestContext(request))