Drill-down dans les stats sur les chercheurs
authorEric Mc Sween <eric.mcsween@gmail.com>
Tue, 22 Feb 2011 21:20:38 +0000 (16:20 -0500)
committerEric Mc Sween <eric.mcsween@gmail.com>
Tue, 22 Feb 2011 21:20:38 +0000 (16:20 -0500)
Demande #1172

auf_savoirs_en_partage/chercheurs/admin.py
auf_savoirs_en_partage/chercheurs/templatetags/chercheurs_admin.py
auf_savoirs_en_partage/templates/admin/chercheurs/chercheur/change_list.html
auf_savoirs_en_partage/templates/savoirs/stats.html

index ea2d497..1a39444 100644 (file)
@@ -19,7 +19,7 @@ class ChercheurAdmin(admin.ModelAdmin):
     def lookup_allowed(self, lookup):
         return lookup in ['genre', 'statut', 'membre_reseau_institutionnel', 
                           'membre_instance_auf', 'discipline', 'region', 'pays', 
-                          'groupes'] or \
+                          'groupes', 'nord_sud'] or \
                admin.ModelAdmin.lookup_allowed(self, lookup)
 
     def remove_from_group(self, request, queryset):
@@ -131,11 +131,17 @@ class ChercheurAdminQuerySet(ChercheurQuerySet):
         qs = self
         pays = kwargs.pop('pays', None)
         region = kwargs.pop('region', None)
+        nord_sud = kwargs.pop('nord_sud', None)
         expert = kwargs.pop('expert', None)
         if pays is not None:
-            qs = qs.filter(Q(etablissement__pays=pays) | (Q(etablissement=None) & Q(etablissement_autre_pays=pays)))
+            qs = qs.filter(Q(etablissement__pays=pays) | 
+                           (Q(etablissement=None) & Q(etablissement_autre_pays=pays)))
         elif region is not None:
-            qs = qs.filter(Q(etablissement__pays__region=region) | (Q(etablissement=None) & Q(etablissement_autre_pays__region=region)))
+            qs = qs.filter(Q(etablissement__pays__region=region) | 
+                           (Q(etablissement=None) & Q(etablissement_autre_pays__region=region)))
+        elif nord_sud is not None:
+            qs = qs.filter(Q(etablissement__pays__nord_sud=nord_sud) | 
+                           (Q(etablissement=None) & Q(etablissement_autre_pays__nord_sud=nord_sud)))
         if expert is not None:
             if expert in ['1', 1, True]:
                 qs = qs.exclude(expertises=None)
index 1b68c47..5125b7f 100644 (file)
@@ -39,15 +39,23 @@ def filter_discipline(context):
 @register.inclusion_tag('admin/filter.html', takes_context=True)
 def filter_region(context):
     return {'title': u"région",
-            'choices': prepare_choices(Region.objects.values_list('id', 'nom'), 'region', context, remove=['pays'])}
+            'choices': prepare_choices(Region.objects.values_list('id', 'nom'), 'region', context, remove=['pays', 'nord_sud'])}
+
+@register.inclusion_tag('admin/filter.html', takes_context=True)
+def filter_nord_sud(context):
+    return {'title': u'nord/sud',
+            'choices': prepare_choices([('Nord', 'Nord'), ('Sud', 'Sud')], 'nord_sud', context, remove=['pays', 'region'])}
 
 @register.inclusion_tag('admin/filter.html', takes_context=True)
 def filter_pays(context):
     request = context['request']
     region = request.GET.get('region')
+    nord_sud = request.GET.get('nord_sud')
     choices = Pays.objects
     if region is not None:
         choices = choices.filter(region=region)
+    elif nord_sud is not None:
+        choices = choices.filter(nord_sud=nord_sud)
     return {'title': u"pays",
             'choices': prepare_choices(choices.values_list('code', 'nom'), 'pays', context)}
 
index 41662bf..9e9a8b7 100644 (file)
@@ -10,6 +10,7 @@
     {% filter_membre_instance_auf %}
     {% filter_discipline %}
     {% filter_region %}
+    {% filter_nord_sud %}
     {% filter_pays %}
     {% filter_groupe %}
     {% filter_expert %}
index f152c08..341ab02 100644 (file)
@@ -20,9 +20,9 @@
             <td>
                 Nombre de chercheurs
             </td>
-            <td>{{ nb_hommes }}</td>
-            <td>{{ nb_femmes }}</td>
-            <td>{{ nb_chercheurs }}</td>
+            <td><a href="{% url admin:chercheurs_chercheur_changelist %}?genre=m">{{ nb_hommes }}</a></td>
+            <td><a href="{% url admin:chercheurs_chercheur_changelist %}?genre=f">{{ nb_femmes }}</a></td>
+            <td><a href="{% url admin:chercheurs_chercheur_changelist %}">{{ nb_chercheurs }}</a></td>
         </tr>
         <tr>
             <td>
             {% for region in regions %}
             <tr>
                 <td>{{ region.nom }}</td>
-                <td>{{ hommes_par_region|getitem:region.id }}</td>
-                <td>{{ femmes_par_region|getitem:region.id }}</td>
-                <td>{{ chercheurs_par_region|getitem:region.id }}</td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?genre=m&region={{ region.id }}"
+                        >{{ hommes_par_region|getitem:region.id }}</a>
+                </td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?genre=f&region={{ region.id }}"
+                        >{{ femmes_par_region|getitem:region.id }}</a>
+                </td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?region={{ region.id }}"
+                        >{{ chercheurs_par_region|getitem:region.id }}</a>
+                </td>
             </tr>
             {% endfor %}
         </tbody>
+    </table>
+
+    <h2>Chercheurs du Nord et du Sud</h2>
+    <table>
+        <thead>
+            <th></th>
+            <th>Hommes</th>
+            <th>Femmes</th>
+            <th>Total</th>
+        </thead>
         <tbody>
             {% for hemisphere in hemispheres %}
             <tr>
                 <td>{{ hemisphere }}</td>
-                <td>{{ hommes_par_hemisphere|getitem:hemisphere }}</td>
-                <td>{{ femmes_par_hemisphere|getitem:hemisphere }}</td>
-                <td>{{ chercheurs_par_hemisphere|getitem:hemisphere }}</td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?genre=m&nord_sud={{ hemisphere }}"
+                        >{{ hommes_par_hemisphere|getitem:hemisphere }}</a>
+                </td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?genre=f&nord_sud={{ hemisphere }}"
+                        >{{ femmes_par_hemisphere|getitem:hemisphere }}</a>
+                </td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?nord_sud={{ hemisphere }}"
+                        >{{ chercheurs_par_hemisphere|getitem:hemisphere }}</a>
+                </td>
             </tr>
             {% endfor %}
         </tbody>
             {% for domaine in domaines %}
             <tr>
                 <td>{{ domaine.nom }}</td>
-                <td>{{ hommes_par_domaine|getitem:domaine.id }}</td>
-                <td>{{ femmes_par_domaine|getitem:domaine.id }}</td>
-                <td>{{ chercheurs_par_domaine|getitem:domaine.id }}</td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?genre=m&groupes={{ domaine.id }}"
+                        >{{ hommes_par_domaine|getitem:domaine.id }}</a>
+                </td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?genre=f&groupes={{ domaine.id }}"
+                        >{{ femmes_par_domaine|getitem:domaine.id }}</a>
+                </td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?groupes={{ domaine.id }}"
+                        >{{ chercheurs_par_domaine|getitem:domaine.id }}</a>
+                </td>
             </tr>
             {% endfor %}
         </tbody>
             {% for discipline in disciplines %}
             <tr>
                 <td>{{ discipline.nom }}</td>
-                <td>{{ hommes_par_discipline|getitem:discipline.id }}</td>
-                <td>{{ femmes_par_discipline|getitem:discipline.id }}</td>
-                <td>{{ chercheurs_par_discipline|getitem:discipline.id }}</td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?genre=m&discipline={{ discipline.id }}"
+                        >{{ hommes_par_discipline|getitem:discipline.id }}</a>
+                </td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?genre=f&discipline={{ discipline.id }}"
+                        >{{ femmes_par_discipline|getitem:discipline.id }}</a>
+                </td>
+                <td>
+                    <a href="{% url admin:chercheurs_chercheur_changelist %}?discipline={{ discipline.id }}"
+                        >{{ chercheurs_par_discipline|getitem:discipline.id }}</a>
+                </td>
             </tr>
             {% endfor %}
         </tbody>