Revision 1039bab1
b/snf-astakos-app/astakos/im/forms.py | ||
---|---|---|
35 | 35 |
|
36 | 36 |
from django import forms |
37 | 37 |
from django.utils.translation import ugettext as _ |
38 |
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, PasswordResetForm |
|
38 |
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, \ |
|
39 |
PasswordResetForm, PasswordChangeForm |
|
39 | 40 |
from django.core.mail import send_mail |
40 | 41 |
from django.contrib.auth.tokens import default_token_generator |
41 | 42 |
from django.template import Context, loader |
... | ... | |
466 | 467 |
except Invitation.DoesNotExist: |
467 | 468 |
pass |
468 | 469 |
return username |
470 |
|
|
471 |
class ExtendedPasswordChangeForm(PasswordChangeForm): |
|
472 |
""" |
|
473 |
Extends PasswordChangeForm by enabling user |
|
474 |
to optionally renew also the token. |
|
475 |
""" |
|
476 |
renew = forms.BooleanField(label='Renew token', required=False) |
|
477 |
|
|
478 |
def __init__(self, user, *args, **kwargs): |
|
479 |
super(ExtendedPasswordChangeForm, self).__init__(user, *args, **kwargs) |
|
480 |
print self.fields.keyOrder |
|
481 |
|
|
482 |
def save(self, commit=True): |
|
483 |
user = super(ExtendedPasswordChangeForm, self).save(commit=False) |
|
484 |
if self.cleaned_data.get('renew'): |
|
485 |
user.renew_token() |
|
486 |
if commit: |
|
487 |
user.save() |
|
488 |
return user |
b/snf-astakos-app/astakos/im/urls.py | ||
---|---|---|
34 | 34 |
from django.conf.urls.defaults import patterns, include, url |
35 | 35 |
from django.contrib.auth.views import password_change |
36 | 36 |
|
37 |
from astakos.im.forms import ExtendedPasswordResetForm, LoginForm |
|
37 |
from astakos.im.forms import ExtendedPasswordResetForm, ExtendedPasswordChangeForm, LoginForm
|
|
38 | 38 |
from astakos.im.settings import IM_MODULES, INVITATIONS_ENABLED, EMAILCHANGE_ENABLED |
39 | 39 |
|
40 | 40 |
urlpatterns = patterns('astakos.im.views', |
... | ... | |
73 | 73 |
url(r'^local/reset/confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/?$', |
74 | 74 |
'password_reset_confirm'), |
75 | 75 |
url(r'^local/password/reset/complete/?$', 'password_reset_complete'), |
76 |
url(r'^password_change/?$', 'password_change', {'post_change_redirect':'profile'}) |
|
76 |
url(r'^password_change/?$', 'password_change', {'post_change_redirect':'profile', |
|
77 |
'password_change_form':ExtendedPasswordChangeForm}) |
|
77 | 78 |
) |
78 | 79 |
|
79 | 80 |
if INVITATIONS_ENABLED: |
b/snf-astakos-app/astakos/im/views.py | ||
---|---|---|
532 | 532 |
|
533 | 533 |
@signed_terms_required |
534 | 534 |
def change_password(request): |
535 |
return password_change(request, post_change_redirect=reverse('astakos.im.views.edit_profile')) |
|
535 |
return password_change(request, |
|
536 |
post_change_redirect=reverse('astakos.im.views.edit_profile'), |
|
537 |
password_change_form=ExtendedPasswordChangeForm) |
|
536 | 538 |
|
537 | 539 |
@transaction.commit_manually |
538 | 540 |
def change_email(request, activation_key=None, |
Also available in: Unified diff