forms.py 3.38 KB
Newer Older
1 2 3
# -*- coding: utf-8 -*-
from django import forms

4 5
from django.core.validators import RegexValidator

6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
class DemenagementForm(forms.Form):
    """
        Formulaire à remplir par l'utilisateur pour les changements de chambre.
    """
    keep_connection = forms.BooleanField(required=False,
        initial=True,
        label=u'Je souhaite conserver ma connexion Cr@ns')
    status = forms.ChoiceField(required=True,
        initial='is_ext',
        choices=(
                    ('is_ext', u"J'habite à l'extérieur du campus de Cachan"),
                    ('is_crous_cachan', u"J'habite sur le campus de Cachan"),
                ),
        label=u'Nouveau statut',
    )
    new_chbre = forms.CharField(
            max_length=255,
            initial='',
            label=u'Nouvelle chambre (Si tu es sur le campus de Cachan)',
            required=False)
    adresse_rue = forms.CharField(max_length=510, label=u'Rue', required=False)
27 28 29 30 31
    adresse_code = forms.IntegerField(
            min_value=1000,
            max_value=99999,
            label=u'Code postal',
            required=False)
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
    adresse_ville = forms.CharField(max_length=255, label=u'Ville', required=False)

    def clean(self):
        """
            Effectue la vérification des informations fournies par l'adhérent, à savoir:
            - Chambre manquante alors que l'adh déclare habiter sur le campus.
        """
        # On effectue un premier nettoyage des informations
        cleaned_data = super(forms.Form,self).clean()
        keep_connection = cleaned_data.get('keep_connection')
        status = cleaned_data.get('status')
        new_chbre = cleaned_data.get('new_chbre').upper()
        adresse_rue = cleaned_data.get('adresse_rue')
        adresse_code = cleaned_data.get('adresse_code')
        adresse_ville = cleaned_data.get('adresse_ville')

        if status == 'is_crous_cachan':
            # L'information new_room est-elle manquante ?
            if new_chbre == '' or new_chbre == None:
                raise forms.ValidationError(u"Tu n'as pas indiqué ta nouvelle chambre.")

            cleaned_data['new_chbre'] = unicode(new_chbre)
        else:
55
            # L'adhérent est hors campus
56 57
            cleaned_data['new_chbre'] =  u'EXT'

58
        if keep_connection and status != 'is_crous_cachan':
59 60 61 62 63 64
            if not adresse_rue:
                raise forms.ValidationError(u"Tu n'as pas spécifié de rue pour ta nouvelle adresse.")
            if not adresse_code:
                raise forms.ValidationError(u"Tu n'as pas spécifié de code postal pour ta nouvelle adresse.")
            if not adresse_ville:
                raise forms.ValidationError(u"Tu n'as pas spécifié de ville pour ta nouvelle adresse.")
65 66 67 68
        else:
            # Il ne veut plus de connexion, il n'a pas besoin d'adresse
            cleaned_data.update({
                'adresse_rue': u'',
69
                'adresse_code': 0,
70 71
                'adresse_ville': u'',
            })
72 73

        return cleaned_data
74 75 76

class SearchForm(forms.Form):
    """ Formulaire de recherche pour le cableur """
77 78 79
    alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', 'Only alphanumeric characters are allowed.')
    login = forms.CharField(label=u'Login', max_length=40, required=False, validators=[alphanumeric])
    chambre = forms.CharField(label=u'Chambre', max_length=5, required=False, validators=[alphanumeric])
80
    aid = forms.IntegerField(label=u'Aid', required=False)
81