src/core/wp_utils.py
changeset 33 61c3ffd94f11
parent 4 ae066d797a66
child 35 859862939996
equal deleted inserted replaced
32:ac5270714d2c 33:61c3ffd94f11
     4 from django.utils.http import urlquote
     4 from django.utils.http import urlquote
     5 from wikitools import api, wiki
     5 from wikitools import api, wiki
     6 import logging
     6 import logging
     7 
     7 
     8 logger = logging.getLogger(__name__)
     8 logger = logging.getLogger(__name__)
       
     9 site = None
       
    10 
       
    11 def __get_site():
       
    12     global site
       
    13     if site is None:
       
    14         site = wiki.Wiki(settings.WIKIPEDIA_API_URL) #@UndefinedVariable
       
    15     return site
     9 
    16 
    10 
    17 
    11 def normalize_term(term):
    18 def normalize_term(term):
    12     if len(term) == 0:
    19     if len(term) == 0:
    13         return term
    20         return term
   133 def get_or_create_term(term_label, term_uri, term_lang, thesaurus, wp_label_transform=(lambda l:l), skip_wp_query=False):
   140 def get_or_create_term(term_label, term_uri, term_lang, thesaurus, wp_label_transform=(lambda l:l), skip_wp_query=False):
   134     
   141     
   135     term_label_normalized = normalize_term(term_label)
   142     term_label_normalized = normalize_term(term_label)
   136     # We get the wikipedia references for the tag_label
   143     # We get the wikipedia references for the tag_label
   137     # We get or create the tag object
   144     # We get or create the tag object
   138     
   145     global site
   139     term = None
   146     
   140     if term_uri is not None and Term.objects.filter(uri=term_uri).exists():
   147     
   141         term = Term.objects.get(uri=term_uri)
   148     term, created = Term.objects.get_or_create(uri=term_uri, defaults = {'label':term_label, 'thesaurus':thesaurus, 'normalized_label':term_label_normalized, 'lang' : term_lang})
   142     else:
       
   143         for t in Term.objects.filter(normalized_label__iexact=term_label_normalized, lang=term_lang, thesaurus=thesaurus):
       
   144             if term is None or t.url_status != TERM_URL_STATUS_DICT['null_result']:
       
   145                 term = t
       
   146                 if term.url_status != TERM_URL_STATUS_DICT['null_result']:
       
   147                     break
       
   148  
   149  
   149     if term is None:
       
   150         term = Term(label=term_label, thesaurus=thesaurus, normalized_label=term_label_normalized, uri=term_uri, lang = term_lang)
       
   151         created = True
       
   152     else:
       
   153         created = False
       
   154     
       
   155     site = wiki.Wiki(settings.WIKIPEDIA_API_URL) #@UndefinedVariable
       
   156 
       
   157     if created:
   150     if created:
   158         
   151         wikipedia_revision_id = process_term(__get_site(), term, label=wp_label_transform(term_label_normalized))
   159         wikipedia_revision_id = process_term(site, term, label=wp_label_transform(term_label_normalized))
       
   160 
       
   161         term_label_obj = TermLabel(label=term_label, term=term, lang=term_lang)
   152         term_label_obj = TermLabel(label=term_label, term=term, lang=term_lang)
   162         term_label_obj.save()
   153         term_label_obj.save()
   163         
   154         
   164     elif term.wikipedia_pageid and not skip_wp_query:
   155     elif term.wikipedia_pageid and not skip_wp_query:
   165         wp_res = query_wikipedia_title(site, pageid=term.wikipedia_pageid)
   156         wp_res = query_wikipedia_title(__get_site(), pageid=term.wikipedia_pageid)
   166         wikipedia_revision_id = wp_res['revision_id']
   157         wikipedia_revision_id = wp_res['revision_id']
   167         term.wikipedia_revision_id = wikipedia_revision_id
   158         term.wikipedia_revision_id = wikipedia_revision_id
   168         term.save()
   159         term.save()
   169     else:
   160     else:
   170         wikipedia_revision_id = None
   161         wikipedia_revision_id = None