|
|
|
|
@ -86,17 +86,20 @@ def get_by_lang(item, field, lang='en'): |
|
|
|
|
:return: |
|
|
|
|
""" |
|
|
|
|
return getattr(item, field+'_'+lang) |
|
|
|
|
|
|
|
|
|
import datetime |
|
|
|
|
def expo_autosearch(request): |
|
|
|
|
if request.GET: |
|
|
|
|
lang = translation.get_language() |
|
|
|
|
term = request.GET['term'] |
|
|
|
|
qs = SearchQuerySet().models(Exposition, Theme, Tag).autocomplete(content_auto=term).order_by('text') |
|
|
|
|
d = datetime.date.today() |
|
|
|
|
expos = list(SearchQuerySet().models(Exposition).filter(data_end__gte=d).autocomplete(content_auto=term).order_by('data_begin','text')[:6]) |
|
|
|
|
themes = list(SearchQuerySet().models(Tag).autocomplete(content_auto=term).order_by('text')[:15]) |
|
|
|
|
res = expos + themes |
|
|
|
|
result = [{'cat': get_by_lang(item, 'catalog_name', lang), |
|
|
|
|
'text': '%s (%s)'%(get_by_lang(item, 'name', lang),get_by_lang(item, 'parent', lang)) if get_by_lang(item, 'parent', lang) else get_by_lang(item, 'name', lang), |
|
|
|
|
'url':item.url, |
|
|
|
|
'id':item.pk, |
|
|
|
|
'name': item.form_name} for item in qs] |
|
|
|
|
'name': item.form_name} for item in res] |
|
|
|
|
result = sorted(result, key=lambda x:x['cat'], reverse=True) |
|
|
|
|
return HttpResponse(json.dumps(result), content_type='application/json') |
|
|
|
|
else: |
|
|
|
|
|