1 # -*- coding: utf-8 -*-
3 from django
.utils
.encoding
import smart_unicode
4 from django
.template
import Library
5 from django
.utils
.http
import urlencode
7 from datamaster_modeles
.models
import Implantation
, Region
8 from rh
.models
import TypeContrat
14 COMBLE_CHOICES
= (('c', 'Comblé'), ('n', 'Non-comblé'))
17 @register.inclusion_tag('admin/filter.html', takes_context
=True)
18 def filter_comble(context
):
19 return {'title': 'comblé',
20 'choices': prepare_choices(COMBLE_CHOICES
, 'comble', context
)}
23 @register.inclusion_tag('admin/filter_select.html', takes_context
=True)
24 def filter_region(context
):
25 return {'title': u
"région",
26 'choices': prepare_choices(Region
.objects
.values_list('id', 'nom'), 'implantation__region', context
, remove
=['pays', 'nord_sud'])}
29 @register.inclusion_tag('admin/filter_select.html', takes_context
=True)
30 def filter_implantation(context
):
31 return {'title': u
"implantation",
32 'choices': prepare_choices(Implantation
.objects
.values_list('id', 'nom'), 'implantation', context
)}
35 @register.inclusion_tag('admin/filter_select.html', takes_context
=True)
36 def filter_region_contrat(context
):
37 return {'title': u
"région",
38 'choices': prepare_choices(Region
.objects
.values_list('id', 'nom'), 'dossier__poste__implantation__region', context
, remove
=['pays', 'nord_sud'])}
41 @register.inclusion_tag('admin/filter_select.html', takes_context
=True)
42 def filter_implantation_contrat(context
):
43 return {'title': u
"implantation",
44 'choices': prepare_choices(Implantation
.objects
.values_list('id', 'nom'), 'dossier__poste__implantation', context
)}
47 @register.inclusion_tag('admin/filter_select.html', takes_context
=True)
48 def filter_type_contrat(context
):
49 return {'title': u
"type de contrat",
50 'choices': prepare_choices(TypeContrat
.objects
.values_list('id', 'nom'), 'type_contrat', context
)}
53 def get_query_string(request
, new_params
=None, remove
=None):
54 if new_params
is None: new_params
= {}
55 if remove
is None: remove
= []
56 p
= dict(request
.GET
.items())
61 for k
, v
in new_params
.items():
67 return '?%s' % urlencode(p
)
70 def prepare_choices(choices
, query_param
, context
, remove
=[]):
71 request
= context
['request']
72 query_val
= request
.GET
.get(query_param
)
73 result
= [{'selected': query_val
is None,
74 'query_string': get_query_string(request
, {}, [query_param
] + remove
),
77 result
.append({'selected': smart_unicode(k
) == query_val
,
78 'query_string': get_query_string(request
, {query_param
: k
}, remove
),