##// END OF EJS Templates
Truncate post texts by words preserving html tags, not just by chars.
Truncate post texts by words preserving html tags, not just by chars.

File last commit:

r57:dcbc67f3 default
r61:4d743e53 default
Show More
forms.py
61 lines | 1.8 KiB | text/x-python | PythonLexer
from django import forms
from neboard import settings
class PostForm(forms.Form):
MAX_TEXT_LENGTH = 10000
MAX_IMAGE_SIZE = 8 * 1024 * 1024
title = forms.CharField(max_length=50, required=False)
text = forms.CharField(widget=forms.Textarea, required=False)
image = forms.ImageField(required=False)
def clean_text(self):
text = self.cleaned_data['text']
if text:
if len(text) > self.MAX_TEXT_LENGTH:
raise forms.ValidationError('Too many text')
return text
def clean_image(self):
image = self.cleaned_data['image']
if image:
if image._size > self.MAX_IMAGE_SIZE:
raise forms.ValidationError('Too large image: more than ' +
str(self.MAX_IMAGE_SIZE) + ' bytes')
return image
def clean(self):
cleaned_data = super(PostForm, self).clean()
text = cleaned_data.get('text')
image = cleaned_data.get('image')
if (not text) and (not image):
raise forms.ValidationError('Enter either text or image')
return cleaned_data
class ThreadForm(PostForm):
INVALID_TAG_CHARACTERS = ['+', '/', '&', '=', '?', '-', '.', ',']
tags = forms.CharField(max_length=100)
def clean_tags(self):
tags = self.cleaned_data['tags']
if tags:
for character in tags:
if character in self.INVALID_TAG_CHARACTERS:
raise forms.ValidationError(
'Inappropriate characters in tags')
return tags
def clean(self):
cleaned_data = super(ThreadForm, self).clean()
return cleaned_data
class SettingsForm(forms.Form):
theme = forms.ChoiceField(choices=settings.THEMES, widget=forms.RadioSelect)