453 |
453 |
return user
|
454 |
454 |
|
455 |
455 |
|
|
456 |
|
456 |
457 |
class FeedbackForm(forms.Form):
|
457 |
458 |
"""
|
458 |
459 |
Form for writing feedback.
|
... | ... | |
910 |
911 |
required=True
|
911 |
912 |
)
|
912 |
913 |
|
|
914 |
|
913 |
915 |
class ProjectSearchForm(forms.Form):
|
914 |
916 |
q = forms.CharField(max_length=200, label='Search project', required=False)
|
915 |
917 |
|
|
918 |
|
|
919 |
class ExtendedProfileForm(ProfileForm):
|
|
920 |
"""
|
|
921 |
Profile form that combines `email change` and `password change` user
|
|
922 |
actions by propagating submited data to internal EmailChangeForm
|
|
923 |
and ExtendedPasswordChangeForm objects.
|
|
924 |
"""
|
|
925 |
|
|
926 |
password_change_form = None
|
|
927 |
email_change_form = None
|
|
928 |
extra_forms_fields = {
|
|
929 |
'email': ['new_email_address'],
|
|
930 |
'password': ['old_password', 'new_password1', 'new_password2']
|
|
931 |
}
|
|
932 |
|
|
933 |
change_password = forms.BooleanField(initial=False, required=False)
|
|
934 |
change_email = forms.BooleanField(initial=False, required=False)
|
|
935 |
|
|
936 |
def __init__(self, *args, **kwargs):
|
|
937 |
super(ExtendedProfileForm, self).__init__(*args, **kwargs)
|
|
938 |
self._init_extra_forms()
|
|
939 |
self.save_extra_forms = []
|
|
940 |
self.success_messages = []
|
|
941 |
|
|
942 |
def _init_extra_form_fields(self):
|
|
943 |
self.fields.update(self.email_change_form.fields)
|
|
944 |
self.fields.update(self.password_change_form.fields)
|
|
945 |
|
|
946 |
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
|
|
950 |
|
|
951 |
def _update_extra_form_errors(self):
|
|
952 |
if self.cleaned_data.get('change_password'):
|
|
953 |
self.errors.update(self.password_change_form.errors)
|
|
954 |
if self.cleaned_data.get('change_email'):
|
|
955 |
self.errors.update(self.email_change_form.errors)
|
|
956 |
|
|
957 |
def _init_extra_forms(self):
|
|
958 |
self.email_change_form = EmailChangeForm(self.data)
|
|
959 |
self.password_change_form = ExtendedPasswordChangeForm(user=self.instance,
|
|
960 |
data=self.data)
|
|
961 |
self._init_extra_form_fields()
|
|
962 |
|
|
963 |
def is_valid(self):
|
|
964 |
password, email = True, True
|
|
965 |
profile = super(ExtendedProfileForm, self).is_valid()
|
|
966 |
if profile and self.cleaned_data.get('change_password'):
|
|
967 |
password = self.password_change_form.is_valid()
|
|
968 |
if profile and self.cleaned_data.get('change_email'):
|
|
969 |
email = self.email_change_form.is_valid()
|
|
970 |
|
|
971 |
if not password or not email:
|
|
972 |
self._update_extra_form_errors()
|
|
973 |
|
|
974 |
return all([profile, password, email])
|
|
975 |
|
|
976 |
def save(self, *args, **kwargs):
|
|
977 |
if 'email' in self.save_extra_forms:
|
|
978 |
self.email_change_email.save(*args, **kwargs)
|
|
979 |
if 'password' in self.save_extra_forms:
|
|
980 |
self.password_change_form.save(*args, **kwargs)
|
|
981 |
return super(ExtendedProfileForm, self).save(*args, **kwargs)
|
|
982 |
|