1 # -*- encoding: utf-8 -*-
3 from django
.db
.models
import Q
4 from rh
import models
as rh
5 from utils
import get_employe_from_user
, is_user_dans_services_centraux
6 from workflow
import grp_drh
8 class Responsable(object):
10 def get_query(self
,q
,request
):
12 return rh
.Poste
.objects
.none()
15 postes
= rh
.Poste
.objects
.filter(
16 Q(poste1__complement1__icontains
=q
) |
17 Q(type_poste__nom__icontains
=q
) |
18 Q(poste1__employe__nom__icontains
=q
) |
19 Q(poste1__employe__prenom__icontains
=q
)
23 def format_result(self
, poste
):
25 filtre
= Q(poste1
=poste
) & (Q(complement1__icontains
=q
) |
Q(employe__nom__icontains
=q
) |
Q(employe__prenom__icontains
=q
))
26 dossiers
= rh
.Dossier
.objects
.filter(filtre
)
28 # certains postes ont un id de type de poste qui n'existe pas
30 nom_poste
= poste
.type_poste
.nom
34 if len(dossiers
) == 1:
36 return "[%s] %s %s (%s) (%s)" % (poste
.implantation
.id, nom_poste
, dossier
.complement1
, poste
.id, dossier
.employe
)
38 dossiers
= poste
.poste1
.all().order_by("-id")
40 complement1
= dossiers
[0].complement1
41 employe
= unicode(dossiers
[0].employe
)
42 return "[%s] %s %s (%s) (%s)" % (poste
.implantation
.id, nom_poste
, complement1
, poste
.id, employe
)
44 def format_item(self
, poste
):
45 """ the display of a currently selected object in the area below the search box. html is OK """
46 return self
.format_result(poste
)
48 def get_objects(self
, ids
):
49 """ given a list of ids, return the objects ordered as you would like them on the admin page.
50 this is for displaying the currently selected items (in the case of a ManyToMany field)
52 return rh
.Poste
.objects
.filter(pk__in
=ids
)
54 class Dossier(object):
56 def get_query(self
,q
,request
):
58 employe
= get_employe_from_user(request
.user
)
59 prefixe_implantation
= 'poste__implantation'
61 q_recherche
= Q(poste__nom__icontains
=q
) | \
62 Q(poste__type_poste__nom__icontains
=q
) | \
63 Q(employe__nom__icontains
=q
) | \
64 Q(employe__prenom__icontains
=q
)
66 if is_user_dans_services_centraux(request
.user
):
67 q_place
= Q(**{ '%s' % prefixe_implantation
: employe
.implantation
})
69 q_place
= Q(**{ '%s__region' % prefixe_implantation
: employe
.implantation
.region
})
72 if grp_drh
in request
.user
.groups
.all():
73 q_filtre
= q_recherche
75 q_filtre
= q_place
& q_recherche
76 return rh
.Dossier
.objects
.filter(q_filtre
).distinct()
78 def format_result(self
, dossier
):
79 return dossier
.__unicode__()
81 def format_item(self
, dossier
):
82 """ the display of a currently selected object in the area below the search box. html is OK """
83 return self
.format_result(dossier
)
85 def get_objects(self
, ids
):
86 """ given a list of ids, return the objects ordered as you would like them on the admin page.
87 this is for displaying the currently selected items (in the case of a ManyToMany field)
89 return rh
.Dossier
.objects
.filter(pk__in
=ids
)
93 def get_query(self
,q
,request
):
95 employe
= get_employe_from_user(request
.user
)
96 prefixe_implantation
= 'poste1__implantation'
98 q_recherche
= Q(complement1__icontains
=q
) |
Q(poste1__type_poste__nom__icontains
=q
)
100 if is_user_dans_services_centraux(request
.user
):
101 q_place
= Q(**{ '%s' % prefixe_implantation
: employe
.implantation
})
103 q_place
= Q(**{ '%s__region' % prefixe_implantation
: employe
.implantation
.region
})
106 if grp_drh
in request
.user
.groups
.all():
107 q_filtre
= q_recherche
109 q_filtre
= q_place
& q_recherche
110 return rh
.Dossier
.objects
.filter(q_filtre
).distinct()
112 def format_result(self
, dossier
):
113 return u
"[%s] %s" % (dossier
.poste1
.implantation
, dossier
.poste1
.type_poste
.nom
)
115 def format_item(self
, dossier
):
116 """ the display of a currently selected object in the area below the search box. html is OK """
117 return self
.format_result(dossier
)
119 def get_objects(self
, ids
):
120 """ given a list of ids, return the objects ordered as you would like them on the admin page.
121 this is for displaying the currently selected items (in the case of a ManyToMany field)
123 return rh
.Dossier
.objects
.filter(pk__in
=ids
)