1 # -*- encoding: utf-8 -*-
2 from datetime
import date
4 from django
.contrib
.auth
.decorators
import login_required
5 from django
.utils
.encoding
import smart_str
6 from django
.shortcuts
import redirect
, render_to_response
, get_object_or_404
7 from django
.template
import RequestContext
9 from datamaster_modeles
import models
as ref
10 from project
.lib
import get_employe_from_id
12 from rh
import models
as rh
13 from rh
.lib
import calc_remun
18 """Profil personnel de l'employé - éditable"""
19 rc
= RequestContext(request
)
22 employe
= rc
['this_employe']
24 c
['user'] = request
.user
25 c
['employe'] = employe
26 return render_to_response('rh/profil.html', c
, rc
)
30 def employes_liste(request
):
31 """Liste des employés."""
33 employes
= rh
.Employe
.objects \
34 .filter(actif
=True, supprime
=False) \
35 .filter(dossiers__actif
=True, dossiers__supprime
=False) \
36 .exclude(dossiers__date_debut__gt
=today
) \
37 .exclude(dossiers__date_fin__lt
=today
) \
43 return render_to_response('rh/employes_liste.html', c
, RequestContext(request
))
46 def employe(request
, id):
47 """Information publique sur un employé."""
49 employe
= rh
.Employe
.objects
.get(pk
=id)
51 employe
= rh
.Employe
.objects
.none()
56 return render_to_response('rh/employe.html', c
, RequestContext(request
))
62 def rapports_poste(request
):
64 lookup_params
= dict(request
.GET
.items())
68 for key
, value
in lookup_params
.items():
69 if not isinstance(key
, str):
70 # 'key' will be used as a keyword argument later, so Python
71 # requires it to be a string.
72 del lookup_params
[key
]
73 lookup_params
[smart_str(key
)] = value
77 del lookup_params
[key
]
79 postes
= rh
.Poste
.actifs
.select_related('implantation').all()
80 postes
= postes
.filter(**lookup_params
)
82 poste_ids
= set([p
.pk
for p
in postes
])
84 dossiers
= rh
.Dossier
.objects
.select_related('poste', 'employe').filter(poste__in
=poste_ids
)
86 employes
= dict((d
.poste
.id, d
.employe
) for d
in dossiers
)
91 employe
= employes
.get(p
.id)
93 if comble
== 'c' and not employe
:
96 if comble
== 'n' and employe
:
104 line
['implantation'] = p
.implantation
.nom
106 line
['employe_id'] = employe
.id
107 line
['employe_nom'] = employe
.nom
108 line
['employe_prenom'] = employe
.prenom
111 'title': 'Rapport des postes',
115 return render_to_response('rh/rapports/postes.html', c
, RequestContext(request
))
118 def rapports_contrat(request
):
120 lookup_params
= dict(request
.GET
.items())
122 for key
, value
in lookup_params
.items():
123 if not isinstance(key
, str):
124 # 'key' will be used as a keyword argument later, so Python
125 # requires it to be a string.
126 del lookup_params
[key
]
127 lookup_params
[smart_str(key
)] = value
129 contrats
= rh
.Contrat
.objects
.select_related('dossier', 'dossier__poste', 'dossier__poste__implantation', 'type_contrat', 'dossier__employe').all()
130 contrats
= contrats
.filter(**lookup_params
)
133 'title': 'Rapport des contrats',
134 'contrats': contrats
,
137 return render_to_response('rh/rapports/contrats.html', c
, RequestContext(request
))
140 def rapports_remuneration(request
):
142 lookup_params
= dict(request
.GET
.items())
144 for key
, value
in lookup_params
.items():
145 if not isinstance(key
, str):
146 # 'key' will be used as a keyword argument later, so Python
147 # requires it to be a string.
148 del lookup_params
[key
]
149 lookup_params
[smart_str(key
)] = value
151 employes
= rh
.Employe
.objects
.all()
152 employes
= employes
.filter(**lookup_params
)
156 for employe
in employes
:
160 dossiers
= employe
.dossiers
.all()
165 for dossier
in dossiers
:
166 this_remun
, this_remun_sum
, this_remun_sum_euro
= calc_remun(dossier
)
168 for item
in this_remun
:
169 if item
not in remun
:
170 remun
[item
] = this_remun
[item
]
172 remun
[item
][0] += this_remun
[item
][0]
173 remun
[item
][1] += this_remun
[item
][1]
175 remun_sum_euro
+= this_remun_sum_euro
177 line
['remun_sum_euro'] = remun_sum_euro
180 if r
== u
'Indemnité':
181 line
['Indemnite'] = remun
[r
][1]
183 line
[r
] = remun
[r
][1]
185 line
['id'] = employe
.id
186 line
['nom'] = employe
.nom
187 line
['prenom'] = employe
.prenom
191 'title': 'Rapport de remuneration',
195 return render_to_response('rh/rapports/remuneration.html', c
, RequestContext(request
))
197 def dossier_apercu(request
, dossier_id
):
199 'is_popup' : request
.GET
.get('_popup', False),
200 'dossier' : get_object_or_404(rh
.Dossier
, pk
=dossier_id
)
203 return render_to_response('admin/rh/dossier/apercu.html', c
, RequestContext(request
))