From cfd819ed1c9aa973871c6d603b18fe48d32d33a8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Olivier=20Larchev=C3=AAque?= Date: Fri, 8 Jul 2011 14:43:28 -0400 Subject: [PATCH] #1703 --- project/dae/forms.py | 31 ++++++++++++++++++------------- project/development.py | 6 +++--- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/project/dae/forms.py b/project/dae/forms.py index 9f487c7..7b247ff 100644 --- a/project/dae/forms.py +++ b/project/dae/forms.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- -from django.db.models import Q +from django.db.models import Q, Max from django import forms from django.forms.models import inlineformset_factory from django.contrib.admin import widgets as admin_widgets @@ -28,27 +28,32 @@ def _implantation_choices(obj, request): return [('', '----------')] + [(i.id, unicode(i), )for i in ref.Implantation.objects.filter(q)] def _employe_choices(obj, request): - q = Q(id_rh__isnull=True) & Q(id_rh__isnull=True) - # TRAITEMENT NORMAL employe = get_employe_from_user(request.user) # SERVICE if is_user_dans_services_centraux(request.user): - q_region_service = Q(implantation1=employe.implantation) | Q(implantation2=employe.implantation) + q_dae_region_service = Q(poste__implantation=employe.implantation) + q_rh_region_service = Q(implantation1=employe.implantation) | Q(implantation2=employe.implantation) # REGION else: - q_region_service = Q(implantation1__region=employe.implantation.region) | Q(implantation2__region=employe.implantation.region) + q_dae_region_service = Q(poste__implantation__region=employe.implantation.region) + q_rh_region_service = Q(implantation1__region=employe.implantation.region) | Q(implantation2__region=employe.implantation.region) # TRAITEMENT DRH if grp_drh in request.user.groups.all(): - q_region_service = Q() - - # Construction de la liste des employés en puisant dans DAE (pas d'info) et dans rh_v1 - # Pour le filtrage par région/service, on est obligé d'aller regarder le dossier rh_v1 - # car l'information dans le modèle rh_v1.Employe n'existe pas. - dae_ = dae.Employe.objects.filter(id_rh__isnull=True) - copies = dae.Employe.objects.filter(Q(id_rh__isnull=False)) + q_dae_region_service = Q() + q_rh_region_service = Q() + + # On filtre les employes avec les droits régionaux et on s'assure que c'est bien le dernier dossier en date pour sortir l'employe + # On retient un employé qui travaille présentement dans la même région que le user connecté. + dossiers_regionaux_ids = [d.id for d in dae.Dossier.objects.filter(q_dae_region_service)] + employes_ids = [d['employe'] for d in dae.Dossier.objects.values('employe').annotate(dernier_dossier=Max('id')) if d['dernier_dossier'] in dossiers_regionaux_ids] + dae_employe = dae.Employe.objects.filter(id__in=employes_ids) + dae_ = dae_employe.filter(id_rh__isnull=True) + copies = dae_employe.filter(Q(id_rh__isnull=False)) id_copies = [p.id_rh_id for p in copies.all()] - employes_ids = list(set([d.employe_id for d in rh.Dossier.objects.filter(q_region_service)])) + + dossiers_regionaux_ids = [d.id for d in rh.Dossier.objects.filter(q_rh_region_service)] + employes_ids = [d['employe'] for d in rh.Dossier.objects.values('employe').annotate(dernier_dossier=Max('id')) if d['dernier_dossier'] in dossiers_regionaux_ids] rhv1 = rh.Employe.objects.filter(id__in=employes_ids).exclude(id__in=id_copies) def option_label(employe): diff --git a/project/development.py b/project/development.py index 0c7f53f..1a763c0 100644 --- a/project/development.py +++ b/project/development.py @@ -5,8 +5,8 @@ DEBUG=True TEMPLATE_DEBUG=DEBUG # Décommentez ces lignes pour activer la debugtoolbar -INTERNAL_IPS = ('127.0.0.1',) -INSTALLED_APPS += ('debug_toolbar',) -MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',) +#INTERNAL_IPS = ('127.0.0.1',) +#INSTALLED_APPS += ('debug_toolbar',) +#MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',) AUTH_PASSWORD_REQUIRED = False -- 1.7.10.4