1 # -*- encoding: utf-8 -*-
2 from django
import forms
4 from datamaster_modeles
import models
as ref
6 from dae
import models
as dae
7 from rh_v1
import models
as rh
10 class PosteForm(forms
.ModelForm
):
11 """ Formulaire des postes. """
14 fields
= ('poste', 'implantation', 'type_poste', 'service', 'nom',
15 'responsable', 'statut_residence', 'mise_a_disposition',
16 'appel', 'date_debut', 'date_fin', 'actif',
17 'regime_travail', 'regime_travail_nb_heure_semaine',
18 'classement_min', 'classement_max',
19 'valeur_point_min', 'valeur_point_max',
20 'salaire_min', 'salaire_max', 'indemn_min', 'indemn_max',
21 'autre_min', 'autre_max', 'devise_comparaison',
22 'comp_locale_min', 'comp_locale_max',
23 'comp_universite_min', 'comp_universite_max',
24 'comp_fonctionpub_min', 'comp_fonctionpub_max',
25 'comp_ong_min', 'comp_ong_max',
26 'comp_autre_min', 'comp_autre_max',)
27 widgets
= dict(statut_residence
=forms
.RadioSelect(),
28 appel
=forms
.RadioSelect())
30 # La liste des choix est laissée vide. Voir __init__ pour la raison.
31 poste
= forms
.ChoiceField(choices
=(), required
=False)
33 def __init__(self
, *args
, **kwargs
):
34 """ Mise à jour dynamique du contenu du menu des postes.
36 Si on ne met le menu à jour de cette façon, à chaque instantiation du
37 formulaire, son contenu est mis en cache par le système et il ne
38 reflète pas les changements apportés par les ajouts, modifications,
42 super(PosteForm
, self
).__init__(*args
, **kwargs
)
43 self
.fields
['poste'].choices
= self
._poste_choices()
45 def _poste_choices(self
):
46 """ Menu déroulant pour les postes.
48 Constitué des postes de dae et des postes de rh_v1 qui n'ont pas
49 d'équivalent dans dae.
52 dae_
= dae
.Poste
.objects
.filter(id_rh__isnull
=True)
53 copies
= dae
.Poste
.objects
.exclude(id_rh__isnull
=True)
54 id_copies
= [p
.id_rh_id
for p
in copies
.all()]
55 rhv1
= rh
.Poste
.objects
.exclude(id__in
=id_copies
)
57 return [('', 'Nouveau poste')] + \
58 sorted([('dae-%s' % p
.id, unicode(p
)) for p
in dae_ | copies
] +
59 [('rh-%s' % p
.id, unicode(p
)) for p
in rhv1
],