optimisation
authorcavaliet
Tue, 29 Oct 2013 13:55:08 +0100
changeset 161 adafb3d13a19
parent 160 3cf9e6bd988f
child 162 e849690649d4
optimisation
src/jocondelab/views/front_office.py
--- a/src/jocondelab/views/front_office.py	Tue Oct 29 12:41:20 2013 +0100
+++ b/src/jocondelab/views/front_office.py	Tue Oct 29 13:55:08 2013 +0100
@@ -31,12 +31,13 @@
         }
         th = termsbythesaurus.setdefault(term["thesaurus"], { "translated": [], "untranslated": [] })
         th["untranslated"].append(term)
-    for nt in Term.objects.filter(noticeterm__notice=notice, dbpedia_fields__language_code=lang).select_related('thesaurus__label,dbpedia_fields').order_by('dbpedia_fields__label').distinct():
+    # We use "values" because it avoids an other db request for dbpedia_fields.get(language_code = lang).label
+    for nt in Term.objects.select_related('thesaurus__label,dbpedia_fields').filter(noticeterm__notice=notice, dbpedia_fields__language_code=lang).order_by('dbpedia_fields__label').distinct().values("thesaurus__label", "dbpedia_uri", "dbpedia_fields__label"):
         term = {
-            "thesaurus": nt.thesaurus.label,
-            "dbpedia_uri": nt.dbpedia_uri,
+            "thesaurus": nt["thesaurus__label"],
+            "dbpedia_uri": nt["dbpedia_uri"],
             "translated": True,
-            "label": nt.dbpedia_fields.get(language_code = lang).label
+            "label": nt["dbpedia_fields__label"]
         }
         th = termsbythesaurus.setdefault(term["thesaurus"], { "translated": [], "untranslated": [] })
         th["translated"].append(term)
@@ -128,7 +129,9 @@
         
         notices = []
         for n in ns:
+            logger.debug("COUCOU 0")
             termsbythesaurus = get_terms_by_thesaurus(n, lang)
+            logger.debug("COUCOU 1")
             noticedict = {
                 "id": n.id,
                 "title": n.titr,
@@ -138,6 +141,7 @@
                 "terms_by_thesaurus": termsbythesaurus,
                 "datation": termsbythesaurus.get("PERI",{}).get("translated",[]) + termsbythesaurus.get("EPOQ",{}).get("translated",[])
             }
+            logger.debug("COUCOU 2")
             noticedict['image_title'] = noticedict['title'] if noticedict['title'] else noticedict['designation']
             if show_years and n.years.exists():
                 noticedict["years"] = [n.years.all()[0].start_year, n.years.all()[0].end_year]