Mise en place de filtre avec initiale
authorPA Parent <paparent@paparent.me>
Thu, 28 Apr 2011 19:26:40 +0000 (15:26 -0400)
committerPA Parent <paparent@paparent.me>
Thu, 28 Apr 2011 19:26:40 +0000 (15:26 -0400)
auf_savoirs_en_partage/chercheurs/admin.py
auf_savoirs_en_partage/chercheurs/templatetags/chercheurs_admin.py
auf_savoirs_en_partage/settings.py
auf_savoirs_en_partage/templates/admin/chercheurs/chercheur/change_list.html
buildout.cfg

index 6635881..7f3d5b5 100644 (file)
@@ -12,14 +12,17 @@ from chercheurs.models import Chercheur, Publication, Groupe, ChercheurGroupe, C
 
 class ChercheurAdmin(admin.ModelAdmin):
     list_filter = ['genre']
-    list_per_page = 9999
+    alphabet_filter = 'nom'
+    alphabet_filter_table = 'chercheurs_personne'
+    DEFAULT_ALPHABET = ''
+
     actions = ('remove_from_group', 'export_as_ods', 'export_as_csv')
     search_fields = ('nom', 'prenom')
 
     def lookup_allowed(self, lookup, value):
         return lookup in ['genre', 'statut', 'membre_reseau_institutionnel', 
                           'membre_instance_auf', 'discipline', 'region', 'pays', 
-                          'groupes', 'nord_sud', 'initial'] or \
+                          'groupes', 'nord_sud'] or \
                admin.ModelAdmin.lookup_allowed(self, lookup, value)
 
     def remove_from_group(self, request, queryset):
@@ -53,14 +56,6 @@ class ChercheurAdmin(admin.ModelAdmin):
         except Chercheur.DoesNotExist:
             return None
 
-    def changelist_view(self, request, extra_context=None):
-        initials = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-        current_initial = request.GET.get('initial', 'A')
-        return super(ChercheurAdmin, self).changelist_view(request, extra_context={
-            'initials': initials,
-            'current_initial': current_initial
-        })
-
     def export(self, queryset, type):
         if queryset.count() == 0:
             return None
@@ -147,8 +142,7 @@ class ChercheurAdminQuerySet(ChercheurQuerySet):
         region = kwargs.pop('region', None)
         nord_sud = kwargs.pop('nord_sud', None)
         expert = kwargs.pop('expert', None)
-        initial = kwargs.pop('initial', 'A')
-        qs = super(ChercheurAdminQuerySet, self).filter(nom__istartswith=initial)
+        qs = self
         if pays is not None:
             qs = qs.filter(Q(etablissement__pays=pays) | 
                            (Q(etablissement=None) & Q(etablissement_autre_pays=pays)))
index 9fe3535..37c5ded 100644 (file)
@@ -1,11 +1,9 @@
 # coding: utf-8
 
-from urllib import urlencode
-
 from django import template
 from django.utils.encoding import smart_unicode
 
-from chercheurs.models import Chercheur, Groupe, GENRE_CHOICES, STATUT_CHOICES
+from chercheurs.models import Groupe, GENRE_CHOICES, STATUT_CHOICES
 from datamaster_modeles.models import Region, Pays
 from savoirs.models import Discipline
 
@@ -83,9 +81,3 @@ def prepare_choices(choices, query_param, context, remove=[]):
                        'query_string': cl.get_query_string({query_param: k}, remove),
                        'display': v})
     return result
-
-@register.simple_tag
-def query_string_with_initial(request, initial):
-    qs = request.GET.copy()
-    qs['initial'] = initial
-    return urlencode(qs)
index aeb04cf..c99f7b1 100644 (file)
@@ -70,6 +70,7 @@ INSTALLED_APPS = (
     'datamaster_modeles',
     'south',
     'auf.django.admingroup',
+    'alphafilter',
 )
 
 TEMPLATE_CONTEXT_PROCESSORS = (
index 5f9bfc4..449db74 100644 (file)
@@ -1,4 +1,4 @@
-{% extends "admin/change_list.html" %}
+{% extends "alphafilter/change_list.html" %}
 {% load i18n admin_list chercheurs_admin %}
 
 {% block filters %}
 </div>
 {% endblock %}
 
-{% block pagination %}
-<p class="paginator">
-    {% for initial in initials %}
-    {% if initial == current_initial %}
-    <span class="this-page">{{ initial }}</span>
-    {% else %}
-    <a href="?{% query_string_with_initial request initial %}">{{ initial }}</a>
-    {% endif %}
-    {% endfor %}
-</p>
-{% endblock %}
index 1041434..aedcece 100644 (file)
@@ -9,6 +9,7 @@ find-links = http://pypi.auf.org/caldav/
     http://pypi.auf.org/django_exportateur/
     http://pypi.auf.org/auf.django.admingroup/
     http://pypi.auf.org/auf.django.auth/
+    http://github.com/coordt/django-alphabetfilter/tarball/master#egg=django-alphafilter
 
 [django]
 recipe = djangorecipe
@@ -41,6 +42,7 @@ eggs = auf_references_client==0.4.9
     markdown2
     MySQL-python
     simplejson
+    django-alphafilter
 
 #develop = src/caldav