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"
83 return super(PosteManager
, self
).get_query_set().filter(date_fin__gt
=datetime
.datetime
.now())
85 def ma_region_ou_service(self
, user
):
86 return super(PosteManager
, self
).ma_region_ou_service(user
)
88 def get_query_set(self
):
93 #'implantation.bureau_rattachement',
101 return super(PosteManager
, self
).get_query_set() \
102 .select_related(*fkeys
).all()
105 class DossierManager(SecurityManager
, NoDeleteManager
):
106 prefixe_service
= "poste__service"
107 prefixe_implantation
= "poste__implantation__region"
109 def get_query_set(self
):
114 return super(DossierManager
, self
).get_query_set() \
115 .select_related(*fkeys
).all()
117 def ma_region_ou_service(self
, user
):
118 return super(DossierManager
, self
).ma_region_ou_service(user
)
121 class PosteComparaisonManager(SecurityManager
):
122 use_for_related_fields
= True
123 prefixe_implantation
= "implantation__region"
126 class DossierComparaisonManager(SecurityManager
):
127 use_for_related_fields
= True
128 prefixe_implantation
= "implantation__region"
131 class DeviseManager(NoDeleteManager
):
133 def get_query_set(self
):
134 return super(DeviseManager
, self
).get_query_set().filter(archive
=False)