532 |
532 |
raise forms.ValidationError(_(astakos_messages.EMAIL_USED))
|
533 |
533 |
return addr
|
534 |
534 |
|
535 |
|
def save(self, email_template_name, request, commit=True):
|
|
535 |
def save(self, request, email_template_name='registration/email_change_email.txt', commit=True):
|
536 |
536 |
ec = super(EmailChangeForm, self).save(commit=False)
|
537 |
537 |
ec.user = request.user
|
|
538 |
# delete pending email changes
|
|
539 |
request.user.emailchanges.all().delete()
|
|
540 |
|
538 |
541 |
activation_key = hashlib.sha1(
|
539 |
542 |
str(random()) + smart_str(ec.new_email_address))
|
540 |
543 |
ec.activation_key = activation_key.hexdigest()
|
... | ... | |
925 |
928 |
|
926 |
929 |
password_change_form = None
|
927 |
930 |
email_change_form = None
|
|
931 |
password_change = False
|
928 |
932 |
extra_forms_fields = {
|
929 |
933 |
'email': ['new_email_address'],
|
930 |
934 |
'password': ['old_password', 'new_password1', 'new_password2']
|
... | ... | |
935 |
939 |
|
936 |
940 |
def __init__(self, *args, **kwargs):
|
937 |
941 |
super(ExtendedProfileForm, self).__init__(*args, **kwargs)
|
|
942 |
if self.instance.can_change_password():
|
|
943 |
self.password_change = True
|
|
944 |
else:
|
|
945 |
del self.fields['change_password']
|
|
946 |
|
938 |
947 |
self._init_extra_forms()
|
939 |
948 |
self.save_extra_forms = []
|
940 |
949 |
self.success_messages = []
|
941 |
950 |
|
942 |
951 |
def _init_extra_form_fields(self):
|
943 |
952 |
self.fields.update(self.email_change_form.fields)
|
944 |
|
self.fields.update(self.password_change_form.fields)
|
945 |
|
|
946 |
953 |
self.fields['new_email_address'].required = False
|
947 |
|
self.fields['old_password'].required = False
|
948 |
|
self.fields['new_password1'].required = False
|
949 |
|
self.fields['new_password2'].required = False
|
|
954 |
|
|
955 |
if self.password_change:
|
|
956 |
self.fields.update(self.password_change_form.fields)
|
|
957 |
self.fields['old_password'].required = False
|
|
958 |
self.fields['new_password1'].required = False
|
|
959 |
self.fields['new_password2'].required = False
|
950 |
960 |
|
951 |
961 |
def _update_extra_form_errors(self):
|
952 |
962 |
if self.cleaned_data.get('change_password'):
|
... | ... | |
963 |
973 |
def is_valid(self):
|
964 |
974 |
password, email = True, True
|
965 |
975 |
profile = super(ExtendedProfileForm, self).is_valid()
|
966 |
|
if profile and self.cleaned_data.get('change_password'):
|
|
976 |
if profile and self.cleaned_data.get('change_password', None):
|
967 |
977 |
password = self.password_change_form.is_valid()
|
|
978 |
self.save_extra_forms.append('password')
|
968 |
979 |
if profile and self.cleaned_data.get('change_email'):
|
969 |
980 |
email = self.email_change_form.is_valid()
|
|
981 |
self.save_extra_forms.append('email')
|
970 |
982 |
|
971 |
983 |
if not password or not email:
|
972 |
984 |
self._update_extra_form_errors()
|
973 |
985 |
|
974 |
986 |
return all([profile, password, email])
|
975 |
987 |
|
976 |
|
def save(self, *args, **kwargs):
|
|
988 |
def save(self, request, *args, **kwargs):
|
977 |
989 |
if 'email' in self.save_extra_forms:
|
978 |
|
self.email_change_email.save(*args, **kwargs)
|
|
990 |
self.email_change_form.save(request, *args, **kwargs)
|
979 |
991 |
if 'password' in self.save_extra_forms:
|
980 |
992 |
self.password_change_form.save(*args, **kwargs)
|
981 |
993 |
return super(ExtendedProfileForm, self).save(*args, **kwargs)
|