X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Fforms.py;h=f28a9edf2c681437828b26ab67bf84cbbddbc436;hb=2f4e3e456c0f10f3316c9eafb09cc95bbd4a3043;hp=c9cab82738ef594edf6f32dd17f3ba4115aff78f;hpb=4b33467baf861ce0e1e43b46d64d51db35577040;p=myslice.git diff --git a/portal/forms.py b/portal/forms.py index c9cab827..f28a9edf 100644 --- a/portal/forms.py +++ b/portal/forms.py @@ -5,6 +5,7 @@ # # Authors: # Jordan Augé +# Mohammed-Yasin Rahman # Copyright 2013, UPMC Sorbonne Universités / LIP6 # # This program is free software; you can redistribute it and/or modify it under @@ -21,30 +22,102 @@ # Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. from django import forms -from portal.models import PendingUser +from portal.models import PendingUser, PendingSlice #from crispy_forms.helper import FormHelper #from crispy_forms.layout import Submit +from django.utils.translation import ugettext_lazy as _ -class RegisterUserForm(forms.ModelForm): -# DEPRECATED # def __init__(self, *args, **kwargs): -# DEPRECATED # self.helper = FormHelper() -# DEPRECATED # self.helper.form_tag = False -# DEPRECATED # #self.helper.form_id = 'id-exampleForm' -# DEPRECATED # self.helper.form_class = 'blueForms' -# DEPRECATED # self.helper.form_method = 'post' -# DEPRECATED # #self.helper.form_action = 'submit_survey' -# DEPRECATED # self.helper.add_input(Submit('submit', 'Submit')) -# DEPRECATED # super(RegisterUserForm, self).__init__(*args, **kwargs) - - first_name = forms.CharField( widget=forms.TextInput ) - last_name = forms.CharField( widget=forms.TextInput ) - email = forms.CharField( widget=forms.TextInput ) - password = forms.CharField( widget=forms.PasswordInput ) - password2 = forms.CharField( widget=forms.PasswordInput ) +class UserRegisterForm(forms.Form): # Not ModelForm + """ + Form for registering a new user account. + + Validates that the requested username is not already in use, and + requires the password to be entered twice to catch typos. + + Subclasses should feel free to add any additional validation they + need, but should avoid defining a ``save()`` method -- the actual + saving of collected user data is delegated to the active + registration backend. + + """ + required_css_class = 'required' + + first_name = forms.RegexField(regex=r'^[\w.@+-]+$', + max_length=30, + label=_("First name"), + error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")}) + last_name = forms.RegexField(regex=r'^[\w.@+-]+$', + max_length=30, + label=_("Last name"), + error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")}) + affiliation = forms.RegexField(regex=r'^[\w.@+-]+$', + max_length=30, + label=_("Affiliation"), + error_messages={'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")}) + + email = forms.EmailField(label=_("E-mail")) + password1 = forms.CharField(widget=forms.PasswordInput, + label=_("Password")) + password2 = forms.CharField(widget=forms.PasswordInput, + label=_("Password (again)")) keypair = forms.CharField( widget=forms.FileInput ) - class Meta: - model = PendingUser -class RegisterUserStep2Form(forms.ModelForm): + tos = forms.BooleanField(widget=forms.CheckboxInput, + label=_(u'I have read and agree to the Terms of Service'), + error_messages={'required': _("You must agree to the terms to register")}) + +# def clean_username(self): +# """ +# Validate that the username is alphanumeric and is not already +# in use. +# +# """ +# existing = User.objects.filter(username__iexact=self.cleaned_data['username']) +# if existing.exists(): +# raise forms.ValidationError(_("A user with that username already exists.")) +# else: +# return self.cleaned_data['username'] + + def clean_email(self): + """ + Validate that the supplied email address is unique for the + site. + + """ + if PendingUser.objects.filter(email__iexact=self.cleaned_data['email']): + raise forms.ValidationError(_("This email address is already in use. Please supply a different email address.")) + return self.cleaned_data['email'] + + def clean(self): + """ + Verifiy that the values entered into the two password fields + match. Note that an error here will end up in + ``non_field_errors()`` because it doesn't apply to a single + field. + + """ + if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data: + if self.cleaned_data['password1'] != self.cleaned_data['password2']: + raise forms.ValidationError(_("The two password fields didn't match.")) + return self.cleaned_data + +# DEPRECATED # class Meta: +# DEPRECATED # model = PendingUser + +class SliceRequestForm(forms.ModelForm): + slice_name = forms.CharField( widget=forms.TextInput ) class Meta: - model = PendingUser + model = PendingSlice + +# DEPRECATED #class RegisterUserStep2Form(forms.ModelForm): +# DEPRECATED # class Meta: +# DEPRECATED # model = PendingUser + +class ContactForm(forms.Form): + first_name = forms.CharField() + last_name = forms.CharField() + affiliation = forms.CharField() + subject = forms.CharField(max_length=100) + message = forms.CharField(widget=forms.Textarea) + email = forms.EmailField() + cc_myself = forms.BooleanField(required=False)