Example #1
0
 def save(self, commit=True, rel_instance=None):
     engagement = super(EngagementForm, self).save(commit=False)
     if rel_instance:
         engagement.content_type = ContentType.objects.get_for_model(rel_instance)
         engagement.object_id = rel_instance.pk
     try:
         person = engagement.person
     except Person.DoesNotExist:
         person = Person()
     for field in ('gender', 'first_name', 'last_name'):
         setattr(person, field, self.cleaned_data[field])
     person.save()
     engagement.person = person
     if commit:
         engagement.save()
     return engagement
Example #2
0
 def __init__(self, request, propose, *args, **kwargs):
     self.request = request
     if request.user.is_authenticated():
         self.person = request.user.get_profile()
     else:
         self.person = Person()
     super(OrganizationForm1, self).__init__(*args, **kwargs)
     self.fields['last_name'].required = True
     self.fields['gender'].initial = self.person.gender
     self.fields['email'].required = True
     self.fields['email'].label = u'Email'
     if self.instance.pk:
         del self.fields['username']
         del self.fields['password1']
         del self.fields['password2']
         del self.fields['charte']
         self.set_helper((
             InlineRadios('gender'),
             'first_name',
             'last_name',
             'email'))
     else:
         self.set_helper((
             InlineRadios('gender'),
             'first_name',
             'last_name',
             'email',
             'username',
             'password1',
             'password2',
             HTML('<hr>'),
             InlineRadios('charte', css_class="large-label")))
Example #3
0
 def save(self, commit=True, rel_instance=None):
     engagement = super(EngagementForm, self).save(commit=False)
     if rel_instance:
         engagement.content_type = ContentType.objects.get_for_model(
             rel_instance)
         engagement.object_id = rel_instance.pk
     try:
         person = engagement.person
     except Person.DoesNotExist:
         person = Person()
     for field in ('gender', 'first_name', 'last_name'):
         setattr(person, field, self.cleaned_data[field])
     person.save()
     engagement.person = person
     if commit:
         engagement.save()
     return engagement
Example #4
0
 def __init__(self, request, propose, *args, **kwargs):
     self.request = request
     if request.user.is_authenticated():
         self.person = request.user.get_profile()
     else:
         self.person = Person()
     super(OrganizationForm1, self).__init__(*args, **kwargs)
     self.fields['last_name'].required = True
     self.fields['gender'].initial = self.person.gender
     self.fields['email'].required = True
     self.fields['email'].label = u'Email'
     if self.instance.pk:
         del self.fields['username']
         del self.fields['password1']
         del self.fields['password2']
         del self.fields['charte']
         self.set_helper(
             (InlineRadios('gender'), 'first_name', 'last_name', 'email'))
     else:
         self.set_helper(
             (InlineRadios('gender'), 'first_name', 'last_name', 'email',
              'username', 'password1', 'password2', HTML('<hr>'),
              InlineRadios('charte', css_class="large-label")))
Example #5
0
class OrganizationForm1(OrganizationMixin, forms.ModelForm):

    error_messages = {
        'duplicate_username': _("A user with that username already exists."),
        'password_mismatch': _("The two password fields didn't match."),
    }
    username = forms.RegexField(
        label=_("Username"),
        max_length=30,
        regex=r'^[\w.@+-]+$',
        help_text=_("Required. 30 characters or fewer. Letters, digits and "
                    "@/./+/-/_ only."),
        error_messages={
            'invalid':
            _("This value may contain only letters, numbers and "
              "@/./+/-/_ characters.")
        })
    password1 = forms.CharField(label=_("Password"),
                                widget=forms.PasswordInput)
    password2 = forms.CharField(
        label=_("Password confirmation"),
        widget=forms.PasswordInput,
        help_text=_("Enter the same password as above, for verification."))
    gender = forms.ChoiceField(choices=(('M', u'M.'), ('W', u'Mme')),
                               widget=forms.RadioSelect,
                               required=False,
                               label='Genre')
    charte = forms.TypedChoiceField(coerce=lambda x: bool(int(x)),
                                    choices=((0, u'Non'), (1, u'Oui')),
                                    widget=forms.RadioSelect,
                                    initial=0,
                                    required=False,
                                    label=u'J\'accepte la <a \
        data-toggle="modal" href="#charte">charte de l\'utilisateur</a>')

    class Meta:
        model = User
        fields = ("username", "last_name", "first_name", "email")

    def __init__(self, request, propose, *args, **kwargs):
        self.request = request
        if request.user.is_authenticated():
            self.person = request.user.get_profile()
        else:
            self.person = Person()
        super(OrganizationForm1, self).__init__(*args, **kwargs)
        self.fields['last_name'].required = True
        self.fields['gender'].initial = self.person.gender
        self.fields['email'].required = True
        self.fields['email'].label = u'Email'
        if self.instance.pk:
            del self.fields['username']
            del self.fields['password1']
            del self.fields['password2']
            del self.fields['charte']
            self.set_helper(
                (InlineRadios('gender'), 'first_name', 'last_name', 'email'))
        else:
            self.set_helper(
                (InlineRadios('gender'), 'first_name', 'last_name', 'email',
                 'username', 'password1', 'password2', HTML('<hr>'),
                 InlineRadios('charte', css_class="large-label")))

    def clean_username(self):
        # Since User.username is unique, this check is redundant,
        # but it sets a nicer error message than the ORM. See #13147.
        username = self.cleaned_data["username"]
        existing_users = User.objects.filter(username=username)
        existing_users = existing_users.exclude(
            username=self.instance.username)
        if existing_users.exists():
            raise forms.ValidationError(
                self.error_messages['duplicate_username'])
        return username

    def clean_password2(self):
        password1 = self.cleaned_data.get("password1", "")
        password2 = self.cleaned_data["password2"]
        if password1 != password2:
            raise forms.ValidationError(
                self.error_messages['password_mismatch'])
        return password2

    def clean_charte(self):
        if not self.cleaned_data['charte']:
            raise forms.ValidationError(
                u'Vous devez accepter la charte pour pouvoir vous inscrire.')
        return True

    @transaction.commit_on_success
    def save(self):
        if not self.instance.pk:
            user = super(OrganizationForm1, self).save(commit=False)
            user.set_password(self.cleaned_data["password1"])
            user.save()
            user = authenticate(username=user.username,
                                password=self.cleaned_data['password1'])
            login(self.request, user)
        else:
            user = super(OrganizationForm1, self).save()
        self.person.user = user
        self.person.gender = self.cleaned_data['gender']
        self.person.username = user.username
        self.person.email = user.email
        self.person.first_name = user.first_name
        self.person.last_name = user.last_name
        self.person.save()
        return user
Example #6
0
class OrganizationForm1(OrganizationMixin, forms.ModelForm):

    error_messages = {
        'duplicate_username': _("A user with that username already exists."),
        'password_mismatch': _("The two password fields didn't match."),
    }
    username = forms.RegexField(label=_("Username"), max_length=30,
        regex=r'^[\w.@+-]+$',
        help_text = _("Required. 30 characters or fewer. Letters, digits and "
                      "@/./+/-/_ only."),
        error_messages = {
            'invalid': _("This value may contain only letters, numbers and "
                         "@/./+/-/_ characters.")})
    password1 = forms.CharField(label=_("Password"),
        widget=forms.PasswordInput)
    password2 = forms.CharField(label=_("Password confirmation"),
        widget=forms.PasswordInput,
        help_text = _("Enter the same password as above, for verification."))
    gender = forms.ChoiceField(choices=(('M', u'M.'), ('W', u'Mme')),
        widget=forms.RadioSelect, required=False, label='Genre')
    charte = forms.TypedChoiceField(coerce=lambda x: bool(int(x)),
        choices=((0, u'Non'), (1, u'Oui')), widget=forms.RadioSelect,
        initial=0, required=False, label=u'J\'accepte la <a \
        data-toggle="modal" href="#charte">charte de l\'utilisateur</a>')

    class Meta:
        model = User
        fields = ("username", "last_name", "first_name", "email")

    def __init__(self, request, propose, *args, **kwargs):
        self.request = request
        if request.user.is_authenticated():
            self.person = request.user.get_profile()
        else:
            self.person = Person()
        super(OrganizationForm1, self).__init__(*args, **kwargs)
        self.fields['last_name'].required = True
        self.fields['gender'].initial = self.person.gender
        self.fields['email'].required = True
        self.fields['email'].label = u'Email'
        if self.instance.pk:
            del self.fields['username']
            del self.fields['password1']
            del self.fields['password2']
            del self.fields['charte']
            self.set_helper((
                InlineRadios('gender'),
                'first_name',
                'last_name',
                'email'))
        else:
            self.set_helper((
                InlineRadios('gender'),
                'first_name',
                'last_name',
                'email',
                'username',
                'password1',
                'password2',
                HTML('<hr>'),
                InlineRadios('charte', css_class="large-label")))

    def clean_username(self):
        # Since User.username is unique, this check is redundant,
        # but it sets a nicer error message than the ORM. See #13147.
        username = self.cleaned_data["username"]
        existing_users  = User.objects.filter(username=username)
        existing_users = existing_users.exclude(username=self.instance.username)
        if existing_users.exists():
            raise forms.ValidationError(self.error_messages['duplicate_username'])
        return username

    def clean_password2(self):
        password1 = self.cleaned_data.get("password1", "")
        password2 = self.cleaned_data["password2"]
        if password1 != password2:
            raise forms.ValidationError(
                self.error_messages['password_mismatch'])
        return password2

    def clean_charte(self):
        if not self.cleaned_data['charte']:
            raise forms.ValidationError(u'Vous devez accepter la charte pour pouvoir vous inscrire.')
        return True

    @transaction.commit_on_success
    def save(self):
        if not self.instance.pk:
            user = super(OrganizationForm1, self).save(commit=False)
            user.set_password(self.cleaned_data["password1"])
            user.save()
            user = authenticate(username=user.username, password=self.cleaned_data['password1'])
            login(self.request, user)
        else:
            user = super(OrganizationForm1, self).save()
        self.person.user = user
        self.person.gender = self.cleaned_data['gender']
        self.person.username = user.username
        self.person.email = user.email
        self.person.first_name = user.first_name
        self.person.last_name = user.last_name
        self.person.save()
        return user