from django import forms
from forum.models import *
from django.utils.translation import ugettext as _
-from django.contrib.humanize.templatetags.humanize import apnumber
-from django.utils.safestring import mark_safe
-from general import NextUrlField, UserNameField, SetPasswordForm
+from django.utils.encoding import smart_unicode
+from general import NextUrlField, UserNameField
+
from forum import settings
from forum.modules import call_all_handlers
class TitleField(forms.CharField):
def __init__(self, *args, **kwargs):
super(TitleField, self).__init__(*args, **kwargs)
+
self.required = True
self.max_length = 255
self.widget = forms.TextInput(attrs={'size' : 70, 'autocomplete' : 'off', 'maxlength' : self.max_length})
self.initial = ''
def clean(self, value):
+ super(TitleField, self).clean(value)
+
if len(value) < settings.FORM_MIN_QUESTION_TITLE:
raise forms.ValidationError(_('title must be must be at least %s characters') % settings.FORM_MIN_QUESTION_TITLE)
class EditorField(forms.CharField):
def __init__(self, *args, **kwargs):
super(EditorField, self).__init__(*args, **kwargs)
+
self.widget = forms.Textarea(attrs={'id':'editor'})
self.label = _('content')
self.help_text = u''
def clean(self, value):
+ super(QuestionEditorField, self).clean(value)
+
if not bool(settings.FORM_EMPTY_QUESTION_BODY) and (len(re.sub('[ ]{2,}', ' ', value)) < settings.FORM_MIN_QUESTION_BODY):
raise forms.ValidationError(_('question content must be at least %s characters') % settings.FORM_MIN_QUESTION_BODY)
self.required = True
def clean(self, value):
+ super(AnswerEditorField, self).clean(value)
+
if len(re.sub('[ ]{2,}', ' ', value)) < settings.FORM_MIN_QUESTION_BODY:
raise forms.ValidationError(_('answer content must be at least %s characters') % settings.FORM_MIN_QUESTION_BODY)
class TagNamesField(forms.CharField):
def __init__(self, user=None, *args, **kwargs):
super(TagNamesField, self).__init__(*args, **kwargs)
+
self.required = True
self.widget = forms.TextInput(attrs={'size' : 50, 'autocomplete' : 'off'})
self.max_length = 255
self.user = user
def clean(self, value):
+ super(TagNamesField, self).clean(value)
+
value = super(TagNamesField, self).clean(value)
data = value.strip().lower()
raise forms.ValidationError(_('please use between %(min)s and %(max)s tags') % { 'min': settings.FORM_MIN_NUMBER_OF_TAGS, 'max': settings.FORM_MAX_NUMBER_OF_TAGS})
list_temp = []
- tagname_re = re.compile(r'^[\w+\.-]+$', re.UNICODE)
+ tagname_re = re.compile(r'^[\w+#\.-]+$', re.UNICODE)
for key,tag in list.items():
if len(tag) > settings.FORM_MAX_LENGTH_OF_TAG or len(tag) < settings.FORM_MIN_LENGTH_OF_TAG:
raise forms.ValidationError(_('please use between %(min)s and %(max)s characters in you tags') % { 'min': settings.FORM_MIN_LENGTH_OF_TAG, 'max': settings.FORM_MAX_LENGTH_OF_TAG})
if not tagname_re.match(tag):
- raise forms.ValidationError(_('please use following characters in tags: letters , numbers, and characters \'.-_\''))
+ raise forms.ValidationError(_('please use following characters in tags: letters , numbers, and characters \'.#-_\''))
# only keep one same tag
if tag not in list_temp and len(tag.strip()) > 0:
list_temp.append(tag)
date_format = '%c'
self.fields['revision'].choices = [
- (r[0], u'%s - %s (%s) %s' % (r[0], r[1], r[2].strftime(date_format), r[3]))
+ (r[0], u'%s - %s (%s) %s' % (r[0], smart_unicode(r[1]), r[2].strftime(date_format), r[3]))
for r in revisions]
self.fields['revision'].initial = post.active_revision.revision
def clean_email(self):
if self.user.email != self.cleaned_data['email']:
- if settings.EMAIL_UNIQUE == True:
+ if settings.EMAIL_UNIQUE:
if 'email' in self.cleaned_data:
from forum.models import User
try: