12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from django import forms
- from django.utils import timezone
- from django.utils.translation import ungettext_lazy, ugettext_lazy as _
- from misago.utils.strings import slugify
- class FloodProtectionMixin(object):
- def clean(self):
- cleaned_data = super(FloodProtectionMixin, self).clean()
- if self.request.user.last_post:
- diff = timezone.now() - self.request.user.last_post
- diff = diff.seconds + (diff.days * 86400)
- flood_limit = 35
- wait_for = flood_limit - diff
- if wait_for > 0:
- if wait_for < 5:
- raise forms.ValidationError(_("You can't post one message so quickly after another. Please wait a moment and try again."))
- else:
- raise forms.ValidationError(ungettext(
- "You can't post one message so quickly after another. Please wait %(seconds)d second and try again.",
- "You can't post one message so quickly after another. Please wait %(seconds)d seconds and try again.",
- wait_for) % {
- 'seconds': wait_for,
- })
- return cleaned_data
- class ValidateThreadNameMixin(object):
- def clean_thread_name(self):
- data = self.cleaned_data['thread_name']
- slug = slugify(data)
- if len(slug) < self.request.settings['thread_name_min']:
- raise forms.ValidationError(ungettext_laxy(
- "Thread name must contain at least one alpha-numeric character.",
- "Thread name must contain at least %(count)d alpha-numeric characters.",
- self.request.settings['thread_name_min']
- ) % {'count': self.request.settings['thread_name_min']})
- if len(data) > self.request.settings['thread_name_max']:
- raise forms.ValidationError(ungettext_laxy(
- "Thread name cannot be longer than %(count)d character.",
- "Thread name cannot be longer than %(count)d characters.",
- self.request.settings['thread_name_max']
- ) % {'count': self.request.settings['thread_name_max']})
- return data
- class ValidatePostLengthMixin(object):
- def clean_post(self):
- data = self.cleaned_data['post']
- if len(data) < self.request.settings['post_length_min']:
- raise forms.ValidationError(ungettext_laxy(
- "Post content cannot be empty.",
- "Post content cannot be shorter than %(count)d characters.",
- self.request.settings['post_length_min']
- ) % {'count': self.request.settings['post_length_min']})
- return data
|