src/core/wp_utils.py
changeset 33 61c3ffd94f11
parent 4 ae066d797a66
child 35 859862939996
--- a/src/core/wp_utils.py	Mon Jun 24 09:21:38 2013 +0200
+++ b/src/core/wp_utils.py	Tue Jun 25 00:00:03 2013 +0200
@@ -6,6 +6,13 @@
 import logging
 
 logger = logging.getLogger(__name__)
+site = None
+
+def __get_site():
+    global site
+    if site is None:
+        site = wiki.Wiki(settings.WIKIPEDIA_API_URL) #@UndefinedVariable
+    return site
 
 
 def normalize_term(term):
@@ -135,34 +142,18 @@
     term_label_normalized = normalize_term(term_label)
     # We get the wikipedia references for the tag_label
     # We get or create the tag object
+    global site
     
-    term = None
-    if term_uri is not None and Term.objects.filter(uri=term_uri).exists():
-        term = Term.objects.get(uri=term_uri)
-    else:
-        for t in Term.objects.filter(normalized_label__iexact=term_label_normalized, lang=term_lang, thesaurus=thesaurus):
-            if term is None or t.url_status != TERM_URL_STATUS_DICT['null_result']:
-                term = t
-                if term.url_status != TERM_URL_STATUS_DICT['null_result']:
-                    break
+    
+    term, created = Term.objects.get_or_create(uri=term_uri, defaults = {'label':term_label, 'thesaurus':thesaurus, 'normalized_label':term_label_normalized, 'lang' : term_lang})
  
-    if term is None:
-        term = Term(label=term_label, thesaurus=thesaurus, normalized_label=term_label_normalized, uri=term_uri, lang = term_lang)
-        created = True
-    else:
-        created = False
-    
-    site = wiki.Wiki(settings.WIKIPEDIA_API_URL) #@UndefinedVariable
-
     if created:
-        
-        wikipedia_revision_id = process_term(site, term, label=wp_label_transform(term_label_normalized))
-
+        wikipedia_revision_id = process_term(__get_site(), term, label=wp_label_transform(term_label_normalized))
         term_label_obj = TermLabel(label=term_label, term=term, lang=term_lang)
         term_label_obj.save()
         
     elif term.wikipedia_pageid and not skip_wp_query:
-        wp_res = query_wikipedia_title(site, pageid=term.wikipedia_pageid)
+        wp_res = query_wikipedia_title(__get_site(), pageid=term.wikipedia_pageid)
         wikipedia_revision_id = wp_res['revision_id']
         term.wikipedia_revision_id = wikipedia_revision_id
         term.save()