Ne pas limiter le login à 30 caractères
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / chercheurs / admin.py
... / ...
CommitLineData
1# -*- encoding: utf-8 -*-
2from chercheurs.models import Chercheur, Publication, Groupe, ChercheurGroupe
3from django.db import models
4from django.contrib import admin
5from django.core.urlresolvers import reverse as url
6from django.forms.models import BaseInlineFormSet
7from django.http import HttpResponseRedirect
8
9class ChercheurAdmin(admin.ModelAdmin):
10 list_filter = ('groupes',)
11 list_per_page = 25
12 actions = ('remove_from_group',)
13 search_fields = ('nom', '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 domaine de recherche « %s »' % groupe.nom)
32 else:
33 del actions['remove_from_group']
34 return actions
35
36admin.site.register(Chercheur, ChercheurAdmin)
37admin.site.register(Publication)
38admin.site.register(Groupe)
39