d9487b8d3d014017e26e7c1b0333e2530ee8eccb
2 # -*- encoding: utf-8 -*-
4 from django
.db
import models
5 from django
.db
.models
import Q
6 from utils
import get_employe_from_user
7 from workflow
import dae_groupes
, \
9 grp_directeurs_bureau
, \
14 grp_haute_direction
, \
15 grp_service_utilisateurs
, \
19 class SecurityManager(models
.Manager
):
21 prefixe_service
= None
22 prefixe_implantation
= None
24 def ma_region_ou_service(self
, user
):
26 Filtrage des postes en fonction du user connecté (region / service)
27 On s'intéresse aussi au groupe auquel appartient le user car certains groupes
30 employe
= get_employe_from_user(user
)
32 ############################################
34 ############################################
36 q
= Q(**{ self
.prefixe_implantation
: employe
.implantation
.region
})
39 if self
.prefixe_service
and grp_service_utilisateurs
in user
.groups
.all():
40 q
= q |
Q(**{ self
.prefixe_service
: employe
.service
})
42 liste
= self
.get_query_set().filter(q
)
44 ############################################
46 ############################################
47 if grp_accior
in user
.groups
.all():
48 liste
= self
.get_query_set().all()
50 ############################################
52 ############################################
53 if grp_abf
in user
.groups
.all():
54 liste
= self
.get_query_set().all()
56 ############################################
57 # TRAITEMENT HAUTE DIRECTION
58 ############################################
59 if grp_haute_direction
in user
.groups
.all():
60 liste
= self
.get_query_set().all()
62 ############################################
64 ############################################
65 if grp_drh
in user
.groups
.all() or grp_drh2
in user
.groups
.all():
66 liste
= self
.get_query_set().all()
69 liste
= self
.get_query_set().all()
74 class PosteManager(SecurityManager
):
76 Chargement de tous les objets FK existants sur chaque QuerySet.
78 prefixe_service
= "service"
79 prefixe_implantation
= "implantation__region"
81 def ma_region_ou_service(self
, user
):
82 return super(PosteManager
, self
).ma_region_ou_service(user
).filter(actif
=True)
84 def get_query_set(self
):
89 'implantation.bureau_rattachement',
97 return super(PosteManager
, self
).get_query_set() \
98 .select_related(*fkeys
).all()
101 class DossierManager(SecurityManager
):
102 prefixe_service
= "poste__service"
103 prefixe_implantation
= "poste__implantation__region"
105 def get_query_set(self
):
109 return super(DossierManager
, self
).get_query_set() \
110 .select_related(*fkeys
).all()
112 def ma_region_ou_service(self
, user
):
113 return super(DossierManager
, self
).ma_region_ou_service(user
).filter(poste__actif
=True)
116 class PosteComparaisonManager(SecurityManager
):
117 use_for_related_fields
= True
118 prefixe_implantation
= "implantation__region"
120 class DossierComparaisonManager(SecurityManager
):
121 use_for_related_fields
= True
122 prefixe_implantation
= "implantation__region"