ba1e23403a6b2d849532d27c96b011bcbda0057b
[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 remove_from_group(self, request, queryset):
16 groupe_id = request.GET.get('groupes__id__exact')
17 chercheur_ids = queryset.values_list('id', flat=True)
18 matches = ChercheurGroupe.objects.filter(groupe=groupe_id, chercheur__in=chercheur_ids)
19 matches.delete()
20 return HttpResponseRedirect(url('admin:chercheurs_chercheur_changelist') + '?groupes__id__exact=' + groupe_id)
21
22 def get_actions(self, request):
23 actions = super(ChercheurAdmin, self).get_actions(request)
24
25 # Si on filtre par groupe de recherche, offrir d'en retirer les
26 # chercheurs sélectionnés.
27 groupe_id = request.GET.get('groupes__id__exact')
28 if groupe_id:
29 groupe = Groupe.objects.get(id=groupe_id)
30 action_desc = actions['remove_from_group']
31 actions['remove_from_group'] = (action_desc[0], action_desc[1], u'Retirer du groupe « %s »' % groupe.nom)
32 else:
33 del actions['remove_from_group']
34 return actions
35
36 admin.site.register(Chercheur, ChercheurAdmin)
37 admin.site.register(Publication)
38 admin.site.register(Groupe)
39