1 # -*- encoding: utf-8 -*-
3 from django
import forms
5 from datamaster_modeles
import models
as ref
7 from dae
import models
as dae
8 from rh_v1
import models
as rh
11 class PosteForm(forms
.ModelForm
):
12 """ Formulaire des postes. """
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(),
30 appel
=forms
.RadioSelect(),
31 nom
=forms
.TextInput(attrs
={'size': 60 }),
34 # La liste des choix est laissée vide. Voir __init__ pour la raison.
35 poste
= forms
.ChoiceField(label
="Nouveau poste, ou évolution du poste", choices
=(), required
=False)
37 def __init__(self
, *args
, **kwargs
):
38 """ Mise à jour dynamique du contenu du menu des postes.
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,
46 super(PosteForm
, self
).__init__(*args
, **kwargs
)
47 self
.fields
['poste'].choices
= self
._poste_choices()
49 def _poste_choices(self
):
50 """ Menu déroulant pour les postes.
52 Constitué des postes de dae et des postes de rh_v1 qui n'ont pas
53 d'équivalent dans dae.
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
)
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
],
67 class PosteFinancementForm(forms
.ModelForm
):
68 """ Formulaire des sources de financement pour un poste. """
70 model
= dae
.PosteFinancement
71 fields
= ('type', 'montant', 'pourcentage', 'commentaire')