1 # -*- encoding: utf-8 -*
3 from project
import groups
4 from project
.groups
import get_employe_from_user
5 from project
.decorators
import in_drh_or_admin
7 from rh
import models
as rh
9 def user_gere_obj_de_sa_region(user
):
10 user_groups
= [g
.name
for g
in user
.groups
.all()]
11 if groups
.CORRESPONDANT_RH
in user_groups
or \
12 groups
.ADMINISTRATEURS
in user_groups
or \
13 groups
.DIRECTEUR_DE_BUREAU
in user_groups
:
17 def user_can_add_obj(user
):
18 if user_gere_obj_de_sa_region(user
) or \
19 in_drh_or_admin(user
):
23 def user_can_change_obj(user
, obj
):
24 if in_drh_or_admin(user
) or (
25 user_gere_obj_de_sa_region(user
) and \
26 obj_in_region_user(user
, obj
)):
30 def user_can_delete_obj(user
, obj
):
31 return in_drh_or_admin(user
)
34 def obj_in_region_user(user
, obj
):
35 region_user
= get_region_user(user
)
36 if isinstance(obj
, rh
.Employe
):
38 if isinstance(obj
, rh
.Dossier
):
40 if isinstance(obj
, rh
.Poste
):
41 return obj
.implantation
.zone_administrative
== region_user
44 def get_region_user(user
):
45 # gère actuellement qu'une seule région par user
46 employe
= get_employe_from_user(user
)
47 region_user
= employe
.implantation
.zone_administrative