from django.forms import Form, ModelForm, CharField, IntegerField, Textarea, EmailField
from captcha.fields import ReCaptchaField
from zues import models


class MotieForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(MotieForm, self).__init__(*args, **kwargs)
        self.fields['titel'].widget.attrs.update({'placeholder': 'Titel van het voorstel'})
        self.fields['onderwerp'].widget.attrs.update({'placeholder': 'Onderwerp (voor bestuur/congresteam)'})
        self.fields['woordvoerder'].widget.attrs.update({'placeholder': 'Naam van de woordvoerder'})
        self.fields['indieners'].widget.attrs.update({'placeholder': '"[JD Afdeling] Voorzitter, Secretaris”, “[JD Werkgroep]” of “Naam 1, Naam 2 etc… (minimaal 5)"'})
        self.fields['constateringen'].widget.attrs.update({'placeholder': 'Elke (optionele) constatering gescheiden door een of meerdere witregels..."'})
        self.fields['overwegingen'].widget.attrs.update({'placeholder': 'Elke (optionele) overweging gescheiden door een of meerdere witregels..."'})
        self.fields['uitspraken'].widget.attrs.update({'placeholder': 'Elke uitspraak gescheiden door een of meerdere witregels..."'})
        self.fields['toelichting'].widget.attrs.update({'placeholder': 'Kort en bondige toelichting (optioneel)...'})


class ResolutieForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(ResolutieForm, self).__init__(*args, **kwargs)
        self.fields['titel'].widget.attrs.update({'placeholder': 'Titel van het voorstel'})
        self.fields['onderwerp'].widget.attrs.update({'placeholder': 'Onderwerp (voor bestuur/congresteam)'})
        self.fields['woordvoerder'].widget.attrs.update({'placeholder': 'Naam van de woordvoerder'})
        self.fields['indieners'].widget.attrs.update({'placeholder': '"[JD Afdeling] Voorzitter, Secretaris”, “[JD Werkgroep]” of “Naam 1, Naam 2 etc… (minimaal 5)"'})
        self.fields['betreft'].widget.attrs.update({'placeholder': 'Resolutie/Voorstel/Hoofdstuk N, pagina M, regels X-Y'})
        self.fields['tekst1'].widget.attrs.update({'placeholder': 'Volledige tekst die geschrapt of toegevoegd wordt...'})
        self.fields['tekst2'].widget.attrs.update({'placeholder': 'Volledige tekst die de geschrapte tekst vervangt... (alleen gebruiken bij type Vervangen)'})
        self.fields['toelichting'].widget.attrs.update({'placeholder': 'Kort en bondige toelichting (optioneel)...'})


class PMForm(MotieForm):
    constateringen = CharField(widget=Textarea, label='Constaterende dat', required=False)
    overwegingen = CharField(widget=Textarea, label='Overwegende dat', required=False)
    uitspraken = CharField(widget=Textarea, label='Spreekt uit dat')

    def __init__(self, *args, **kwargs):
        super(PMForm, self).__init__(*args, **kwargs)
        self.fields['toelichting'].widget.attrs.update({'placeholder': 'Optionele toelichting van maximaal 100 woorden...'})

    class Meta:
        model = models.PolitiekeMotie
        fields = ('titel', 'onderwerp', 'woordvoerder', 'indieners', 'constateringen', 'overwegingen', 'uitspraken', 'toelichting',)


class UPMForm(MotieForm):
    constateringen = CharField(widget=Textarea, label='Constaterende dat', required=False)
    overwegingen = CharField(widget=Textarea, label='Overwegende dat', required=False)
    uitspraken = CharField(widget=Textarea, label='Spreekt uit dat')

    def __init__(self, *args, **kwargs):
        super(UPMForm, self).__init__(*args, **kwargs)
        self.fields['toelichting'].widget.attrs.update({'placeholder': 'Optionele toelichting van maximaal 100 woorden...'})

    class Meta:
        model = models.UrgentePolitiekeMotie
        fields = ('titel', 'onderwerp', 'woordvoerder', 'indieners', 'constateringen', 'overwegingen', 'uitspraken', 'toelichting',)


class ORGForm(MotieForm):
    constateringen = CharField(widget=Textarea, label='Constaterende dat', required=False)
    overwegingen = CharField(widget=Textarea, label='Overwegende dat', required=False)
    uitspraken = CharField(widget=Textarea, label='Spreekt uit dat')

    class Meta:
        model = models.Organimo
        fields = ('titel', 'onderwerp', 'woordvoerder', 'indieners', 'constateringen', 'overwegingen', 'uitspraken', 'toelichting',)


class AORGForm(MotieForm):
    constateringen = CharField(widget=Textarea, label='Constaterende dat', required=False)
    overwegingen = CharField(widget=Textarea, label='Overwegende dat', required=False)
    uitspraken = CharField(widget=Textarea, label='Spreekt uit dat')

    class Meta:
        model = models.ActueleOrganimo
        fields = ('titel', 'onderwerp', 'woordvoerder', 'indieners', 'constateringen', 'overwegingen', 'uitspraken', 'toelichting',)


class RESForm(ResolutieForm):
    tekst1 = CharField(widget=Textarea, label='Schrap/Voeg toe:')
    tekst2 = CharField(widget=Textarea, label='Vervang door:', required=False)

    class Meta:
        model = models.Resolutie
        fields = ('titel', 'onderwerp', 'woordvoerder', 'indieners', 'betreft', 'type', 'tekst1', 'tekst2', 'toelichting',)

    def __init__(self, *args, **kwargs):
        super(RESForm, self).__init__(*args, **kwargs)
        self.fields['betreft'].widget.attrs.update({'placeholder': 'Hoofdstuk N, pagina M, regels X-Y'})


class AMPPForm(ResolutieForm):
    tekst1 = CharField(widget=Textarea, label='Schrap/Voeg toe:')
    tekst2 = CharField(widget=Textarea, label='Vervang door:', required=False)

    class Meta:
        model = models.AmendementPP
        fields = ('titel', 'onderwerp', 'woordvoerder', 'indieners', 'betreft', 'type', 'tekst1', 'tekst2', 'toelichting',)

    def __init__(self, *args, **kwargs):
        super(AMPPForm, self).__init__(*args, **kwargs)
        self.fields['betreft'].widget.attrs.update({'placeholder': 'Voorstel N, pagina M, regels X-Y'})
        self.fields['toelichting'].widget.attrs.update({'placeholder': 'Optionele toelichting van maximaal 100 woorden...'})


class AMRESForm(ResolutieForm):
    tekst1 = CharField(widget=Textarea, label='Schrap/Voeg toe:')
    tekst2 = CharField(widget=Textarea, label='Vervang door:', required=False)

    class Meta:
        model = models.AmendementResolutie
        fields = ('titel', 'onderwerp', 'woordvoerder', 'indieners', 'betreft', 'type', 'tekst1', 'tekst2', 'toelichting',)

    def __init__(self, *args, **kwargs):
        super(AMRESForm, self).__init__(*args, **kwargs)
        self.fields['betreft'].widget.attrs.update({'placeholder': 'Voorstel/Resolutie N, pagina M, regels X-Y'})
        self.fields['toelichting'].widget.attrs.update({'placeholder': 'Optionele toelichting van maximaal 100 woorden...'})


class HRForm(ResolutieForm):
    tekst1 = CharField(widget=Textarea, label='Schrap/Voeg toe:')
    tekst2 = CharField(widget=Textarea, label='Vervang door:', required=False)

    class Meta:
        model = models.HRWijziging
        fields = ('titel', 'onderwerp', 'woordvoerder', 'indieners', 'betreft', 'type', 'tekst1', 'tekst2', 'toelichting',)

    def __init__(self, *args, **kwargs):
        super(HRForm, self).__init__(*args, **kwargs)
        self.fields['betreft'].widget.attrs.update({'placeholder': 'Hoofdstuk N, pagina M, regels X-Y'})


class StatutenForm(ResolutieForm):
    tekst1 = CharField(widget=Textarea, label='Schrap/Voeg toe:')
    tekst2 = CharField(widget=Textarea, label='Vervang door:', required=False)

    class Meta:
        model = models.StatutenWijziging
        fields = ('titel', 'onderwerp', 'woordvoerder', 'indieners', 'betreft', 'type', 'tekst1', 'tekst2', 'toelichting',)

    def __init__(self, *args, **kwargs):
        super(StatutenForm, self).__init__(*args, **kwargs)
        self.fields['betreft'].widget.attrs.update({'placeholder': 'Hoofdstuk N, pagina M, regels X-Y'})


class LidnummerForm(Form):
    lidnummer = IntegerField(label='Lidnummer:')


class LidnummerRecaptchaForm(LidnummerForm):
    captcha = ReCaptchaField()


class HelpLidnummerForm(Form):
    email = EmailField(max_length=254, label='E-mailadres:')


class HelpLidnummerRecaptchaForm(HelpLidnummerForm):
    captcha = ReCaptchaField()
