3 from django
import template
4 from django
.utils
.encoding
import smart_unicode
6 from chercheurs
.models
import Chercheur
, Groupe
, GENRE_CHOICES
, STATUT_CHOICES
7 from datamaster_modeles
.models
import Region
, Pays
8 from savoirs
.models
import Discipline
10 register
= template
.Library()
12 OUI_NON_CHOICES
= [(1, 'Oui'), (0, 'Non')]
14 @register.inclusion_tag('admin/filter.html', takes_context
=True)
15 def filter_genre(context
):
16 return {'title': 'genre',
17 'choices': prepare_choices(GENRE_CHOICES
, 'genre', context
)}
19 @register.inclusion_tag('admin/filter.html', takes_context
=True)
20 def filter_statut(context
):
21 return {'title': 'statut',
22 'choices': prepare_choices(STATUT_CHOICES
, 'statut', context
)}
24 @register.inclusion_tag('admin/filter.html', takes_context
=True)
25 def filter_membre_reseau_institutionnel(context
):
26 return {'title': u
"appartenance aux instances d'un réseau institutionnel de l'AUF",
27 'choices': prepare_choices(OUI_NON_CHOICES
, 'membre_reseau_institutionnel', context
)}
29 @register.inclusion_tag('admin/filter.html', takes_context
=True)
30 def filter_membre_instance_auf(context
):
31 return {'title': u
"appartenance à une instance de l'AUF",
32 'choices': prepare_choices(OUI_NON_CHOICES
, 'membre_instance_auf', context
)}
34 @register.inclusion_tag('admin/filter.html', takes_context
=True)
35 def filter_discipline(context
):
36 return {'title': u
"discipline",
37 'choices': prepare_choices(Discipline
.objects
.values_list('id', 'nom'), 'discipline', context
)}
39 @register.inclusion_tag('admin/filter.html', takes_context
=True)
40 def filter_region(context
):
41 return {'title': u
"région",
42 'choices': prepare_choices(Region
.objects
.values_list('id', 'nom'), 'region', context
, remove
=['pays'])}
44 @register.inclusion_tag('admin/filter.html', takes_context
=True)
45 def filter_pays(context
):
46 request
= context
['request']
47 region
= request
.GET
.get('region')
48 choices
= Pays
.objects
49 if region
is not None:
50 choices
= choices
.filter(region
=region
)
51 return {'title': u
"pays",
52 'choices': prepare_choices(choices
.values_list('code', 'nom'), 'pays', context
)}
54 @register.inclusion_tag('admin/filter.html', takes_context
=True)
55 def filter_groupe(context
):
56 return {'title': u
"domaine de recherche",
57 'choices': prepare_choices(Groupe
.objects
.values_list('id', 'nom'), 'groupes', context
)}
59 @register.inclusion_tag('admin/filter.html', takes_context
=True)
60 def filter_expert(context
):
61 return {'title': u
"expert",
62 'choices': prepare_choices(OUI_NON_CHOICES
, 'expert', context
)}
64 def prepare_choices(choices
, query_param
, context
, remove
=[]):
65 request
= context
['request']
67 query_val
= request
.GET
.get(query_param
)
68 result
= [{'selected': query_val
is None,
69 'query_string': cl
.get_query_string({}, [query_param
] + remove
),
72 result
.append({'selected': smart_unicode(k
) == query_val
,
73 'query_string': cl
.get_query_string({query_param
: k
}, remove
),