nice filter
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Fri, 6 Jan 2012 16:27:10 +0000 (11:27 -0500)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Fri, 6 Jan 2012 16:27:10 +0000 (11:27 -0500)
project/rh/lib.py
project/templates/admin/filter.html [new file with mode: 0644]

index 136df13..2a90a28 100644 (file)
@@ -5,6 +5,7 @@ import datetime
 
 from django.db import models
 from django import forms
+from django.core.urlresolvers import reverse
 from django.contrib import admin
 from django.conf import settings
 from django.db.models import Q
@@ -368,8 +369,9 @@ class EmployeAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin):
     ordering = ('nom', )
     actions = ('desactiver', )
     form = EmployeAdminForm
-    list_display = ('id', 'nom', 'prenom', 'date_modification',  'user_modification',)
+    list_display = ('id', 'nom', 'prenom', '_dossiers', 'date_modification',  'user_modification',)
     list_display_links = ('id', 'nom',)
+    list_filter = ('dossiers__poste__implantation__region',  'dossiers__poste__implantation',)
     inlines = (AyantDroitInline,
                DossierROInline,
                EmployePieceInline,
@@ -388,6 +390,17 @@ class EmployeAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin):
 
     add_form_template = 'admin/change_form.html'
 
+    def _dossiers(self, obj):
+        l = []
+        for d in obj.dossiers.all().order_by('-date_debut'):
+            link = "<li><a href='%s'>%s : %s</a></li>" % \
+                (reverse('admin:rh_dossier_change', args=(d.id,)),
+                 d.date_debut.year,
+                 d.poste)
+            l.append(link)
+        return "<ul>%s</ul>" % "\n".join(l)
+    _dossiers.allow_tags = True
+
     def queryset(self, request):
         qs = super(EmployeAdmin, self).queryset(request) 
         return qs.filter(actif=True).select_related(depth=1)
diff --git a/project/templates/admin/filter.html b/project/templates/admin/filter.html
new file mode 100644 (file)
index 0000000..69684d1
--- /dev/null
@@ -0,0 +1,20 @@
+{% load i18n %}
+
+<h3>{% blocktrans with title as filter_title %} By {{ filter_title }} {% endblocktrans %}</h3>
+{% if choices|length > 2 %}
+<select dir="rtl" style="width: 95%;" onchange="window.location=window.location.pathname+this.options[this.selectedIndex].value">
+{% for choice in choices %}
+    <option{% if choice.selected %} selected="selected"{% endif %}
+     dir="ltr" 
+     value="{{ choice.query_string|iriencode }}">{{ choice.display }}</option>
+{% endfor %}
+</select>
+
+{% else %}
+<ul>
+{% for choice in choices %}
+    <li{% if choice.selected %} class="selected"{% endif %}>
+    <a href="{{ choice.query_string|iriencode }}">{{ choice.display }}</a></li>
+{% endfor %}
+</ul>
+{% endif %}