]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/forms/general.py
Migrate to Django 1.6
[osqa.git] / forum / forms / general.py
index aa4282e9efa4714333a09d2eab4f2ad4d7d0d9fc..06ee23c0d9ff423fe1dd80dccb254f39ce0a28f9 100644 (file)
@@ -3,7 +3,6 @@ import re
 from django.utils.translation import ugettext as _
 from django.utils.safestring import mark_safe
 from forum import settings
-from django.http import str_to_unicode
 from forum.models import User
 from forum.modules import call_all_handlers
 import urllib
@@ -13,7 +12,9 @@ DEFAULT_NEXT = getattr(settings, 'APP_BASE_URL')
 def clean_next(next):
     if next is None:
         return DEFAULT_NEXT
-    next = str_to_unicode(urllib.unquote(next), 'utf-8')
+    next = urllib.unquote(next)
+    if not isinstance(next, unicode):
+        next = unicode(next, 'utf-8')
     next = next.strip()
     if next.startswith('/'):
         return next
@@ -126,6 +127,32 @@ class UserEmailField(forms.EmailField):
         else:
             return email 
 
+class UserRealNameField(StrippedNonEmptyCharField):
+    def __init__(self, db_model=User, db_field='real_name', must_exist=True, skip_clean=False, label=_('Your real name'),**kw):
+        self.must_exist = must_exist
+        self.skip_clean = skip_clean
+        self.db_model = db_model
+        self.db_field = db_field
+        error_messages={'required':_('Real name is required')
+                    }
+        if 'error_messages' in kw:
+            error_messages.update(kw['error_messages'])
+            del kw['error_messages']
+        super(UserRealNameField,self).__init__(max_length=100,
+                widget=forms.TextInput(attrs=login_form_widget_attrs),
+                label=label,
+                error_messages=error_messages,
+                **kw
+                )
+
+    def clean(self, real_name):
+        if self.skip_clean == True:
+            return real_name
+        try:
+            return super(UserRealNameField, self).clean(real_name)
+        except forms.ValidationError:
+            raise forms.ValidationError(self.error_messages['required'])
+
 class SetPasswordForm(forms.Form):
     password1 = forms.CharField(widget=forms.PasswordInput(attrs=login_form_widget_attrs),
                                 label=_('choose password'),