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
.groups
import grp_administrateurs
, \
12 grp_directeurs_bureau
, \
17 grp_haute_direction
, \
18 grp_service_utilisateurs
, \
22 class SecurityManager(models
.Manager
):
24 prefixe_service
= None
25 prefixe_implantation
= None
27 def ma_region_ou_service(self
, user
):
29 Filtrage des postes en fonction du user connecté (region / service)
30 On s'intéresse aussi au groupe auquel appartient le user car certains groupes
33 employe
= get_employe_from_user(user
)
35 ############################################
37 ############################################
39 q
= Q(**{ self
.prefixe_implantation
: employe
.implantation
.region
})
42 if self
.prefixe_service
and grp_service_utilisateurs
in user
.groups
.all():
43 q
= q |
Q(**{ self
.prefixe_service
: employe
.service
})
45 liste
= self
.get_query_set().filter(q
)
47 ############################################
49 ############################################
50 if grp_accior
in user
.groups
.all():
51 liste
= self
.get_query_set().all()
53 ############################################
55 ############################################
56 if grp_abf
in user
.groups
.all():
57 liste
= self
.get_query_set().all()
59 ############################################
60 # TRAITEMENT HAUTE DIRECTION
61 ############################################
62 if grp_haute_direction
in user
.groups
.all():
63 liste
= self
.get_query_set().all()
65 ############################################
67 ############################################
68 if grp_drh
in user
.groups
.all() or grp_drh2
in user
.groups
.all():
69 liste
= self
.get_query_set().all()
72 liste
= self
.get_query_set().all()
77 class PosteManager(SecurityManager
, NoDeleteManager
):
79 Chargement de tous les objets FK existants sur chaque QuerySet.
81 prefixe_service
= "service"
82 prefixe_implantation
= "implantation__region"
85 q_actif
= Q(date_fin__gt
=datetime
.datetime
.now()) |
Q(date_fin__isnull
=True)
86 return super(PosteManager
, self
).get_query_set().filter(q_actif
)
88 def ma_region_ou_service(self
, user
):
89 return super(PosteManager
, self
).ma_region_ou_service(user
)
91 def get_query_set(self
):
96 #'implantation.bureau_rattachement',
104 return super(PosteManager
, self
).get_query_set() \
105 .select_related(*fkeys
).all()
108 class DossierManager(SecurityManager
, NoDeleteManager
):
109 prefixe_service
= "poste__service"
110 prefixe_implantation
= "poste__implantation__region"
112 def get_query_set(self
):
117 return super(DossierManager
, self
).get_query_set() \
118 .select_related(*fkeys
).all()
120 def ma_region_ou_service(self
, user
):
121 return super(DossierManager
, self
).ma_region_ou_service(user
)
124 class PosteComparaisonManager(SecurityManager
):
125 use_for_related_fields
= True
126 prefixe_implantation
= "implantation__region"
129 class DossierComparaisonManager(SecurityManager
):
130 use_for_related_fields
= True
131 prefixe_implantation
= "implantation__region"
134 class DeviseManager(NoDeleteManager
):
137 class ServiceManager(NoDeleteManager
):
140 class TypeRemunerationManager(NoDeleteManager
):