--- 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: