Browse Source

Fixed user create/edit forms

Rafał Pitoń 11 years ago
parent
commit
7ceadb6db0
1 changed files with 21 additions and 10 deletions
  1. 21 10
      misago/users/forms/admin.py

+ 21 - 10
misago/users/forms/admin.py

@@ -15,8 +15,7 @@ class UserBaseForm(forms.ModelForm):
     username = forms.CharField(
     username = forms.CharField(
         label=_("Username"))
         label=_("Username"))
     title = forms.CharField(
     title = forms.CharField(
-        label=_("Custom title"),
-        required=False)
+        label=_("Custom title"), required=False)
     email = forms.EmailField(
     email = forms.EmailField(
         label=_("E-mail address"))
         label=_("E-mail address"))
 
 
@@ -26,17 +25,18 @@ class UserBaseForm(forms.ModelForm):
 
 
     def clean_username(self):
     def clean_username(self):
         data = self.cleaned_data['username']
         data = self.cleaned_data['username']
-        validate_username(data)
+        validate_username(data, exclude=self.instance)
         return data
         return data
 
 
     def clean_email(self):
     def clean_email(self):
         data = self.cleaned_data['email']
         data = self.cleaned_data['email']
-        validate_email(data)
+        validate_email(data, exclude=self.instance)
         return data
         return data
 
 
     def clean_new_password(self):
     def clean_new_password(self):
         data = self.cleaned_data['new_password']
         data = self.cleaned_data['new_password']
-        validate_password(data)
+        if data:
+            validate_password(data)
         return data
         return data
 
 
     def clean_roles(self):
     def clean_roles(self):
@@ -54,15 +54,14 @@ class UserBaseForm(forms.ModelForm):
 
 
 class NewUserForm(UserBaseForm):
 class NewUserForm(UserBaseForm):
     new_password = forms.CharField(
     new_password = forms.CharField(
-        label=_("Password"),
-        widget=forms.PasswordInput)
+        label=_("Password"), widget=forms.PasswordInput)
 
 
     class Meta:
     class Meta:
         model = get_user_model()
         model = get_user_model()
         fields = ['username', 'email', 'title']
         fields = ['username', 'email', 'title']
 
 
 
 
-class EditUserForm(forms.ModelForm):
+class EditUserForm(UserBaseForm):
     new_password = forms.CharField(
     new_password = forms.CharField(
         label=_("Change password to"),
         label=_("Change password to"),
         widget=forms.PasswordInput,
         widget=forms.PasswordInput,
@@ -91,7 +90,8 @@ def UserFormFactory(FormType, instance):
     roles = Role.objects.order_by('name')
     roles = Role.objects.order_by('name')
     extra_fields['roles'] = forms.ModelMultipleChoiceField(
     extra_fields['roles'] = forms.ModelMultipleChoiceField(
         label=_("Roles"),
         label=_("Roles"),
-        help_text=_("Individual roles of this user."),
+        help_text=_('Individual roles of this user. '
+                    'All users have "member" role.'),
         queryset=roles,
         queryset=roles,
         initial=instance.roles.all() if instance.pk else None,
         initial=instance.roles.all() if instance.pk else None,
         widget=forms.CheckboxSelectMultiple)
         widget=forms.CheckboxSelectMultiple)
@@ -314,4 +314,15 @@ class BanForm(forms.ModelForm):
 
 
 
 
 class SearchBansForm(object):
 class SearchBansForm(object):
-    pass
+    test = forms.TypedChoiceField(
+        label=_("Ban type"),
+        coerce=int,
+        choices=BANS_CHOICES)
+    banned_value = forms.CharField(
+        label=_("Banned value"), max_length=250,
+        help_text=_('This value is case-insensitive and accepts asterisk (*) '
+                    'for rought matches. For example, making IP ban for value '
+                    '"83.*" will ban all IP addresses beginning with "83.".'),
+        error_messages={
+            'max_length': _("Banned value can't be longer than 250 characters.")
+        })