mixins.py 2.0 KB

123456789101112131415161718192021222324252627282930313233
  1. from django import forms
  2. from django.utils.translation import ungettext
  3. from misago.utils.strings import slugify
  4. class ValidateThreadNameMixin(object):
  5. def clean_thread_name(self):
  6. data = self.cleaned_data['thread_name']
  7. slug = slugify(data)
  8. if len(slug) < self.request.settings['thread_name_min']:
  9. raise forms.ValidationError(ungettext(
  10. "Thread name must contain at least one alpha-numeric character.",
  11. "Thread name must contain at least %(count)d alpha-numeric characters.",
  12. self.request.settings['thread_name_min']
  13. ) % {'count': self.request.settings['thread_name_min']})
  14. if len(data) > self.request.settings['thread_name_max']:
  15. raise forms.ValidationError(ungettext(
  16. "Thread name cannot be longer than %(count)d character.",
  17. "Thread name cannot be longer than %(count)d characters.",
  18. self.request.settings['thread_name_max']
  19. ) % {'count': self.request.settings['thread_name_max']})
  20. return data
  21. class ValidatePostLengthMixin(object):
  22. def clean_post(self):
  23. data = self.cleaned_data['post']
  24. if len(data) < self.request.settings['post_length_min']:
  25. raise forms.ValidationError(ungettext(
  26. "Post content cannot be empty.",
  27. "Post content cannot be shorter than %(count)d characters.",
  28. self.request.settings['post_length_min']
  29. ) % {'count': self.request.settings['post_length_min']})
  30. return data