+ return password_change(request,
+ post_change_redirect=reverse('astakos.im.views.edit_profile'),
+ password_change_form=ExtendedPasswordChangeForm)
+
+@transaction.commit_manually
+def change_email(request, activation_key=None,
+ email_template_name='registration/email_change_email.txt',
+ form_template_name='registration/email_change_form.html',
+ confirm_template_name='registration/email_change_done.html',
+ extra_context={}):
+ if activation_key:
+ try:
+ user = EmailChange.objects.change_email(activation_key)
+ if request.user.is_authenticated() and request.user == user:
+ msg = _('Email changed successfully.')
+ messages.add_message(request, messages.SUCCESS, msg)
+ auth_logout(request)
+ response = prepare_response(request, user)
+ transaction.commit()
+ return response
+ except ValueError, e:
+ messages.add_message(request, messages.ERROR, e)
+ return render_response(confirm_template_name,
+ modified_user = user if 'user' in locals() else None,
+ context_instance = get_context(request,
+ extra_context))
+
+ if not request.user.is_authenticated():
+ path = quote(request.get_full_path())
+ url = request.build_absolute_uri(reverse('astakos.im.views.index'))
+ return HttpResponseRedirect(url + '?next=' + path)
+ form = EmailChangeForm(request.POST or None)
+ if request.method == 'POST' and form.is_valid():
+ try:
+ ec = form.save(email_template_name, request)
+ except SendMailError, e:
+ status = messages.ERROR
+ msg = e
+ transaction.rollback()
+ except IntegrityError, e:
+ status = messages.ERROR
+ msg = _('There is already a pending change email request.')
+ else:
+ status = messages.SUCCESS
+ msg = _('Change email request has been registered succefully.\
+ You are going to receive a verification email in the new address.')
+ transaction.commit()
+ messages.add_message(request, status, msg)
+ return render_response(form_template_name,
+ form = form,
+ context_instance = get_context(request,
+ extra_context))