web/ldt/user/forms.py
changeset 0 ecdfc63274bf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/user/forms.py	Tue Jun 08 01:16:35 2010 +0200
@@ -0,0 +1,98 @@
+from django import forms
+from django.contrib.auth.models import User, Permission, Group
+from django.forms.util import ErrorList
+from django.contrib.auth.forms import UserCreationForm
+from django.utils.translation import gettext as _
+from models import ldt, IriGroup
+from ldt.management import get_content_type_list
+
+
+class ldtForm(UserCreationForm):
+        
+    class Meta:
+        model = ldt
+        
+    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
+                 initial=None, error_class=ErrorList, label_suffix=':',
+                 empty_permitted=False, instance=None):
+                 
+        if instance:
+            initial = initial or {}           
+        
+        super(ldtForm, self).__init__(data, files, auto_id, prefix, 
+            initial, error_class, label_suffix, empty_permitted, instance)
+            
+        # filtre les permissions necessaires
+        content_type_list = get_content_type_list()
+        self.fields['user_permissions'].queryset = Permission.objects.filter(content_type__in = content_type_list)
+        
+        if instance:
+            self.fields['password1'].required = False
+            self.fields['password1'].label = _('New password')
+            self.fields['password2'].required = False
+            self.fields['password2'].label = _('New password confirmation')
+        
+        self._password_change = True
+        
+    def clean_username(self):
+        if self.instance:
+            return self.cleaned_data['username']
+        return super(ldtForm, self).clean_username()
+    
+    def clean_password2(self): 
+        if self.instance and self.cleaned_data['password1'] == '' and self.cleaned_data['password2'] == '':
+            self._password_change = False
+            return u''
+        return super(ldtForm, self).clean_password2()
+    
+   
+    def save(self, commit=True):
+        Super = self._password_change and ldtForm  or UserCreationForm  
+        user = super(Super, self).save(commit=False)
+        # if user.pk != None:
+            # self.save_m2m()
+        
+        if commit:
+            user.save()
+        
+        return user
+        
+class IriGroupForm(forms.ModelForm):
+    class meta:
+        model = IriGroup
+        
+    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
+                 initial=None, error_class=ErrorList, label_suffix=':',
+                 empty_permitted=False, instance=None):
+        if instance:
+            initial = initial or {}                               
+        
+        super(IriGroupForm, self).__init__(data, files, auto_id, prefix, 
+            initial, error_class, label_suffix, empty_permitted, instance)
+            
+        # filtre les permissions necessaires
+        content_type_list = get_content_type_list()
+        self.fields['permissions'].queryset = Permission.objects.filter(content_type__in = content_type_list)
+        
+class EmailChangeForm(forms.Form):
+    email1 = forms.EmailField(label=_("E-mail"), max_length=75)
+    email2 = forms.EmailField(label=_("E-mail"), max_length=75)
+    
+    def __init__(self, user=None, *args, **kwargs):
+        self.user = user
+        super(EmailChangeForm, self).__init__(*args, **kwargs)
+        
+    def clean_email2(self):
+        email1 = self.cleaned_data.get('email1')
+        email2 = self.cleaned_data.get('email2')
+        if email1 and email2:
+            if email1 != email2:
+                raise forms.ValidationError(_("The two emails didn't match."))
+        return email2
+
+    
+    def save(self):
+        self.user.email=self.cleaned_data['email1']
+        self.user.save()
+        return self.user
+