Ajustement de l'admin suite au passage à Sphinx.
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / chercheurs / admin.py
1 # -*- encoding: utf-8 -*-
2 from chercheurs.models import Chercheur, Publication, Groupe, ChercheurGroupe
3 from django.db import models
4 from django.contrib import admin
5 from django.core.urlresolvers import reverse as url
6 from django.forms.models import BaseInlineFormSet
7 from django.http import HttpResponseRedirect
8
9 class ChercheurAdmin(admin.ModelAdmin):
10 list_filter = ('groupes',)
11 list_per_page = 25
12 actions = ('remove_from_group',)
13 search_fields = ('personne__nom', 'personne__prenom')
14
15 def queryset(self, request):
16 return Chercheur.all_objects.get_query_set()
17
18 def remove_from_group(self, request, queryset):
19 groupe_id = request.GET.get('groupes__id__exact')
20 chercheur_ids = queryset.values_list('id', flat=True)
21 matches = ChercheurGroupe.objects.filter(groupe=groupe_id, chercheur__in=chercheur_ids)
22 matches.delete()
23 return HttpResponseRedirect(url('admin:chercheurs_chercheur_changelist') + '?groupes__id__exact=' + groupe_id)
24
25 def get_actions(self, request):
26 actions = super(ChercheurAdmin, self).get_actions(request)
27
28 # Si on filtre par groupe de recherche, offrir d'en retirer les
29 # chercheurs sélectionnés.
30 groupe_id = request.GET.get('groupes__id__exact')
31 if groupe_id:
32 groupe = Groupe.objects.get(id=groupe_id)
33 action_desc = actions['remove_from_group']
34 actions['remove_from_group'] = (action_desc[0], action_desc[1], u'Retirer du domaine de recherche « %s »' % groupe.nom)
35 else:
36 del actions['remove_from_group']
37 return actions
38
39 admin.site.register(Chercheur, ChercheurAdmin)
40 admin.site.register(Publication)
41 admin.site.register(Groupe)
42