Commit | Line | Data |
---|---|---|
cbae0173 | 1 | # -*- encoding: utf-8 -*- |
55ef8558 | 2 | from chercheurs.models import Chercheur, Publication, Groupe, ChercheurGroupe |
cbae0173 AJ |
3 | from django.db import models |
4 | from django.contrib import admin | |
55ef8558 EMS |
5 | from django.core.urlresolvers import reverse as url |
6 | from django.forms.models import BaseInlineFormSet | |
7 | from django.http import HttpResponseRedirect | |
cbae0173 | 8 | |
55ef8558 EMS |
9 | class ChercheurAdmin(admin.ModelAdmin): |
10 | list_filter = ('groupes',) | |
11 | list_per_page = 25 | |
12 | actions = ('remove_from_group',) | |
62354bdb | 13 | search_fields = ('nom', 'prenom') |
cbae0173 | 14 | |
55ef8558 EMS |
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'] | |
e7b9234a | 31 | actions['remove_from_group'] = (action_desc[0], action_desc[1], u'Retirer du domaine de recherche « %s »' % groupe.nom) |
55ef8558 EMS |
32 | else: |
33 | del actions['remove_from_group'] | |
34 | return actions | |
35 | ||
36 | admin.site.register(Chercheur, ChercheurAdmin) | |
cbae0173 AJ |
37 | admin.site.register(Publication) |
38 | admin.site.register(Groupe) | |
39 |