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
11 from project
.permissions
import user_gere_obj_de_sa_region
12 from project
.rh
import models
as rh
15 class AjaxSelect(object):
20 'jquery-autocomplete/jquery.autocomplete.css',
25 'js/jquery-1.5.1.min.js',
26 'jquery-autocomplete/jquery.autocomplete.js',
30 class FormDate(object):
32 def clean_date_fin(self
):
33 date_fin
= self
.cleaned_data
['date_fin']
36 date_debut
= self
.cleaned_data
['date_debut']
37 if date_fin
< date_debut
:
38 raise forms
.ValidationError(
39 u
"La date de fin est antérieure à la date de début"
44 class DossierForm(forms
.ModelForm
, FormDate
):
50 class ContratForm(forms
.ModelForm
, FormDate
):
56 class AyantDroitForm(forms
.ModelForm
, AjaxSelect
):
58 # ne fonctionne pas dans un inline
60 def __init__(self
, *args
, **kwargs
):
61 super(AyantDroitForm
, self
).__init__(*args
, **kwargs
)
62 self
.fields
['date_naissance'].widget
= forms
.widgets
.DateInput()
68 class EmployeAdminForm(forms
.ModelForm
, AjaxSelect
):
69 nationalite
= AutoCompleteSelectField(
70 'pays', help_text
="Taper le nom ou le code du pays", required
=False
72 pays
= AutoCompleteSelectField(
73 'pays', help_text
="Taper le nom ou le code du pays", required
=False
79 def __init__(self
, *args
, **kwargs
):
80 super(EmployeAdminForm
, self
).__init__(*args
, **kwargs
)
81 self
.fields
['date_naissance'].widget
= forms
.widgets
.DateInput()
84 class ResponsableInlineForm(forms
.ModelForm
):
85 employes_actifs
= rh
.Employe
.objects
.actifs()
86 employe
= forms
.ModelChoiceField(queryset
=employes_actifs
)
89 model
= rh
.ResponsableImplantation
92 class MasseSalarialeForm(forms
.Form
):
93 region
= forms
.ModelChoiceField(
94 label
=u
'Région', queryset
=ref
.Region
.objects
.all(), required
=False
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 user_gere_obj_de_sa_region(user
):
115 employe
= get_employe_from_user(user
)
116 self
.fields
['region'].queryset
= ref
.Region
.objects
.filter(
117 id=employe
.implantation
.region
.id
119 self
.fields
['implantation'].queryset
= \
120 ref
.Implantation
.objects
.filter(
121 region
=employe
.implantation
.region