1 # -*- encoding: utf-8 -*
3 from django
.core
.cache
import cache
5 from project
import groups
6 from project
.groups
import get_zones_from_user
7 from project
.decorators
import in_drh_or_admin
9 from rh
import models
as rh
12 def get_user_groupnames(user
):
13 key
= "get_user_groupnames_%s" % user
.id
14 group_names
= cache
.get(key
, None)
15 if group_names
is not None:
16 return group_names
.split(',')
17 group_names
= [g
.name
for g
in user
.groups
.all()]
18 cache
.set(key
, ",".join(group_names
))
22 def user_gere_obj_de_sa_region(user
):
23 key
= "user_gere_obj_de_sa_region_%s" % user
.id
24 granted
= cache
.get(key
, None)
25 if granted
is not None:
28 user_groups
= [g
.name
for g
in user
.groups
.all()]
29 if groups
.CORRESPONDANT_RH
in user_groups
or \
30 groups
.ADMINISTRATEURS
in user_groups
or \
31 groups
.DIRECTEUR_DE_BUREAU
in user_groups
:
35 cache
.set(key
, granted
)
39 def user_can_add_obj(user
):
40 if user_gere_obj_de_sa_region(user
) or \
41 in_drh_or_admin(user
):
46 def user_can_list_obj(user
):
47 if user_gere_obj_de_sa_region(user
) or \
48 in_drh_or_admin(user
):
53 def user_can_change_obj(user
, obj
):
54 if in_drh_or_admin(user
) or (
55 user_gere_obj_de_sa_region(user
) and
56 obj_in_region_user(user
, obj
)):
61 def user_can_delete_obj(user
, obj
):
62 return in_drh_or_admin(user
)
66 def obj_in_region_user(user
, obj
):
67 zones
= get_zones_from_user(user
)
68 if isinstance(obj
, rh
.Employe
):
70 if isinstance(obj
, rh
.Dossier
):
72 if isinstance(obj
, rh
.Poste
):
73 return obj
.implantation
.zone_administrative
in zones