##// END OF EJS Templates
Fixed thread cache.
Fixed thread cache.

File last commit:

r153:0515d3a0 default
r190:ef6c4e9c default
Show More
forms.py
181 lines | 5.2 KiB | text/x-python | PythonLexer
neko259
Added a regex for validation of tags. This refs #10
r69 import re
Ilyas
Added django-simple-capthca support...
r78 from captcha.fields import CaptchaField
Ilyas
Added creating new thread form...
r14 from django import forms
neko259
Added form validation, added style for the tag panel. This fixes #13
r76 from django.forms.util import ErrorList
neko259
Implemented posting delay. User must wait some time before posting (a measure against flood).
r153 from django.utils import timezone
import time
import math
neko259
Added login functionality.
r144 from boards.models import TITLE_MAX_LENGTH, User
neko259
Added themes support. Added 'snow white' theme by Mystra_x64.
r35 from neboard import settings
wnc_21
Added captcha support
r95 from boards import utils
neko259
Added form validation, added style for the tag panel. This fixes #13
r76
neko259
Implemented posting delay. User must wait some time before posting (a measure against flood).
r153 LAST_POST_TIME = "last_post_time"
neko259
Added form validation, added style for the tag panel. This fixes #13
r76 class PlainErrorList(ErrorList):
def __unicode__(self):
return self.as_text()
def as_text(self):
return ''.join([u'(!) %s ' % e for e in self])
neko259
Added a text area to the posting form. Added a basic CSS style. Changed threads list a bit.
r16
neko259
Implemented form validation. When the form fails validation, showing the index page.
r29 class PostForm(forms.Form):
neko259
Added form validation, added style for the tag panel. This fixes #13
r76
neko259
Fixed validation message. 'text or image must be entered' was shown instead of the read one.
r151 MAX_TEXT_LENGTH = 30000
neko259
Implemented form validation. When the form fails validation, showing the index page.
r29 MAX_IMAGE_SIZE = 8 * 1024 * 1024
neko259
Added form validation, added style for the tag panel. This fixes #13
r76 title = forms.CharField(max_length=TITLE_MAX_LENGTH, required=False)
neko259
Implemented form validation. When the form fails validation, showing the index page.
r29 text = forms.CharField(widget=forms.Textarea, required=False)
Ilyas
Added checkinf form fields when creating a new thread.
r18 image = forms.ImageField(required=False)
neko259
Implemented form validation. When the form fails validation, showing the index page.
r29
neko259
Implemented posting delay. User must wait some time before posting (a measure against flood).
r153 session = None
neko259
Added form validation, added style for the tag panel. This fixes #13
r76 def clean_title(self):
title = self.cleaned_data['title']
if title:
if len(title) > TITLE_MAX_LENGTH:
raise forms.ValidationError('Title must have less than' +
str(TITLE_MAX_LENGTH) +
' characters.')
return title
neko259
Implemented form validation. When the form fails validation, showing the index page.
r29 def clean_text(self):
text = self.cleaned_data['text']
if text:
if len(text) > self.MAX_TEXT_LENGTH:
neko259
Added form validation, added style for the tag panel. This fixes #13
r76 raise forms.ValidationError('Text must have less than ' +
str(self.MAX_TEXT_LENGTH) +
' characters.')
neko259
Implemented form validation. When the form fails validation, showing the index page.
r29 return text
def clean_image(self):
image = self.cleaned_data['image']
if image:
if image._size > self.MAX_IMAGE_SIZE:
neko259
Added form validation, added style for the tag panel. This fixes #13
r76 raise forms.ValidationError('Image must be less than ' +
str(self.MAX_IMAGE_SIZE) +
' bytes.')
neko259
Implemented form validation. When the form fails validation, showing the index page.
r29 return image
def clean(self):
cleaned_data = super(PostForm, self).clean()
neko259
Fixed validation message. 'text or image must be entered' was shown instead of the read one.
r151 if not self.errors:
self._clean_text_image()
neko259
Fixed validation of image without text. This refs #13
r77
neko259
Implemented posting delay. User must wait some time before posting (a measure against flood).
r153 if not self.errors and self.session:
self._validate_posting_speed()
neko259
Added form validation, added style for the tag panel. This fixes #13
r76 return cleaned_data
def _clean_text_image(self):
text = self.cleaned_data.get('text')
image = self.cleaned_data.get('image')
neko259
Implemented form validation. When the form fails validation, showing the index page.
r29
if (not text) and (not image):
neko259
Fixed validation of image without text. This refs #13
r77 error_message = 'Either text or image must be entered.'
self._errors['text'] = self.error_class([error_message])
neko259
Implemented posting delay. User must wait some time before posting (a measure against flood).
r153
def _validate_posting_speed(self):
can_post = True
if LAST_POST_TIME in self.session:
now = time.time()
last_post_time = self.session[LAST_POST_TIME]
current_delay = int(now - last_post_time)
if current_delay < settings.POSTING_DELAY:
error_message = 'Wait ' + str(settings.POSTING_DELAY -
current_delay)\
+ ' seconds after last posting'
self._errors['text'] = self.error_class([error_message])
can_post = False
if can_post:
self.session[LAST_POST_TIME] = time.time()
neko259
Implemented form validation. When the form fails validation, showing the index page.
r29
class ThreadForm(PostForm):
neko259
Fixed unicode tags validation. Moved constants from classes to modules. Added error 404 when trying to get the non-existent thread. This fixes #19
r71 regex_tags = re.compile(ur'^[\w\s\d]+$', re.UNICODE)
Ilyas
Added creating new thread form...
r14 tags = forms.CharField(max_length=100)
neko259
Changed metadata design. Make space split tags.
r31
def clean_tags(self):
tags = self.cleaned_data['tags']
neko259
Added a regex for validation of tags. This refs #10
r69
neko259
Changed metadata design. Make space split tags.
r31 if tags:
neko259
Added a regex for validation of tags. This refs #10
r69 if not self.regex_tags.match(tags):
raise forms.ValidationError(
neko259
Added form validation, added style for the tag panel. This fixes #13
r76 'Inappropriate characters in tags.')
neko259
Changed metadata design. Make space split tags.
r31
return tags
def clean(self):
cleaned_data = super(ThreadForm, self).clean()
neko259
Added themes support. Added 'snow white' theme by Mystra_x64.
r35 return cleaned_data
wnc_21
Added captcha support
r95 class PostCaptchaForm(PostForm):
captcha = CaptchaField()
def __init__(self, *args, **kwargs):
self.request = kwargs['request']
del kwargs['request']
super(PostCaptchaForm, self).__init__(*args, **kwargs)
def clean(self):
cleaned_data = super(PostCaptchaForm, self).clean()
success = self.is_valid()
utils.update_captcha_access(self.request, success)
if success:
return cleaned_data
else:
raise forms.ValidationError("captcha validation failed")
Ilyas
Added django-simple-capthca support...
r78 class ThreadCaptchaForm(ThreadForm):
captcha = CaptchaField()
wnc_21
Added captcha support
r95 def __init__(self, *args, **kwargs):
self.request = kwargs['request']
del kwargs['request']
super(ThreadCaptchaForm, self).__init__(*args, **kwargs)
def clean(self):
cleaned_data = super(ThreadCaptchaForm, self).clean()
success = self.is_valid()
utils.update_captcha_access(self.request, success)
if success:
return cleaned_data
else:
raise forms.ValidationError("captcha validation failed")
Ilyas
Added django-simple-capthca support...
r78
neko259
Added themes support. Added 'snow white' theme by Mystra_x64.
r35 class SettingsForm(forms.Form):
wnc_21
Added captcha support
r95 theme = forms.ChoiceField(choices=settings.THEMES, widget=forms.RadioSelect)
neko259
Added login functionality.
r144
class LoginForm(forms.Form):
user_id = forms.CharField()
def clean_user_id(self):
user_id = self.cleaned_data['user_id']
if user_id:
users = User.objects.filter(user_id=user_id)
if len(users) == 0:
raise forms.ValidationError('No such user found')
return user_id
def clean(self):
cleaned_data = super(LoginForm, self).clean()
return cleaned_data