Commit | Line | Data |
---|---|---|
5d680e84 NC |
1 | # -*- encoding: utf-8 -*- |
2 | from django import forms | |
3 | ||
4 | from datamaster_modeles import models as ref | |
5 | ||
6 | from dae import models as dae | |
7 | from rh_v1 import models as rh | |
8 | ||
9 | ||
10 | class PosteForm(forms.ModelForm): | |
11 | """ Formulaire des postes. """ | |
12 | class Meta: | |
13 | model = dae.Poste | |
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()) | |
29 | ||
30 | # La liste des choix est laissée vide. Voir __init__ pour la raison. | |
31 | poste = forms.ChoiceField(choices=(), required=False) | |
32 | ||
33 | def __init__(self, *args, **kwargs): | |
34 | """ Mise à jour dynamique du contenu du menu des postes. | |
35 | ||
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, | |
39 | etc... | |
40 | ||
41 | """ | |
42 | super(PosteForm, self).__init__(*args, **kwargs) | |
43 | self.fields['poste'].choices = self._poste_choices() | |
44 | ||
45 | def _poste_choices(self): | |
46 | """ Menu déroulant pour les postes. | |
47 | ||
48 | Constitué des postes de dae et des postes de rh_v1 qui n'ont pas | |
49 | d'équivalent dans dae. | |
50 | ||
51 | """ | |
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) | |
56 | ||
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], | |
60 | key=lambda t: t[1]) | |
3ed49093 NC |
61 | |
62 | ||
63 | class PosteFinancementForm(forms.ModelForm): | |
64 | """ Formulaire des sources de financement pour un poste. """ | |
65 | class Meta: | |
66 | model = dae.PosteFinancement | |
67 | fields = ('type', 'montant', 'pourcentage', 'commentaire') |