from django import forms from django.utils.translation import ugettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.helpers import validate_initial_for_choices theme = get_theme(request=None, as_instance=True) __all__ = ('RadioInputForm',) class RadioInputForm(forms.Form, BaseFormFieldPluginForm): """Form for ``RadioInputPlugin``.""" plugin_data_fields = [ ("label", ""), ("name", ""), ("choices", ""), ("help_text", ""), ("initial", ""), ("required", False) ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( attrs={'class': theme.form_element_html_class} ) ) name = forms.CharField( label=_("Name"), required=True, widget=forms.widgets.TextInput( attrs={'class': theme.form_element_html_class} ) ) choices = forms.CharField( label=_("Choices"), required=False, help_text=_("Enter single values/pairs per line. Example:
" "    1
" "    2
" "    alpha, Alpha
" "    beta, Beta
" "    omega" "

" "It finally transforms into the following HTML code:" "
" '    <select ' 'id="id_NAME_OF_THE_ELEMENT" ' 'name="NAME_OF_THE_ELEMENT">
' '        ' '<option value="1">1</option>
' '        ' '<option value="2">2</option>
' '        ' '<option value="alpha">Alpha</option>
' '        ' '<option value="beta">Beta</option>
' '        ' '<option value="omega">omega</option>
' '    </select>' "
"), widget=forms.widgets.Textarea( attrs={'class': theme.form_element_html_class} ) ) help_text = forms.CharField( label=_("Help text"), required=False, widget=forms.widgets.Textarea( attrs={'class': theme.form_element_html_class} ) ) initial = forms.CharField( label=_("Initial"), required=False, widget=forms.widgets.TextInput( attrs={'class': theme.form_element_html_class} ) ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( attrs={'class': theme.form_element_checkbox_html_class} ) ) def clean_initial(self): """Validating the initial value.""" return validate_initial_for_choices(self, 'choices', 'initial')