# HG changeset patch # User veltr # Date 1376994454 -7200 # Node ID b0ea2dcff0ce20716a3cb972e4d8e2d550c0a468 # Parent 5fde1070d9982e23bc4dbc6c0a971ec007bf49b0 updated view for data migration diff -r 5fde1070d998 -r b0ea2dcff0ce src/jocondelab/views/front_office.py --- a/src/jocondelab/views/front_office.py Mon Aug 19 18:57:01 2013 +0200 +++ b/src/jocondelab/views/front_office.py Tue Aug 20 12:27:34 2013 +0200 @@ -5,8 +5,8 @@ @author: rvelt ''' -from core.models import Notice -from jocondelab.models import DbpediaResource, DbpediaTranslation +from core.models import (Notice, Thesaurus) +from jocondelab.models import DbpediaFields from django.conf import settings from django.views.generic import View from django.views.generic.base import TemplateResponseMixin @@ -33,15 +33,17 @@ npp = 48 if queryterms else 24 notices = [] + thesauruscache = {t.id: t.label for t in Thesaurus.objects.all()} if queryterms and search_in_translations and search_in_title: mainq = Q() if search_in_translations: - uriq = Q() + transq = Q() for term in queryterms: - uriq = uriq | Q(translations__label__icontains=term) - ds = DbpediaResource.objects.filter(translations__lang=lang).filter(uriq) - mainq = mainq | Q(dbpedia_resources__dbpediaresource__in=ds) + transq = transq | Q(label__icontains=term) + ts = DbpediaFields.objects.filter(language_code=lang).filter(transq).values('term_id') + mainq = mainq | Q(noticeterm__term__in=ts) +# mainq = mainq | Q(noticeterm__term__dbpedia_fields__language_code=lang,noticeterm__term__dbpedia_fields__label__icontains=term) if search_in_title: for term in queryterms: mainq = mainq | Q(titr__icontains=term) @@ -57,10 +59,10 @@ for n in ns: terms = [{ - "locale_label": ts.dbpediaresource.translations.get(lang=lang).label, - "thesaurus": ts.thesaurus.label, - "dbpedia_uri": ts.dbpediaresource.uri - } for ts in n.dbpedia_resources.filter(dbpediaresource__translations__lang=lang)] + "locale_label": ts.term.dbpedia_fields.get(language_code=lang).label, + "thesaurus": thesauruscache[ts.term.thesaurus_id], + "dbpedia_uri": ts.term.dbpedia_uri + } for ts in n.noticeterm_set.filter(term__dbpedia_fields__language_code=lang)] termsbythesaurus = {} for term in terms: if not term["thesaurus"] in termsbythesaurus: @@ -88,11 +90,10 @@ wpp = 30 if show_tagcloud: - wqs = DbpediaResource.objects.filter(translations__lang=lang, notices__notice__in=qs).annotate(notice_count=Count('notices')).order_by("-notice_count")[:wpp] - + wqs = DbpediaFields.objects.filter(language_code=lang, term__notices__in=Notice.objects.exclude(image=None)).annotate(notice_count=Count('term__notices')).order_by('-notice_count')[:wpp] words = [{ - "uri": w.uri, - "label": w.translations.get(lang=lang).label, + "uri": w.dbpedia_uri, + "label": w.label, "notice_count": w.notice_count } for w in wqs] else: @@ -127,17 +128,17 @@ context["notice"] = notice context["title"] = notice.titr if notice.titr else notice.deno context["images"] = [i.url for i in notice.images.exclude(relative_url__endswith='v.jpg')] - terms = [{ - "label": nt.term.label, - "thesaurus": nt.term.thesaurus.label, - "dbpedia_uri": nt.term.dbpedia_uri - } for nt in notice.noticeterm_set.select_related('term__thesaurus').all()] - uris = [t["dbpedia_uri"] for t in terms if t["dbpedia_uri"]] - lls = DbpediaTranslation.objects.filter(lang=lang, dbpediaresource__uri__in=uris).all() - locale_labels = {l.dbpediaresource.uri: l.label for l in lls} - for t in terms: - t["translated"] = (t["dbpedia_uri"] in locale_labels) - t["locale_label"] = locale_labels.get(t["dbpedia_uri"], t["label"]) + terms = [] + for nt in notice.noticeterm_set.select_related('dbpedia_fields').all(): + translated_term = nt.term.dbpedia_fields.filter(language_code = lang) + termdict = { + "label": nt.term.label, + "thesaurus": nt.term.thesaurus.label, + "dbpedia_uri": nt.term.dbpedia_uri, + "translated": True if translated_term else False, + "locale_label": translated_term[0].label if translated_term else nt.term.label + } + terms.append(termdict) termsbythesaurus = {} for term in terms: if not term["thesaurus"] in termsbythesaurus: