securite recherche comparaison
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Fri, 13 May 2011 19:33:19 +0000 (15:33 -0400)
committerNicolas Cadou <ncadou@cadou.ca>
Thu, 19 May 2011 00:12:24 +0000 (20:12 -0400)
project/dae/catalogues.py

index 3ba170e..2a88370 100644 (file)
@@ -1,7 +1,9 @@
 # -*- encoding: utf-8 -*-
 
-from rh_v1 import models as rh
 from django.db.models import Q
+from rh_v1 import models as rh
+from utils import get_employe_from_user, is_user_dans_service
+from workflow import grp_drh
 
 class Responsable(object):
 
@@ -35,13 +37,29 @@ class Responsable(object):
 class Dossier(object):
 
     def get_query(self,q,request):
-        return rh.Dossier.objects.filter(
-            Q(complement1__icontains=q) |
-            Q(poste1__type_poste__nom__icontains=q) |
-            Q(poste2__type_poste__nom__icontains=q) |
-            Q(employe__nom__icontains=q) |
+        
+        employe = get_employe_from_user(request.user)
+        prefixe_implantation = 'poste1__implantation'
+        print employe.implantation
+        print employe.implantation.region
+
+        q_recherche = Q(complement1__icontains=q) | \
+            Q(poste1__type_poste__nom__icontains=q) | \
+            Q(employe__nom__icontains=q) | \
             Q(employe__prenom__icontains=q)
-            ).distinct()
+
+        if is_user_dans_service(request.user):
+            q_place = Q(**{ '%s' % prefixe_implantation : employe.implantation })
+        else:
+            q_place = Q(**{ '%s__region' % prefixe_implantation : employe.implantation.region })
+
+
+        if grp_drh in request.user.groups.all():
+            q_filtre = q_recherche
+        else:
+            q_filtre = q_place & q_place
+
+        return rh.Dossier.objects.filter(q_filtre).distinct()
 
     def format_result(self, dossier):
         return dossier.__unicode__()