1 # -*- encoding: utf-8 -*-
3 from django
.db
.models
import Q
5 from project
import groups
6 from project
.rh
import models
as rh
9 class Responsable(object):
12 def get_query(self
, q
, request
):
14 return rh
.Poste
.objects
.none()
17 postes
= rh
.Poste
.objects
.filter(
19 Q(type_poste__nom__icontains
=q
) |
20 Q(rh_dossiers__employe__nom__icontains
=q
) |
21 Q(rh_dossiers__employe__prenom__icontains
=q
)
25 def format_result(self
, poste
):
27 filtre
= Q(poste
=poste
) & (
28 Q(poste__nom__icontains
=q
) |
Q(employe__nom__icontains
=q
) |
29 Q(employe__prenom__icontains
=q
)
31 dossiers
= rh
.Dossier
.objects
.filter(filtre
)
35 if len(dossiers
) == 1:
37 employe
= dossier
.employe
39 dossiers
= poste
.rh_dossiers
.all()
41 employe
= unicode(dossiers
[0].employe
)
44 return "[%s] %s (%s) (%s)" % (
45 poste
.implantation
.id, nom_poste
, poste
.id, employe
48 def format_item(self
, poste
):
50 the display of a currently selected object in the area below the
51 search box. html is OK
53 return self
.format_result(poste
)
55 def get_objects(self
, ids
):
57 given a list of ids, return the objects ordered as you would like
58 them on the admin page. this is for displaying the currently
59 selected items (in the case of a ManyToMany field)
61 return rh
.Poste
.objects
.filter(pk__in
=ids
)
64 class Dossier(object):
66 def get_query(self
, q
, request
):
67 employe
= groups
.get_employe_from_user(request
.user
)
68 prefixe_implantation
= 'poste__implantation'
70 q_recherche
= Q(poste__nom__icontains
=q
) | \
71 Q(poste__type_poste__nom__icontains
=q
) | \
72 Q(employe__nom__icontains
=q
) | \
73 Q(employe__prenom__icontains
=q
)
75 if groups
.is_user_dans_services_centraux(request
.user
):
76 q_place
= Q(**{prefixe_implantation
: employe
.implantation
})
79 prefixe_implantation
+ '__region': employe
.implantation
.region
82 user_groupes
= [g
.name
for g
in request
.user
.groups
.all()]
83 if groups
.DRH_NIVEAU_1
in user_groupes
:
84 q_filtre
= q_recherche
86 q_filtre
= q_place
& q_recherche
87 return rh
.Dossier
.objects
.filter(q_filtre
).distinct()
89 def format_result(self
, dossier
):
90 return dossier
.__unicode__()
92 def format_item(self
, dossier
):
94 the display of a currently selected object in the area below the
95 search box. html is OK
97 return self
.format_result(dossier
)
99 def get_objects(self
, ids
):
101 given a list of ids, return the objects ordered as you would like
102 them on the admin page. this is for displaying the currently
103 selected items (in the case of a ManyToMany field)
105 return rh
.Dossier
.objects
.filter(pk__in
=ids
)
110 def get_query(self
, q
, request
):
111 employe
= groups
.get_employe_from_user(request
.user
)
112 prefixe_implantation
= 'poste__implantation'
115 Q(poste__nom__icontains
=q
) | \
116 Q(poste__type_poste__nom__icontains
=q
)
118 if groups
.is_user_dans_services_centraux(request
.user
):
119 q_place
= Q(**{prefixe_implantation
: employe
.implantation
})
122 prefixe_implantation
+ '__region': employe
.implantation
.region
125 user_groupes
= [g
.name
for g
in request
.user
.groups
.all()]
126 if groups
.DRH_NIVEAU_1
in user_groupes
:
127 q_filtre
= q_recherche
129 q_filtre
= q_place
& q_recherche
130 return rh
.Dossier
.objects
.filter(q_filtre
).order_by('-date_debut')
132 def format_result(self
, dossier
):
133 annee
= dossier
.date_debut
.year
134 if dossier
.date_fin
is not None:
135 annee
= dossier
.date_fin
.year
136 return u
"[%s] %s %s" % (
137 dossier
.poste
.implantation
, annee
, dossier
.poste
.nom
140 def format_item(self
, dossier
):
142 the display of a currently selected object in the area below the
143 search box. html is OK
145 return self
.format_result(dossier
)
147 def get_objects(self
, ids
):
149 given a list of ids, return the objects ordered as you would like
150 them on the admin page. this is for displaying the currently
151 selected items (in the case of a ManyToMany field)
153 return rh
.Dossier
.objects
.filter(pk__in
=ids
)