1 # -*- encoding: utf-8 -*-
3 from datetime
import date
5 from ajax_select
.fields
import AutoCompleteSelectField
6 from auf
.django
.references
import models
as ref
7 from django
import forms
8 from django
.db
.models
import Min
10 from project
.groups
import get_employe_from_user
, is_user_dans_region
11 from project
.rh
import models
as rh
14 class ClassementHistoriqueForm(forms
.ModelForm
):
17 model
= rh
.RHDossierClassementRecord
20 class AjaxSelect(object):
25 'jquery-autocomplete/jquery.autocomplete.css',
30 'js/jquery-1.5.1.min.js',
31 'jquery-autocomplete/jquery.autocomplete.js',
35 class FormDate(object):
37 def clean_date_fin(self
):
38 date_fin
= self
.cleaned_data
['date_fin']
41 date_debut
= self
.cleaned_data
['date_debut']
42 if date_fin
< date_debut
:
43 raise forms
.ValidationError(
44 u
"La date de fin est antérieure à la date de début"
49 class DossierForm(forms
.ModelForm
, FormDate
):
55 class ContratForm(forms
.ModelForm
, FormDate
):
61 class AyantDroitForm(forms
.ModelForm
, AjaxSelect
):
63 # ne fonctionne pas dans un inline
65 def __init__(self
, *args
, **kwargs
):
66 super(AyantDroitForm
, self
).__init__(*args
, **kwargs
)
67 self
.fields
['date_naissance'].widget
= forms
.widgets
.DateInput()
73 class EmployeAdminForm(forms
.ModelForm
, AjaxSelect
):
74 nationalite
= AutoCompleteSelectField(
75 'pays', help_text
="Taper le nom ou le code du pays", required
=False
77 pays
= AutoCompleteSelectField(
78 'pays', help_text
="Taper le nom ou le code du pays", required
=False
84 def __init__(self
, *args
, **kwargs
):
85 super(EmployeAdminForm
, self
).__init__(*args
, **kwargs
)
86 self
.fields
['date_naissance'].widget
= forms
.widgets
.DateInput()
89 class ResponsableInlineForm(forms
.ModelForm
):
90 employes_actifs
= rh
.Employe
.objects
.actifs().distinct()
91 employe
= forms
.ModelChoiceField(queryset
=employes_actifs
)
94 model
= rh
.ResponsableImplantation
97 class MasseSalarialeForm(forms
.Form
):
98 zone_administrative
= forms
.ModelChoiceField(
99 label
=u
'Région', queryset
=ref
.ZoneAdministrative
.objects
.all(),
102 implantation
= forms
.ModelChoiceField(
103 label
=u
'Implantation', queryset
=ref
.Implantation
.objects
.all(),
107 def __init__(self
, user
, *args
, **kwargs
):
108 super(MasseSalarialeForm
, self
).__init__(*args
, **kwargs
)
109 min_date
= rh
.Remuneration
.objects \
110 .aggregate(Min('date_debut'))['date_debut__min']
113 min_date
.year
if min_date
else 1997,
116 self
.fields
['annee'] = forms
.TypedChoiceField(
117 label
='Année', choices
=zip(years
, years
), coerce=int,
120 if is_user_dans_region(user
):
121 employe
= get_employe_from_user(user
)
122 self
.fields
['zone_administrative'].queryset
= \
123 ref
.ZoneAdministrative
.objects
.filter(
124 code
=employe
.implantation
.zone_administrative
.code
126 self
.fields
['implantation'].queryset
= \
127 ref
.Implantation
.objects
.filter(
128 zone_administrative
=(
129 employe
.implantation
.zone_administrative