591ffec3c6cbc294a1d6debcc083cb153b5cb21f
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()
71 class PosteManager(SecurityManager
):
73 Chargement de tous les objets FK existants sur chaque QuerySet.
75 prefixe_service
= "service"
76 prefixe_implantation
= "implantation__region"
78 def ma_region_ou_service(self
, user
):
79 return super(PosteManager
, self
).ma_region_ou_service(user
).filter(actif
=True)
81 def get_query_set(self
):
86 'implantation.bureau_rattachement',
94 return super(PosteManager
, self
).get_query_set() \
95 .select_related(*fkeys
).all()
98 class DossierManager(SecurityManager
):
99 prefixe_service
= "poste__service"
100 prefixe_implantation
= "poste__implantation__region"
102 def get_query_set(self
):
106 return super(DossierManager
, self
).get_query_set() \
107 .select_related(*fkeys
).all()
109 def ma_region_ou_service(self
, user
):
110 return super(DossierManager
, self
).ma_region_ou_service(user
).filter(poste__actif
=True)
113 class PosteComparaisonManager(SecurityManager
):
114 use_for_related_fields
= True
115 prefixe_implantation
= "implantation__region"
117 class DossierComparaisonManager(SecurityManager
):
118 use_for_related_fields
= True
119 prefixe_implantation
= "implantation__region"