--- a/src/cm/views/site.py Thu Mar 18 15:18:42 2010 +0100
+++ b/src/cm/views/site.py Fri Mar 19 16:22:59 2010 +0100
@@ -19,6 +19,7 @@
from django.template.loader import render_to_string
from django.utils.translation import get_language, ugettext as _, ugettext_lazy
from django.views.generic.list_detail import object_list
+from django.contrib.auth.models import User
from cm.models import Text, TextVersion, Attachment, Comment, Configuration, Activity
ACTIVITY_PAGINATION = 10
@@ -247,6 +248,62 @@
return render_to_response('site/settings_design.html', {'form' : form}, context_instance=RequestContext(request))
+class ForgotPWForm(forms.Form):
+ name_or_email = forms.CharField(label=ugettext_lazy("Username or email"),
+ required=True,
+ )
+
+def forgot_pw(request):
+ if request.method == 'POST':
+ form = ForgotPWForm(data=request.POST)
+ if form.is_valid() :
+ name_or_email = form.cleaned_data.get("name_or_email")
+ # try email
+ user = None
+ try:
+ user = User.objects.get(email__iexact = name_or_email)
+ except User.DoesNotExist:
+ pass
+ # try email
+ try:
+ user = User.objects.get(username__exact = name_or_email)
+ except User.DoesNotExist:
+ pass
+ if user:
+ message = render_to_string('email/forgot_pw.txt',
+ {
+ 'reset_url' : reverse('reset-pw', args=[user.get_profile().adminkey]),
+ 'CONF': Configuration.objects
+ })
+
+ send_mail(_(u'How to reset your password'), message, Configuration.objects['email_from'], [user.email])
+
+ display_message(request, _(u'A link to reset your password has been sent to the profile email. Please check your email.'))
+ else:
+ display_message(request, _(u'No user found.'))
+ return HttpResponseRedirect(reverse('index'))
+ else:
+ form = ForgotPWForm()
+
+ return render_to_response('site/forgot_pw.html', {'form' : form}, context_instance=RequestContext(request))
+
+from django.contrib.auth.forms import SetPasswordForm
+
+def reset_pw(request, adminkey):
+ try:
+ profile = UserProfile.objects.get(adminkey=adminkey)
+ if request.method == 'POST':
+ form = SetPasswordForm(profile.user,data=request.POST)
+ if form.is_valid():
+ form.save()
+ display_message(request, _(u'Your password has been changed.'))
+ return HttpResponseRedirect(reverse('index'))
+ else:
+ form = SetPasswordForm(profile.user)
+ return render_to_response('site/reset_pw.html', {'form' : form}, context_instance=RequestContext(request))
+ except UserProfile.DoesNotExist:
+ from django.http import Http404
+
def help(request):
return render_to_response('site/help.html', context_instance=RequestContext(request))