from django.utils.translation import ugettext_lazy as _

from misago.core import forms
from misago.core.validators import validate_sluggable
from misago.forums.forms import AdminForumMultipleChoiceField

from misago.threads.models import Label


class LabelForm(forms.ModelForm):
    name = forms.CharField(
        label=_("Label name"), validators=[validate_sluggable()])
    css_class = forms.CharField(
        label=_("CSS class"), required=False,
        help_text=_("Optional CSS clas used to style this label."))
    forums = AdminForumMultipleChoiceField(
        label=_('Forums'), required=False, include_root=False,
        widget=forms.CheckboxSelectMultiple(),
        help_text=_('Select forums this label will be available in.'))

    class Meta:
        model = Label
        fields = ['name', 'css_class', 'forums']

    def clean_name(self):
        data = self.cleaned_data['name']
        self.instance.set_name(data)
        return data