Rafał Pitoń 11 лет назад
Родитель
Сommit
6310a3af3e

+ 7 - 2
misago/apps/admin/prefixes/forms.py

@@ -1,10 +1,10 @@
 from django.utils.translation import ugettext_lazy as _
 import floppyforms as forms
 from misago.forms import Form, ForumMultipleChoiceField
-from misago.models import Role, Forum
+from misago.models import Forum
 from misago.validators import validate_sluggable
 
-class PrefixForm(Form):
+class PrefixFormBase(Form):
     name = forms.CharField(label=_("Prefix Name"),
                            max_length=16, validators=[validate_sluggable(
                                                                           _("Prefix must contain alphanumeric characters."),
@@ -13,7 +13,12 @@ class PrefixForm(Form):
     style = forms.CharField(label=_("Prefix CSS Class"),
                             help_text=_("CSS class that will be used to style this thread prefix."),
                             max_length=255, required=False)
+
+
+def PrefixForm(*args, **kwargs):
     forums = ForumMultipleChoiceField(label=_("Prefix Forums"),
                                       help_text=_("Select forums in which this prefix will be available."),
                                       level_indicator=u'- - ',
                                       queryset=Forum.objects.get(special='root').get_descendants())
+
+    return type('FinalPrefixForm', (PrefixFormBase,), {'forums': forums})

+ 6 - 0
misago/apps/admin/prefixes/views.py

@@ -57,6 +57,9 @@ class New(FormWidget):
     def get_edit_link(self, model):
         return reverse('admin_threads_prefixes_edit', model)
 
+    def get_form(self, target):
+        return self.form()
+
     def submit_form(self, form, target):
         new_prefix = ThreadPrefix(
                                   name=form.cleaned_data['name'],
@@ -93,6 +96,9 @@ class Edit(FormWidget):
                 'forums': model.forums.all(),
                 }
 
+    def get_form(self, target):
+        return self.form()
+
     def submit_form(self, form, target):
         target.name = form.cleaned_data['name']
         target.slug = slugify(form.cleaned_data['name'])

+ 9 - 1
misago/apps/register/forms.py

@@ -9,7 +9,6 @@ from misago.validators import validate_username, validate_password, validate_ema
 
 class UserRegisterForm(Form):
     username = forms.CharField(label=_('Username'),
-                               help_text=_("Your displayed username. Between %(min)s and %(max)s characters, only letters and digits are allowed.") % {'min': settings.username_length_min, 'max': settings.username_length_max},
                                max_length=15)
     email = forms.EmailField(label=_('E-mail address'),
                              help_text=_("Working e-mail inbox is required to maintain control over your forum account."),
@@ -33,6 +32,15 @@ class UserRegisterForm(Form):
                        'different': _("Entered passwords do not match."),
                        }]
 
+    def __init__(self, *args, **kwargs):
+        super(UserRegisterForm, self).__init__(*args, **kwargs)
+        help_text_formats = {
+                             'min': settings_lazy.username_length_min,
+                             'max': settings_lazy.username_length_max,
+                            }
+        self.fields['username'].help_text = _(
+            "Your displayed username. Between %(min)s and %(max)s characters, only letters and digits are allowed.") % help_text_formats
+
     def finalize_form(self):
         if not settings.tos_url and not settings.tos_content:
             del self.fields['accept_tos']

+ 5 - 2
misago/conf.py

@@ -29,12 +29,15 @@ class MisagoSettings(object):
     def setting(self, key):
         try:
             try:
-                return self.settings()[key]
-            except KeyError:
                 if self.is_safe:
                     return getattr(dj_settings, key)
                 else:
                     raise AttributeError()
+            except AttributeError:
+                try:
+                    return self.settings()[key]
+                except KeyError:
+                    raise AttributeError()
         except AttributeError:
             raise Exception(u"Requested setting \"%s\" could not be found." % key)
 

+ 1 - 0
misago/forms/fields.py

@@ -30,6 +30,7 @@ class ForumMultipleChoiceField(TreeNodeMultipleChoiceField):
         level = getattr(obj, obj._mptt_meta.level_attr)
         return mark_safe(conditional_escape(self.level_indicator) * (level - 1))
 
+
 class ReCaptchaField(fields.CharField):
     widget = ReCaptchaWidget
     api_error = None