validators.py 1.5 KB

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