diff -r fef4317b915f -r 6b7694a282d9 src/hdalab/views/profile.py --- a/src/hdalab/views/profile.py Tue Aug 26 18:11:26 2014 +0200 +++ b/src/hdalab/views/profile.py Wed Aug 27 13:11:28 2014 +0200 @@ -5,7 +5,6 @@ @author: tc ''' - from datetime import datetime from django.conf import settings from django.contrib.auth import REDIRECT_FIELD_NAME, login as auth_login @@ -25,6 +24,7 @@ from django.views.decorators.debug import sensitive_post_parameters from django.views.generic import TemplateView, View from hdabo.models import Tag, Datasheet, TaggedSheet, Folder +from hdalab.models.dataviz import DbpediaFields, DbpediaFieldsTranslation from hdalab.models.renkan import HdalabRenkan from hdalab.views.ajax import filter_generic from renkanmanager.models import Renkan @@ -35,7 +35,6 @@ import uuid - import logging logger = logging.getLogger(__name__) @@ -117,6 +116,8 @@ return HttpResponse(rk.content, content_type="application/json") shape = request.GET.get("shape", "") + no_translate_langs = [ 'fr' ] + lang = request.GET.get('lang',request.LANGUAGE_CODE) # Start dict for renkan json now = datetime.now().strftime("%Y-%m-%d %H:%M") @@ -149,7 +150,7 @@ notice_id = request.GET.get("notice", "") if notice_id!="": notice = get_object_or_404(Datasheet, hda_id=notice_id) - # We get the ORDERED tags if we display one sheet (case valid = 0 and 1) + # We get the ORDERED tags if we display one sheet ordered_tags = TaggedSheet.objects.filter(datasheet=notice).select_related("tag", "tag__dbpedia_fields", "tag__category").order_by('order')[:15] # Prepare Node placer : np = LineNodePlacer() @@ -170,6 +171,13 @@ #"created_by": "roster_user-84fe909f-ba37-48e6-a25f-9d2f129a95b7" }) + # Get translated labels + dbpediafields = dict([(df.tag_id, df) for df in DbpediaFields.objects.filter(tag__in = [ot.tag for ot in ordered_tags])]) + translations = {} + if lang not in no_translate_langs: + transqs = DbpediaFieldsTranslation.objects.filter(master__in = dbpediafields.values(), language_code = lang) + translations = dict([(trans.master_id,trans.label) for trans in transqs]) + for ot in ordered_tags: t = ot.tag img_url = t.dbpedia_fields.thumbnail if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields and t.dbpedia_fields.thumbnail else None @@ -178,7 +186,7 @@ content["nodes"].append({ "id": unicode(uuid.uuid1()), - "title": t.label + ((" (" + t.category.label + ")") if t.category else ""), + "title": translations.get(dbpediafields[t.id].id, t.label), "description": t.dbpedia_uri, "uri": t.dbpedia_uri, "position": np.get_place("tags"), @@ -212,6 +220,12 @@ n_tags = [t.pk for t in n_tags] all_tags = Tag.objects.filter( pk__in=n_tags ).select_related("dbpedia_fields", "category") + # Get translated labels + translations = {} + if lang not in no_translate_langs: + transqs = DbpediaFieldsTranslation.objects.filter(master__in = [t.dbpedia_fields if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields else None for t in all_tags], language_code = lang) + translations = dict([(trans.master_id,trans.label) for trans in transqs]) + # Prepare Node placer : np = LineNodePlacer() if shape=="circle": @@ -240,7 +254,7 @@ img_url = cat_dict[t.category.label] content["nodes"].append({ "id": tag_uuid_dict[t.pk], - "title": t.label + ((" (" + t.category.label + ")") if t.category else ""), + "title": translations.get(t.dbpedia_fields.id, t.label) if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields else t.label, "description": t.dbpedia_uri, "uri": t.dbpedia_uri, "position": np.get_place("tags"), @@ -281,7 +295,7 @@ # Get datasheets from ajax filter search - filter_output = filter_generic(request.GET.get('lang',request.LANGUAGE_CODE), None, ",".join(label_list), ",".join(country_list), content_count=10) + filter_output = filter_generic(lang, None, ",".join(label_list), ",".join(country_list), content_count=10) filter_output = json.loads(filter_output) #logger.debug("COUCOU") #logger.debug(json.dumps(filter_output, indent=2)) @@ -336,7 +350,7 @@ content["nodes"].append({ "id": unicode(uuid.uuid1()), - "title": t.label + ((" (" + t.category.label + ")") if t.category else ""), + "title": filter_output["tagtranslations"][t.label], "description": t.dbpedia_uri, "uri": t.dbpedia_uri, "position": np.get_place("tags"), @@ -364,7 +378,7 @@ for t in related_tags: content["nodes"].append({ "id": t["id"], - "title": t["label"], + "title": filter_output["tagtranslations"][t["label"]], "description": "", "uri": "", "position": np.get_place("related"),