1 from django import forms |
1 from django import forms |
2 from django.contrib.auth.forms import UserCreationForm |
2 from django.conf import settings |
|
3 from django.contrib.auth.forms import UserCreationForm, UserChangeForm |
|
4 from django.contrib.auth.models import User |
3 from django.forms.util import ErrorList |
5 from django.forms.util import ErrorList |
4 from django.utils.translation import gettext as _ |
6 from django.utils.translation import gettext as _ |
|
7 from ldt.user.models import get_or_create_profile |
5 from models import Ldt |
8 from models import Ldt |
6 |
|
7 from django.contrib.auth.models import User |
|
8 |
|
9 |
9 |
10 |
10 |
11 class LdtForm(UserCreationForm): |
11 class LdtForm(UserCreationForm): |
12 |
12 |
13 class Meta: |
13 class Meta: |
92 self.user.last_name = self.cleaned_data['last_name'] |
92 self.user.last_name = self.cleaned_data['last_name'] |
93 self.user.save() |
93 self.user.save() |
94 return self.user |
94 return self.user |
95 |
95 |
96 |
96 |
97 class ProfileChangeForm(forms.Form): |
97 class ProfileForm(UserChangeForm): |
98 first_name = forms.CharField(label=_("First name"), max_length=30) |
98 |
99 last_name = forms.CharField(label=_("Last name"), max_length=30) |
99 def __init__(self, user=None, *args, **kwargs): |
100 email1 = forms.EmailField(label=_("E-mail"), max_length=75) |
100 #self.user = user |
101 email2 = forms.EmailField(label=_("E-mail"), max_length=75) |
101 super(ProfileForm, self).__init__(*args, **kwargs) |
102 username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^[\w.@+-]+$') |
102 |
|
103 |
|
104 class Meta: |
|
105 model = User |
|
106 fields = ('username', 'email', 'first_name', 'last_name') |
|
107 |
|
108 |
|
109 class LanguageChangeForm(forms.Form): |
|
110 language = forms.ChoiceField(label=_("Language"), choices=settings.LANGUAGES) |
103 |
111 |
104 def __init__(self, user=None, *args, **kwargs): |
112 def __init__(self, user=None, *args, **kwargs): |
105 self.user = user |
113 self.user = user |
106 super(ProfileChangeForm, self).__init__(*args, **kwargs) |
114 super(LanguageChangeForm, self).__init__(*args, **kwargs) |
107 |
115 |
108 def clean_email2(self): |
|
109 email1 = self.cleaned_data.get('email1') |
|
110 email2 = self.cleaned_data.get('email2') |
|
111 if email1 and email2: |
|
112 if email1 != email2: |
|
113 raise forms.ValidationError(_("The two emails didn't match.")) |
|
114 return email2 |
|
115 |
|
116 def clean_username(self): |
|
117 retrieved_username = '%s' % self.cleaned_data.get('username') |
|
118 if retrieved_username != self.user.username and (len(User.objects.filter(username=retrieved_username)) > 0): |
|
119 raise forms.ValidationError(_("username %s is already used." % retrieved_username)) |
|
120 return retrieved_username |
|
121 |
|
122 def clean_first_name(self): |
|
123 first_name = self.cleaned_data.get('first_name') |
|
124 if not self.isValidName(first_name): |
|
125 raise forms.ValidationError(_("Please use only letter, blanks, or dashes.")) |
|
126 return first_name |
|
127 |
|
128 def clean_last_name(self): |
|
129 last_name = self.cleaned_data.get('last_name') |
|
130 if not self.isValidName(last_name): |
|
131 raise forms.ValidationError(_("Please use only letter, blanks, or dashes.")) |
|
132 return last_name |
|
133 |
|
134 def isValidName(self, string): |
|
135 for i in string: |
|
136 if not i.isalpha() and not i in [' ','-']: |
|
137 return False |
|
138 return True |
|
139 |
|
140 |
|
141 def save(self): |
116 def save(self): |
142 self.user.email = self.cleaned_data['email1'] |
117 profile = get_or_create_profile(self.user) |
143 self.user.first_name = self.cleaned_data['first_name'] |
118 profile.language = self.cleaned_data['language'] |
144 self.user.last_name = self.cleaned_data['last_name'] |
119 profile.save() |
145 self.user.username = self.cleaned_data['username'] |
|
146 self.user.save() |
|
147 return self.user |
120 return self.user |
148 |
121 |
|
122 |