1 # -*- encoding: utf-8 -*-
5 from django
.db
import models
6 from django
.db
.models
import Q
8 from auf
.django
.metadata
.managers
import NoDeleteManager
10 from project
.utils
import get_employe_from_user
11 from project
.rh
.groups
import dae_groupes
, \
12 grp_administrateurs
, \
13 grp_directeurs_bureau
, \
18 grp_haute_direction
, \
19 grp_service_utilisateurs
, \
23 class SecurityManager(models
.Manager
):
25 prefixe_service
= None
26 prefixe_implantation
= None
28 def ma_region_ou_service(self
, user
):
30 Filtrage des postes en fonction du user connecté (region / service)
31 On s'intéresse aussi au groupe auquel appartient le user car certains groupes
34 employe
= get_employe_from_user(user
)
36 ############################################
38 ############################################
40 q
= Q(**{ self
.prefixe_implantation
: employe
.implantation
.region
})
43 if self
.prefixe_service
and grp_service_utilisateurs
in user
.groups
.all():
44 q
= q |
Q(**{ self
.prefixe_service
: employe
.service
})
46 liste
= self
.get_query_set().filter(q
)
48 ############################################
50 ############################################
51 if grp_accior
in user
.groups
.all():
52 liste
= self
.get_query_set().all()
54 ############################################
56 ############################################
57 if grp_abf
in user
.groups
.all():
58 liste
= self
.get_query_set().all()
60 ############################################
61 # TRAITEMENT HAUTE DIRECTION
62 ############################################
63 if grp_haute_direction
in user
.groups
.all():
64 liste
= self
.get_query_set().all()
66 ############################################
68 ############################################
69 if grp_drh
in user
.groups
.all() or grp_drh2
in user
.groups
.all():
70 liste
= self
.get_query_set().all()
73 liste
= self
.get_query_set().all()
78 class PosteManager(SecurityManager
, NoDeleteManager
):
80 Chargement de tous les objets FK existants sur chaque QuerySet.
82 prefixe_service
= "service"
83 prefixe_implantation
= "implantation__region"
86 q_actif
= Q(date_fin__gt
=datetime
.datetime
.now()) |
Q(date_fin__isnull
=True)
87 return super(PosteManager
, self
).get_query_set().filter(q_actif
)
89 def ma_region_ou_service(self
, user
):
90 return super(PosteManager
, self
).ma_region_ou_service(user
)
92 def get_query_set(self
):
97 #'implantation.bureau_rattachement',
105 return super(PosteManager
, self
).get_query_set() \
106 .select_related(*fkeys
).all()
109 class DossierManager(SecurityManager
, NoDeleteManager
):
110 prefixe_service
= "poste__service"
111 prefixe_implantation
= "poste__implantation__region"
113 def get_query_set(self
):
118 return super(DossierManager
, self
).get_query_set() \
119 .select_related(*fkeys
).all()
121 def ma_region_ou_service(self
, user
):
122 return super(DossierManager
, self
).ma_region_ou_service(user
)
125 class PosteComparaisonManager(SecurityManager
):
126 use_for_related_fields
= True
127 prefixe_implantation
= "implantation__region"
130 class DossierComparaisonManager(SecurityManager
):
131 use_for_related_fields
= True
132 prefixe_implantation
= "implantation__region"
135 class DeviseManager(NoDeleteManager
):
138 class ServiceManager(NoDeleteManager
):
141 class TypeRemunerationManager(NoDeleteManager
):