2 # -*- encoding: utf-8 -*-
5 from django
.db
import models
6 from django
.db
.models
import Q
7 from auf
.django
.metadata
.managers
import NoDeleteManager
8 from utils
import get_employe_from_user
9 from workflow
import dae_groupes
, \
10 grp_administrateurs
, \
11 grp_directeurs_bureau
, \
16 grp_haute_direction
, \
17 grp_service_utilisateurs
, \
21 class SecurityManager(models
.Manager
):
23 prefixe_service
= None
24 prefixe_implantation
= None
26 def ma_region_ou_service(self
, user
):
28 Filtrage des postes en fonction du user connecté (region / service)
29 On s'intéresse aussi au groupe auquel appartient le user car certains groupes
32 employe
= get_employe_from_user(user
)
34 ############################################
36 ############################################
38 q
= Q(**{ self
.prefixe_implantation
: employe
.implantation
.region
})
41 if self
.prefixe_service
and grp_service_utilisateurs
in user
.groups
.all():
42 q
= q |
Q(**{ self
.prefixe_service
: employe
.service
})
44 liste
= self
.get_query_set().filter(q
)
46 ############################################
48 ############################################
49 if grp_accior
in user
.groups
.all():
50 liste
= self
.get_query_set().all()
52 ############################################
54 ############################################
55 if grp_abf
in user
.groups
.all():
56 liste
= self
.get_query_set().all()
58 ############################################
59 # TRAITEMENT HAUTE DIRECTION
60 ############################################
61 if grp_haute_direction
in user
.groups
.all():
62 liste
= self
.get_query_set().all()
64 ############################################
66 ############################################
67 if grp_drh
in user
.groups
.all() or grp_drh2
in user
.groups
.all():
68 liste
= self
.get_query_set().all()
71 liste
= self
.get_query_set().all()
76 class PosteManager(SecurityManager
, NoDeleteManager
):
78 Chargement de tous les objets FK existants sur chaque QuerySet.
80 prefixe_service
= "service"
81 prefixe_implantation
= "implantation__region"
84 q_actif
= Q(date_fin__gt
=datetime
.datetime
.now()) |
Q(date_fin__isnull
=True)
85 return super(PosteManager
, self
).get_query_set().filter(q_actif
)
87 def ma_region_ou_service(self
, user
):
88 return super(PosteManager
, self
).ma_region_ou_service(user
)
90 def get_query_set(self
):
95 #'implantation.bureau_rattachement',
103 return super(PosteManager
, self
).get_query_set() \
104 .select_related(*fkeys
).all()
107 class DossierManager(SecurityManager
, NoDeleteManager
):
108 prefixe_service
= "poste__service"
109 prefixe_implantation
= "poste__implantation__region"
111 def get_query_set(self
):
116 return super(DossierManager
, self
).get_query_set() \
117 .select_related(*fkeys
).all()
119 def ma_region_ou_service(self
, user
):
120 return super(DossierManager
, self
).ma_region_ou_service(user
)
123 class PosteComparaisonManager(SecurityManager
):
124 use_for_related_fields
= True
125 prefixe_implantation
= "implantation__region"
128 class DossierComparaisonManager(SecurityManager
):
129 use_for_related_fields
= True
130 prefixe_implantation
= "implantation__region"
133 class DeviseManager(NoDeleteManager
):
135 def get_query_set(self
):
136 return super(DeviseManager
, self
).get_query_set().filter(archive
=False)