fields.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from django.utils.html import conditional_escape, mark_safe
  2. from django.utils.translation import ugettext_lazy as _
  3. from floppyforms import fields, widgets
  4. from mptt.forms import TreeNodeChoiceField, TreeNodeMultipleChoiceField
  5. from misago.forms.widgets import ReCaptchaWidget
  6. class ForumChoiceField(TreeNodeChoiceField):
  7. """
  8. Custom forum choice field
  9. """
  10. widget = widgets.Select
  11. def __init__(self, *args, **kwargs):
  12. kwargs['level_indicator'] = u'- - '
  13. super(ForumChoiceField, self).__init__(*args, **kwargs)
  14. def _get_level_indicator(self, obj):
  15. level = getattr(obj, obj._mptt_meta.level_attr)
  16. return mark_safe(conditional_escape(self.level_indicator) * (level - 1))
  17. class ForumMultipleChoiceField(TreeNodeMultipleChoiceField):
  18. widget = widgets.CheckboxSelectMultiple
  19. def __init__(self, *args, **kwargs):
  20. kwargs['level_indicator'] = u'- - '
  21. super(ForumMultipleChoiceField, self).__init__(*args, **kwargs)
  22. def _get_level_indicator(self, obj):
  23. level = getattr(obj, obj._mptt_meta.level_attr)
  24. return mark_safe(conditional_escape(self.level_indicator) * (level - 1))
  25. class ReCaptchaField(fields.CharField):
  26. widget = ReCaptchaWidget
  27. api_error = None
  28. def __init__(self, *args, **kwargs):
  29. kwargs['label'] = _("Verification Code")
  30. kwargs['help_text'] = _("Enter the code from image into the text field.")
  31. kwargs['required'] = False
  32. super(ReCaptchaField, self).__init__(*args, **kwargs)
  33. class QACaptchaField(fields.CharField):
  34. pass