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 |