from django.utils.translation import ugettext_lazy as _
import floppyforms as forms
from misago.forms import Form, ForumMultipleChoiceField
from misago.models import Forum
from misago.validators import validate_sluggable

class PrefixFormBase(Form):
    name = forms.CharField(label=_("Prefix Name"),
                           max_length=16, validators=[validate_sluggable(
                                                                          _("Prefix must contain alphanumeric characters."),
                                                                          _("Prefix name is too long.")
                                                                          )])
    style = forms.CharField(label=_("Prefix CSS Class"),
                            help_text=_("CSS class that will be used to style this thread prefix."),
                            max_length=255, required=False)


def PrefixForm(*args, **kwargs):
    forums = ForumMultipleChoiceField(label=_("Prefix Forums"),
                                      help_text=_("Select forums in which this prefix will be available."),
                                      level_indicator=u'- - ',
                                      queryset=Forum.objects.get(special='root').get_descendants())

    return type('FinalPrefixForm', (PrefixFormBase,), {'forums': forums})