from django import forms

from .models import Setting, TwitchColor


class BaseForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(BaseForm, self).__init__(*args, **kwargs)
        for field_name, field in self.fields.items():
            if type(field) is forms.fields.BooleanField:
                field.widget.attrs['class'] = ' w3-check '
                field.label_suffix = ""
            else:
                field.widget.attrs['class'] = ' w3-input '
            field.widget.attrs['placeholder'] = field.label


class WusstestDuSchonConfigForm(forms.Form):
    prefix_field = forms.CharField(max_length=50, initial=Setting.objects.get(key="WusstestDuSchonPrefix").value,
                                   label="Präfix")
    loop_field = forms.IntegerField(initial=Setting.objects.get(key="WusstestDuSchonLoop").value,
                                    label="Pause (in Minuten)")
    color_field = forms.ChoiceField(choices=[(color.color, color.display_name) for color in TwitchColor.objects.all()],
                                    label="Text Farbe")

    def __init__(self, *args, **kwargs):
        super(WusstestDuSchonConfigForm, self).__init__(*args, **kwargs)

        self.fields["prefix_field"].initial = Setting.objects.get(key="WusstestDuSchonPrefix").value
        self.fields["loop_field"].initial = Setting.objects.get(key="WusstestDuSchonLoop").value
        self.fields["color_field"].initial = TwitchColor.objects.get(
            twitch_name=Setting.objects.get(key="WusstestDuSchonColor").value).color

        for field_name, field in self.fields.items():
            if type(field) is forms.fields.BooleanField:
                field.widget.attrs['class'] = ' w3-check '
                field.label_suffix = ""
            else:
                field.widget.attrs['class'] = ' w3-input '
            field.widget.attrs['placeholder'] = field.label

        self.fields["color_field"].widget.attrs['class'] += ' color-select '

    def save(self):
        prefix = Setting.objects.get(key="WusstestDuSchonPrefix")
        prefix.value = self.cleaned_data["prefix_field"]
        prefix.save()

        loop = Setting.objects.get(key="WusstestDuSchonLoop")
        loop.value = self.cleaned_data["loop_field"]
        loop.save()

        color = Setting.objects.get(key="WusstestDuSchonColor")
        color.value = TwitchColor.objects.get(color=self.cleaned_data["color_field"]).twitch_name
        color.save()