Commit | Line | Data |
---|---|---|
5d680e84 | 1 | # -*- encoding: utf-8 -*- |
ce110fb9 | 2 | |
5d680e84 NC |
3 | from django import forms |
4 | ||
5 | from datamaster_modeles import models as ref | |
6 | ||
7 | from dae import models as dae | |
8 | from rh_v1 import models as rh | |
9 | ||
10 | ||
11 | class 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 | ||
67 | class 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') |