from django import forms

from .models import Contrib


ORIENTATIONS = (
    ('N', 'Nord'),
    ('NO', 'Nord-Ouest'),
    ('O', 'Ouest'),
    ('SO', 'Sud-Ouest'),
    ('S', 'Sud'),
    ('SE', 'Sud-Est'),
    ('E', 'Est'),
    ('NE', 'Nord-Est'),
)


class PublicContribForm(forms.ModelForm):
    class Meta:
        model = Contrib

        fields = [
            'name', 'contrib_type',
            'latitude', 'longitude',
            'phone', 'email',
            'comment',
            'access_type',
            'connect_local', 'connect_internet',
            'bandwidth', 'share_part',
            'floor', 'floor_total', 'orientations', 'roof',
            'comment',
            'privacy_name', 'privacy_email', 'privacy_coordinates',
            'privacy_place_details', 'privacy_comment',
        ]
        widgets = {
            'contrib_type': forms.RadioSelect,
            'latitude': forms.HiddenInput,
            'longitude': forms.HiddenInput,
            'access_type': forms.RadioSelect,
            'connect_local': forms.CheckboxInput,
            'connect_internet': forms.CheckboxInput,
            'comment': forms.Textarea({'rows': 3}),
            'floor': forms.TextInput(
                attrs={'placeholder': "Étage (0 pour RDC)"}),
            'floor_total': forms.TextInput(
                attrs={'placeholder': "Nb. d'étages du bâtiment"}),
        }
    # Widget rendering is managed by hand in template for orientions.
    orientations = forms.MultipleChoiceField(choices=ORIENTATIONS)

    _privacy_fieldnames = (
        'privacy_name', 'privacy_email', 'privacy_coordinates',
        'privacy_place_details', 'privacy_comment',
    )

    def privacy_fields(self):
        for i in self._privacy_fieldnames:
            field = self[i]

            # FIXME: What a hack
            field.label = field.label\
                               .replace('public', '')\
                               .replace('publiques', '')
            yield field