diff -r 651f67b66c51 -r 7c994c98d1df web/ldt_utils/user/forms.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/ldt_utils/user/forms.py Tue Jun 08 15:31:42 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 +