From: Olivier Larchevêque Date: Mon, 11 Jul 2011 13:33:27 +0000 (-0400) Subject: #1703 patch X-Git-Tag: DAE~106 X-Git-Url: http://git.auf.org/?p=auf_rh_dae.git;a=commitdiff_plain;h=072820fcd16a7e469ca15bd5e1e521cf3e56d076 #1703 patch --- 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 1a763c0..0c7f53f 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