projets
/
auf_rh_dae.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'hotfix/another_fix_for_comparison' into dev
[auf_rh_dae.git]
/
project
/
permissions.py
diff --git
a/project/permissions.py
b/project/permissions.py
index
0aaf7fb
..
d722826
100644
(file)
--- a/
project/permissions.py
+++ b/
project/permissions.py
@@
-1,16
+1,17
@@
# -*- encoding: utf-8 -*
from project import groups
# -*- encoding: utf-8 -*
from project import groups
-from project.groups import get_employe_from_user
+from project.groups import get_employe_from_user, get_zones_from_user
from project.decorators import in_drh_or_admin
from project.decorators import in_drh_or_admin
+from auf.django.references import models as ref
from rh import models as rh
def user_gere_obj_de_sa_region(user):
from rh import models as rh
def user_gere_obj_de_sa_region(user):
- user_groups = user.groups.all()
- if groups.grp_correspondants_rh in user_groups or \
- groups.grp_administrateurs in user_groups or \
- groups.grp_directeurs_bureau in user_groups:
+ user_groups = [g.name for g in user.groups.all()]
+ if groups.CORRESPONDANT_RH in user_groups or \
+ groups.ADMINISTRATEURS in user_groups or \
+ groups.DIRECTEUR_DE_BUREAU in user_groups:
return True
return False
return True
return False
@@
-20,6
+21,12
@@
def user_can_add_obj(user):
return True
return False
return True
return False
+def user_can_list_obj(user):
+ if user_gere_obj_de_sa_region(user) or \
+ in_drh_or_admin(user):
+ return True
+ return False
+
def user_can_change_obj(user, obj):
if in_drh_or_admin(user) or (
user_gere_obj_de_sa_region(user) and \
def user_can_change_obj(user, obj):
if in_drh_or_admin(user) or (
user_gere_obj_de_sa_region(user) and \
@@
-30,19
+37,15
@@
def user_can_change_obj(user, obj):
def user_can_delete_obj(user, obj):
return in_drh_or_admin(user)
def user_can_delete_obj(user, obj):
return in_drh_or_admin(user)
+
# helpers
def obj_in_region_user(user, obj):
# helpers
def obj_in_region_user(user, obj):
- region_user = get_region_user(user)
+ zones = get_zones_from_user(user)
if isinstance(obj, rh.Employe):
return True
if isinstance(obj, rh.Dossier):
return True
if isinstance(obj, rh.Poste):
if isinstance(obj, rh.Employe):
return True
if isinstance(obj, rh.Dossier):
return True
if isinstance(obj, rh.Poste):
- return obj.implantation.region == region_user
+ return obj.implantation.zone_administrative in zones
return False
return False
-def get_region_user(user):
- # gère actuellement qu'une seule région par user
- employe = get_employe_from_user(user)
- region_user = employe.implantation.region
- return region_user