fields.py 974 B

12345678910111213141516171819202122232425262728
  1. from mptt.forms import TreeNodeChoiceField
  2. from django.utils.html import conditional_escape, mark_safe
  3. from django.utils.translation import ugettext_lazy as _
  4. from misago.core.forms import ReCaptchaWidget
  5. class ForumChoiceField(TreeNodeChoiceField):
  6. """
  7. Custom forum choice field
  8. """
  9. def __init__(self, *args, **kwargs):
  10. kwargs['level_indicator'] = u'- - '
  11. super(ForumChoiceField, self).__init__(*args, **kwargs)
  12. def _get_level_indicator(self, obj):
  13. level = getattr(obj, obj._mptt_meta.level_attr)
  14. return mark_safe(conditional_escape(self.level_indicator) * (level - 1))
  15. class ReCaptchaField(CharField):
  16. widget = ReCaptchaWidget
  17. api_error = None
  18. def __init__(self, label=_("Verification Code"), *args, **kwargs):
  19. kwargs['label'], kwargs['required'] = label, False
  20. super(ReCaptchaField, self).__init__(*args, **kwargs)
  21. class QACaptchaField(CharField):
  22. pass