4247d43958897de75491623dfc16d6b8bc793887
2 # -*- encoding: utf-8 -*-
4 from django
.db
import models
5 from django
.db
.models
import Q
6 from auf
.django
.metadata
.managers
import NoDeleteManager
7 from utils
import get_employe_from_user
8 from workflow
import dae_groupes
, \
10 grp_directeurs_bureau
, \
15 grp_haute_direction
, \
16 grp_service_utilisateurs
, \
20 class SecurityManager(models
.Manager
):
22 prefixe_service
= None
23 prefixe_implantation
= None
25 def ma_region_ou_service(self
, user
):
27 Filtrage des postes en fonction du user connecté (region / service)
28 On s'intéresse aussi au groupe auquel appartient le user car certains groupes
31 employe
= get_employe_from_user(user
)
33 ############################################
35 ############################################
37 q
= Q(**{ self
.prefixe_implantation
: employe
.implantation
.region
})
40 if self
.prefixe_service
and grp_service_utilisateurs
in user
.groups
.all():
41 q
= q |
Q(**{ self
.prefixe_service
: employe
.service
})
43 liste
= self
.get_query_set().filter(q
)
45 ############################################
47 ############################################
48 if grp_accior
in user
.groups
.all():
49 liste
= self
.get_query_set().all()
51 ############################################
53 ############################################
54 if grp_abf
in user
.groups
.all():
55 liste
= self
.get_query_set().all()
57 ############################################
58 # TRAITEMENT HAUTE DIRECTION
59 ############################################
60 if grp_haute_direction
in user
.groups
.all():
61 liste
= self
.get_query_set().all()
63 ############################################
65 ############################################
66 if grp_drh
in user
.groups
.all() or grp_drh2
in user
.groups
.all():
67 liste
= self
.get_query_set().all()
70 liste
= self
.get_query_set().all()
75 class PosteManager(SecurityManager
, NoDeleteManager
):
77 Chargement de tous les objets FK existants sur chaque QuerySet.
79 prefixe_service
= "service"
80 prefixe_implantation
= "implantation__region"
82 def ma_region_ou_service(self
, user
):
83 return super(PosteManager
, self
).ma_region_ou_service(user
).filter(actif
=True)
85 def get_query_set(self
):
90 #'implantation.bureau_rattachement',
98 return super(PosteManager
, self
).get_query_set() \
99 .select_related(*fkeys
).all()
102 class DossierManager(SecurityManager
, NoDeleteManager
):
103 prefixe_service
= "poste__service"
104 prefixe_implantation
= "poste__implantation__region"
106 def get_query_set(self
):
111 return super(DossierManager
, self
).get_query_set() \
112 .select_related(*fkeys
).all()
114 def ma_region_ou_service(self
, user
):
115 return super(DossierManager
, self
).ma_region_ou_service(user
).filter(poste__actif
=True)
118 class PosteComparaisonManager(SecurityManager
):
119 use_for_related_fields
= True
120 prefixe_implantation
= "implantation__region"
122 class DossierComparaisonManager(SecurityManager
):
123 use_for_related_fields
= True
124 prefixe_implantation
= "implantation__region"