src/hdalab/views/ajax.py
changeset 290 fb86765b4c54
parent 289 eb479baeb2bf
child 291 44af3e5e4114
equal deleted inserted replaced
289:eb479baeb2bf 290:fb86765b4c54
     9 from django.db.models import Q, Count, Min
     9 from django.db.models import Q, Count, Min
    10 from django.http import HttpResponse
    10 from django.http import HttpResponse
    11 from hdabo.models import Tag, Datasheet, TaggedSheet
    11 from hdabo.models import Tag, Datasheet, TaggedSheet
    12 from hdalab.models import HdaSession, Country, TagYears, DatasheetExtras
    12 from hdalab.models import HdaSession, Country, TagYears, DatasheetExtras
    13 from hdalab.models.dataviz import DbpediaFieldsTranslation, DbpediaFields
    13 from hdalab.models.dataviz import DbpediaFieldsTranslation, DbpediaFields
    14 from hdalab.models.categories import WpCategory, WpCategoryInclusion, TagWpCategory
    14 from hdalab.models.categories import WpCategory
    15 from hdalab.utils import fix_cache_key
    15 from hdalab.utils import fix_cache_key
    16 import copy
    16 import copy
    17 import json
    17 import json
    18 import hmac
    18 import hmac
    19 import itertools
    19 import itertools
   168         
   168         
   169     if write and data:
   169     if write and data:
   170         HdaSession.objects.filter(sessionid=sessionid).update(data=json.dumps(data))
   170         HdaSession.objects.filter(sessionid=sessionid).update(data=json.dumps(data))
   171     else:
   171     else:
   172         data = HdaSession.objects.get(sessionid=sessionid).data
   172         data = HdaSession.objects.get(sessionid=sessionid).data
   173         data = json.loads(data) if data else {}           
   173         data = json.loads(data) if data else {}
   174          
   174          
   175     resobj = {'data': data, "write_allowed" : write, "sessionid": sessionid }
   175     resobj = {'data': data, "write_allowed" : write, "sessionid": sessionid }
   176     if write:
   176     if write:
   177         resobj['sessionkey'] = request.session['sessionkey']
   177         resobj['sessionkey'] = request.session['sessionkey']
   178         
   178         
   239     
   239     
   240     q = request.GET.get('term',None)
   240     q = request.GET.get('term',None)
   241     
   241     
   242     # On ne récupère que les catégories qui sont également des tags
   242     # On ne récupère que les catégories qui sont également des tags
   243     qrx = '(\\m|\\b)%s'%q
   243     qrx = '(\\m|\\b)%s'%q
   244     qs = Tag.objects.filter(label__iregex=q)
   244     qs = Tag.objects.filter(label__iregex=qrx)
   245     
   245     
   246     labels = [tag.label for tag in qs]
   246     labels = [tag.label for tag in qs]
   247     
   247     
   248     qs = WpCategory.objects.annotate(nb=Count('child_categories__child_category__tags')).filter(label__in = labels, nb__gt=0)
   248     qs = WpCategory.objects.annotate(nb=Count('child_categories__child_category__tags')).filter(label__in = labels, nb__gt=0)
   249     
   249