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