démarrage mise en form du formulaire
[auf_rh_dae.git] / project / dae / forms.py
CommitLineData
5d680e84 1# -*- encoding: utf-8 -*-
ce110fb9 2
5d680e84
NC
3from django import forms
4
5from datamaster_modeles import models as ref
6
7from dae import models as dae
8from rh_v1 import models as rh
9
10
11class PosteForm(forms.ModelForm):
12 """ Formulaire des postes. """
13 class Meta:
14 model = dae.Poste
ce110fb9 15
5d680e84
NC
16 fields = ('poste', 'implantation', 'type_poste', 'service', 'nom',
17 'responsable', 'statut_residence', 'mise_a_disposition',
18 'appel', 'date_debut', 'date_fin', 'actif',
19 'regime_travail', 'regime_travail_nb_heure_semaine',
20 'classement_min', 'classement_max',
21 'valeur_point_min', 'valeur_point_max',
22 'salaire_min', 'salaire_max', 'indemn_min', 'indemn_max',
23 'autre_min', 'autre_max', 'devise_comparaison',
24 'comp_locale_min', 'comp_locale_max',
25 'comp_universite_min', 'comp_universite_max',
26 'comp_fonctionpub_min', 'comp_fonctionpub_max',
27 'comp_ong_min', 'comp_ong_max',
28 'comp_autre_min', 'comp_autre_max',)
29 widgets = dict(statut_residence=forms.RadioSelect(),
ce110fb9
OL
30 appel=forms.RadioSelect(),
31 nom=forms.TextInput(attrs={'size': 60 }),
32)
5d680e84
NC
33
34 # La liste des choix est laissée vide. Voir __init__ pour la raison.
ce110fb9 35 poste = forms.ChoiceField(label="Nouveau poste, ou évolution du poste", choices=(), required=False)
5d680e84
NC
36
37 def __init__(self, *args, **kwargs):
38 """ Mise à jour dynamique du contenu du menu des postes.
39
40 Si on ne met le menu à jour de cette façon, à chaque instantiation du
41 formulaire, son contenu est mis en cache par le système et il ne
42 reflète pas les changements apportés par les ajouts, modifications,
43 etc...
44
45 """
46 super(PosteForm, self).__init__(*args, **kwargs)
47 self.fields['poste'].choices = self._poste_choices()
48
49 def _poste_choices(self):
50 """ Menu déroulant pour les postes.
51
52 Constitué des postes de dae et des postes de rh_v1 qui n'ont pas
53 d'équivalent dans dae.
54
55 """
56 dae_ = dae.Poste.objects.filter(id_rh__isnull=True)
57 copies = dae.Poste.objects.exclude(id_rh__isnull=True)
58 id_copies = [p.id_rh_id for p in copies.all()]
59 rhv1 = rh.Poste.objects.exclude(id__in=id_copies)
60
61 return [('', 'Nouveau poste')] + \
62 sorted([('dae-%s' % p.id, unicode(p)) for p in dae_ | copies] +
63 [('rh-%s' % p.id, unicode(p)) for p in rhv1],
64 key=lambda t: t[1])
3ed49093
NC
65
66
67class PosteFinancementForm(forms.ModelForm):
68 """ Formulaire des sources de financement pour un poste. """
69 class Meta:
70 model = dae.PosteFinancement
71 fields = ('type', 'montant', 'pourcentage', 'commentaire')