Rapports: trie des rapports en WIP
[auf_rh_dae.git] / project / rh / views.py
index eb0b234..c97e2de 100644 (file)
@@ -6,6 +6,7 @@ from django.contrib.auth.decorators import login_required
 from django.utils.encoding import smart_str
 from django.shortcuts import redirect, render_to_response, get_object_or_404
 from django.template import RequestContext
+from django.http import Http404
 from sendfile import sendfile
 
 from datamaster_modeles import models as ref
@@ -14,6 +15,8 @@ from project.lib import get_employe_from_id
 from rh import models as rh
 from rh.lib import calc_remun
 from rh.decorators import drh_or_admin_required
+from rh.templatetags.rapports import SortHeaders
+from project.lib import multikeysort
 
 # pas de reference a DAE devrait etre refactorisé
 from dae.utils import get_employe_from_user
@@ -90,6 +93,9 @@ def rapports_poste(request):
     comble = 'all'
 
     for key, value in lookup_params.items():
+        if key == 'o' or key == 'ot':
+            del lookup_params[key]
+            continue
         if not isinstance(key, str):
             # 'key' will be used as a keyword argument later, so Python
             # requires it to be a string.
@@ -130,11 +136,29 @@ def rapports_poste(request):
             line['employe_id'] = employe.id
             line['employe_nom'] = employe.nom
             line['employe_prenom'] = employe.prenom
+        else:
+            line['employe_id'] = None
+            line['employe_nom'] = None
+            line['employe_prenom'] = None
+
+    if 'o' in request.GET:
+        try:
+            out = multikeysort(out, [request.GET['o']])
+        except KeyError:
+            raise Http404
 
     c = {
         'title': 'Rapport des postes',
         'postes': out,
         'count': len(out),
+        'headers': list(SortHeaders(request, (
+                (u"# de l'employé", "id"),
+                (u"Nom", "nom"),
+                (u"Implantation", "implantation"),
+                (u"# de l'employé", "employe_id"),
+                (u"Nom", "employe_nom"),
+                (u"Prénom", "employe_prenom"),
+            )).headers())
     }
 
     return render_to_response('rh/rapports/postes.html', c, RequestContext(request))