from django.utils.html import conditional_escape, mark_safe from django.utils.translation import ugettext_lazy as _ from floppyforms import fields, widgets from mptt.forms import TreeNodeChoiceField, TreeNodeMultipleChoiceField from misago.forms.widgets import ReCaptchaWidget class ForumChoiceField(TreeNodeChoiceField): """ Custom forum choice field """ widget = widgets.Select def __init__(self, *args, **kwargs): kwargs['level_indicator'] = u'- - ' super(ForumChoiceField, self).__init__(*args, **kwargs) def _get_level_indicator(self, obj): level = getattr(obj, obj._mptt_meta.level_attr) return mark_safe(conditional_escape(self.level_indicator) * (level - 1)) class ForumMultipleChoiceField(TreeNodeMultipleChoiceField): widget = widgets.CheckboxSelectMultiple def __init__(self, *args, **kwargs): kwargs['level_indicator'] = u'- - ' super(ForumMultipleChoiceField, self).__init__(*args, **kwargs) def _get_level_indicator(self, obj): level = getattr(obj, obj._mptt_meta.level_attr) return mark_safe(conditional_escape(self.level_indicator) * (level - 1)) class ReCaptchaField(fields.CharField): widget = ReCaptchaWidget api_error = None def __init__(self, *args, **kwargs): kwargs['label'] = _("Verification Code") kwargs['help_text'] = _("Enter the code from image into the text field.") kwargs['required'] = False super(ReCaptchaField, self).__init__(*args, **kwargs) class QACaptchaField(fields.CharField): pass