fields.py 1.0 KB

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