src/ldt/ldt/user/forms.py
changeset 169 64f24f8841ec
parent 165 a71757b03e89
child 174 43748b6b0678
equal deleted inserted replaced
168:4d3a3ea5225c 169:64f24f8841ec
     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