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