validators.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from django.core.exceptions import ValidationError
  2. from django.utils.translation import ugettext_lazy as _, ungettext
  3. from misago.conf import settings
  4. from misago.core.validators import validate_sluggable
  5. def validate_title(title):
  6. title_len = len(title)
  7. if not title_len:
  8. raise forms.ValidationError(_("Enter thread title."))
  9. if title_len < settings.thread_title_length_min:
  10. message = ungettext(
  11. "Thread title should be at least %(limit)s character long.",
  12. "Thread title should be at least %(limit)s characters long.",
  13. settings.thread_title_length_min)
  14. message = message % {'limit': settings.thread_title_length_min}
  15. raise forms.ValidationError(message)
  16. if title_len > settings.thread_title_length_max:
  17. message = ungettext(
  18. "Thread title can't be longer than %(limit)s character.",
  19. "Thread title can't be longer than %(limit)s characters.",
  20. settings.thread_title_length_max,)
  21. message = message % {'limit': settings.thread_title_length_max}
  22. raise forms.ValidationError(message)
  23. error_not_sluggable = _("Thread title should contain "
  24. "alpha-numeric characters.")
  25. error_slug_too_long = _("Thread title is too long.")
  26. slug_validator = validate_sluggable(error_not_sluggable,
  27. error_slug_too_long)
  28. slug_validator(title)
  29. return title