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 AjaxSelect(object):
19 'jquery-autocomplete/jquery.autocomplete.css',
24 'js/jquery-1.5.1.min.js',
25 'jquery-autocomplete/jquery.autocomplete.js',
29 class FormDate(object):
31 def clean_date_fin(self
):
32 date_fin
= self
.cleaned_data
['date_fin']
35 date_debut
= self
.cleaned_data
['date_debut']
36 if date_fin
< date_debut
:
37 raise forms
.ValidationError(
38 u
"La date de fin est antérieure à la date de début"
43 class DossierForm(forms
.ModelForm
, FormDate
):
49 class ContratForm(forms
.ModelForm
, FormDate
):
55 class AyantDroitForm(forms
.ModelForm
, AjaxSelect
):
57 # ne fonctionne pas dans un inline
59 def __init__(self
, *args
, **kwargs
):
60 super(AyantDroitForm
, self
).__init__(*args
, **kwargs
)
61 self
.fields
['date_naissance'].widget
= forms
.widgets
.DateInput()
67 class EmployeAdminForm(forms
.ModelForm
, AjaxSelect
):
68 nationalite
= AutoCompleteSelectField(
69 'pays', help_text
="Taper le nom ou le code du pays", required
=False
71 pays
= AutoCompleteSelectField(
72 'pays', help_text
="Taper le nom ou le code du pays", required
=False
78 def __init__(self
, *args
, **kwargs
):
79 super(EmployeAdminForm
, self
).__init__(*args
, **kwargs
)
80 self
.fields
['date_naissance'].widget
= forms
.widgets
.DateInput()
83 class ResponsableInlineForm(forms
.ModelForm
):
84 employes_actifs
= rh
.Employe
.objects
.actifs().distinct()
85 employe
= forms
.ModelChoiceField(queryset
=employes_actifs
)
88 model
= rh
.ResponsableImplantation
91 class MasseSalarialeForm(forms
.Form
):
92 zone_administrative
= forms
.ModelChoiceField(
93 label
=u
'Région', queryset
=ref
.ZoneAdministrative
.objects
.all(),
96 implantation
= forms
.ModelChoiceField(
97 label
=u
'Implantation', queryset
=ref
.Implantation
.objects
.all(),
101 def __init__(self
, user
, *args
, **kwargs
):
102 super(MasseSalarialeForm
, self
).__init__(*args
, **kwargs
)
103 min_date
= rh
.Remuneration
.objects \
104 .aggregate(Min('date_debut'))['date_debut__min']
107 min_date
.year
if min_date
else 1997,
110 self
.fields
['annee'] = forms
.TypedChoiceField(
111 label
='Année', choices
=zip(years
, years
), coerce=int,
114 if is_user_dans_region(user
):
115 employe
= get_employe_from_user(user
)
116 self
.fields
['zone_administrative'].queryset
= \
117 ref
.ZoneAdministrative
.objects
.filter(
118 code
=employe
.implantation
.zone_administrative
.code
120 self
.fields
['implantation'].queryset
= \
121 ref
.Implantation
.objects
.filter(
122 zone_administrative
=(
123 employe
.implantation
.zone_administrative