16 import copy |
16 import copy |
17 import django.utils.simplejson as json |
17 import django.utils.simplejson as json |
18 import hmac |
18 import hmac |
19 import itertools |
19 import itertools |
20 import uuid |
20 import uuid |
|
21 |
|
22 import logging |
|
23 logger = logging.getLogger(__name__) |
21 |
24 |
22 def tagtranslation(request): |
25 def tagtranslation(request): |
23 |
26 |
24 lang = request.GET.get('lang',request.LANGUAGE_CODE) |
27 lang = request.GET.get('lang',request.LANGUAGE_CODE) |
25 labels = request.GET.get('labels',None) |
28 labels = request.GET.get('labels',None) |
348 |
351 |
349 qs = list(TaggedSheet.objects.select_related('tag', 'tag__dbpedia_fields').filter(datasheet__in = contentids, order__lte = max_tag_order).order_by('order')) |
352 qs = list(TaggedSheet.objects.select_related('tag', 'tag__dbpedia_fields').filter(datasheet__in = contentids, order__lte = max_tag_order).order_by('order')) |
350 |
353 |
351 translations = {} |
354 translations = {} |
352 |
355 |
|
356 logger.debug("ICI 0") |
353 if lang not in no_translate_langs: |
357 if lang not in no_translate_langs: |
354 transqs = DbpediaFieldsTranslation.objects.filter(master__in = [ts.tag.dbpedia_fields for ts in qs], language_code = lang) |
358 ts_list = [] |
|
359 for ts in qs: |
|
360 if hasattr(ts, 'tag') and hasattr(ts.tag, 'dbpedia_fields') : |
|
361 ts_list.append(ts.tag.dbpedia_fields) |
|
362 transqs = DbpediaFieldsTranslation.objects.filter(master__in = ts_list, language_code = lang) |
355 translations = dict([(trans.master_id,trans.label) for trans in transqs]) |
363 translations = dict([(trans.master_id,trans.label) for trans in transqs]) |
356 |
364 |
357 for ts in qs: |
365 for ts in qs: |
358 match_tag = ts.tag.id in matchtagids |
366 if hasattr(ts, 'tag') and hasattr(ts.tag, 'dbpedia_fields') : |
359 contenus[ts.datasheet_id]['tags'].append({'id': ts.tag.id, 'label':ts.tag.label, 'order':ts.order, 'match': match_tag , 'translated_label': translations.get(ts.tag.dbpedia_fields.id, ts.tag.label) if ts.tag.dbpedia_fields is not None else ts.tag.label}) |
367 match_tag = ts.tag.id in matchtagids |
360 |
368 contenus[ts.datasheet_id]['tags'].append({'id': ts.tag.id, 'label':ts.tag.label, 'order':ts.order, 'match': match_tag , 'translated_label': translations.get(ts.tag.dbpedia_fields.id, ts.tag.label) if ts.tag.dbpedia_fields is not None else ts.tag.label}) |
361 if match_tag: |
369 |
362 contenus[ts.datasheet_id]['score'] += 2*max_tag_order - ts.order |
370 if match_tag: |
|
371 contenus[ts.datasheet_id]['score'] += 2*max_tag_order - ts.order |
363 |
372 |
364 if contentlist is None: |
373 if contentlist is None: |
365 contenus = sorted(contenus.values(),key=lambda e: -e['score']) |
374 contenus = sorted(contenus.values(),key=lambda e: -e['score']) |
366 else: |
375 else: |
367 contenus = contenus.values() |
376 contenus = contenus.values() |