Add other wikipedia.
authorymh <ymh.work@gmail.com>
Thu, 18 Jul 2013 10:39:26 +0200
changeset 67 5d9223bb3aab
parent 66 9a7c391fb123
child 68 964cec8dd71a
Add other wikipedia. change joconde notice preview (as in bug #17508)
.settings/org.eclipse.core.resources.prefs
src/core/models/term.py
src/core/settings.py
src/core/urls.py
src/core/views.py
src/core/wp_utils.py
src/jocondelab/forms.py
src/jocondelab/locale/en/LC_MESSAGES/django.mo
src/jocondelab/locale/en/LC_MESSAGES/django.po
src/jocondelab/locale/en/LC_MESSAGES/djangojs.mo
src/jocondelab/locale/en/LC_MESSAGES/djangojs.po
src/jocondelab/locale/fr/LC_MESSAGES/django.mo
src/jocondelab/locale/fr/LC_MESSAGES/django.po
src/jocondelab/locale/fr/LC_MESSAGES/djangojs.mo
src/jocondelab/locale/fr/LC_MESSAGES/djangojs.po
src/jocondelab/management/commands/import_terms.py
src/jocondelab/settings.py
src/jocondelab/static/jocondelab/js/jocondelab.js
src/jocondelab/templates/jocondelab/base.html
src/jocondelab/templates/jocondelab/term_edit.html
src/jocondelab/urls.py
src/jocondelab/views.py
--- a/.settings/org.eclipse.core.resources.prefs	Thu Jul 11 14:26:00 2013 +0200
+++ b/.settings/org.eclipse.core.resources.prefs	Thu Jul 18 10:39:26 2013 +0200
@@ -15,6 +15,7 @@
 encoding//src/core/settings.py=utf-8
 encoding//src/core/templatetags/core_extras.py=utf-8
 encoding//src/core/templatetags/utils.py=utf-8
+encoding//src/core/urls.py=utf-8
 encoding//src/core/utils.py=utf-8
 encoding//src/core/wp_utils.py=utf-8
 encoding//src/jocondelab/config.py=utf-8
@@ -29,8 +30,14 @@
 encoding//src/jocondelab/migrations/0002_add_country_table.py=utf-8
 encoding//src/jocondelab/migrations/0003_auto_add_indexes_on_countries.py=utf-8
 encoding//src/jocondelab/models.py=utf-8
+encoding//src/jocondelab/settings.py=utf-8
 encoding//src/jocondelab/utils.py=utf-8
 encoding//src/jocondelab/views.py=utf-8
 encoding//virtualenv/web/env/venv_jocondelab/lib/python2.7/site-packages/SPARQLWrapper/__init__.py=utf8
 encoding//virtualenv/web/env/venv_jocondelab/lib/python2.7/site-packages/rdflib_sqlalchemy/__init__.py=utf-8
+encoding//virtualenv/web/env/venv_jocondelab/lib/python2.7/site-packages/requests/api.py=utf-8
+encoding//virtualenv/web/env/venv_jocondelab/lib/python2.7/site-packages/requests/exceptions.py=utf-8
+encoding//virtualenv/web/env/venv_jocondelab/lib/python2.7/site-packages/requests/hooks.py=utf-8
+encoding//virtualenv/web/env/venv_jocondelab/lib/python2.7/site-packages/requests/models.py=utf-8
+encoding//virtualenv/web/env/venv_jocondelab/lib/python2.7/site-packages/requests/sessions.py=utf-8
 encoding//virtualenv/web/env/venv_jocondelab/lib/python2.7/site-packages/wikitools/wiki.py=utf-8
--- a/src/core/models/term.py	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/core/models/term.py	Thu Jul 18 10:39:26 2013 +0200
@@ -116,8 +116,21 @@
         return [l.label for l in self.alternative_labels.all() if l.label != self.label]
     
     @property
+    def wikipedia_language_version(self):
+        if not self.wikipedia_url:
+            return None
+        for lang, urls in settings.WIKIPEDIA_URLS.iteritems():  # @UndefinedVariable
+            if self.wikipedia_url.startswith(urls['base_url']):
+                return lang
+        return None
+    
+    @property
     def wikipedia_revision_permalink(self):
-        return settings.WIKIPEDIA_VERSION_PERMALINK_TEMPLATE % (unicode(self.wikipedia_revision_id))
+        tmpl_str = settings.WIKIPEDIA_URLS.get(self.wikipedia_language_version, {}).get('permalink_tmpl',None)  # @UndefinedVariable
+        if tmpl_str:            
+            return tmpl_str % (unicode(self.wikipedia_revision_id))
+        else:
+            return None
     
     @property
     def url_status_text(self):
--- a/src/core/settings.py	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/core/settings.py	Thu Jul 18 10:39:26 2013 +0200
@@ -18,9 +18,58 @@
 REPR_CONTEXT  = getattr(settings,'REPR_CONTEXT' , 'http://data.culture.fr/thesaurus/resource/ark:/67717/T523')
 SREP_CONTEXT  = getattr(settings,'SREP_CONTEXT' , 'http://data.culture.fr/thesaurus/resource/ark:/67717/T507')
 
-WIKIPEDIA_BASE_URL = getattr(settings, "WIKIPEDIA_BASE_URL", "http://fr.wikipedia.org/")
-WIKIPEDIA_PAGE_URL = getattr(settings, "WIKIPEDIA_PAGE_URL", WIKIPEDIA_BASE_URL+"wiki")
-WIKIPEDIA_API_URL = getattr(settings, "WIKIPEDIA_API_URL", WIKIPEDIA_BASE_URL +"w/api.php")
-WIKIPEDIA_VERSION_PERMALINK_TEMPLATE = getattr(settings, 'WIKIPEDIA_VERSION_PERMALINK_TEMPLATE', WIKIPEDIA_BASE_URL +"w/index.php?oldid=%s")
+
+WIKIPEDIA_URLS = getattr(settings, "WIKIPEDIA_URLS", {
+    'fr': {
+        'base_url': "http://fr.wikipedia.org",
+        'page_url': "http://fr.wikipedia.org/wiki",
+        'api_url': "http://fr.wikipedia.org/w/api.php",
+        'permalink_tmpl': "http://fr.wikipedia.org/w/index.php?oldid=%s",
+        'dbpedia_uri' : "http://fr.dbpedia.org/resource/%s",
+        'dbpedia_sparql_url' : "http://fr.dbpedia.org/sparql",
+        'dbpedia_sparql_use_proxy': False,
+        'disambiguation_cat' : u'Catégorie:Homonymie',
+    },
+    'en': {
+        'base_url': "http://en.wikipedia.org",
+        'page_url': "http://en.wikipedia.org/wiki",
+        'api_url': "http://en.wikipedia.org/w/api.php",
+        'permalink_tmpl': "http://en.wikipedia.org/w/index.php?oldid=%s",
+        'dbpedia_uri' : "http://dbpedia.org/resource/%s",
+        'dbpedia_sparql_url' : "http://dbpedia.org/sparql",
+        'dbpedia_sparql_use_proxy': False,
+        'disambiguation_cat' : u'Category:Disambiguation pages',
+    },
+    'it': {
+        'base_url': "http://it.wikipedia.org",
+        'page_url': "http://it.wikipedia.org/wiki",
+        'api_url': "http://it.wikipedia.org/w/api.php",
+        'permalink_tmpl': "http://it.wikipedia.org/w/index.php?oldid=%s",
+        'dbpedia_uri' : "http://it.dbpedia.org/resource/%s",
+        'dbpedia_sparql_url' : "http://it.dbpedia.org/sparql",
+        'dbpedia_sparql_use_proxy': True,
+        'disambiguation_cat' : u'Categoria:Disambigua',
+    },
+    'de': {
+        'base_url': "http://de.wikipedia.org",
+        'page_url': "http://de.wikipedia.org/wiki",
+        'api_url': "http://de.wikipedia.org/w/api.php",
+        'permalink_tmpl': "http://de.wikipedia.org/w/index.php?oldid=%s",
+        'dbpedia_uri' : "http://de.dbpedia.org/resource/%s",
+        'dbpedia_sparql_url' : "http://de.dbpedia.org/sparql",
+        'dbpedia_sparql_use_proxy': True,
+        'disambiguation_cat' : u'Kategorie:Begriffsklärung',
+    },
+    'ja': {
+        'base_url': "http://ja.wikipedia.org",
+        'page_url': "http://ja.wikipedia.org/wiki",
+        'api_url': "http://ja.wikipedia.org/w/api.php",
+        'permalink_tmpl': "http://ja.wikipedia.org/w/index.php?oldid=%s",
+        'dbpedia_uri' : "http://ja.dbpedia.org/resource/%s",
+        'dbpedia_sparql_url' : "http://ja.dbpedia.org/sparql",
+        'dbpedia_sparql_use_proxy': False,
+        'disambiguation_cat' : u'カテゴリ:同名の地名',
+    },
+})
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/core/urls.py	Thu Jul 18 10:39:26 2013 +0200
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Jul 17, 2013
+
+@author: ymh
+'''
+from core.views import SparqlEndpointProxy
+from django.conf.urls import patterns, url
+from django.contrib.auth.decorators import login_required
+
+
+urlpatterns = patterns('',    
+    url(r'^proxy-sparql/(?P<wp_lang>\w{2})/', login_required(SparqlEndpointProxy.as_view()), name='wp_sparql_proxy'),
+)
\ No newline at end of file
--- a/src/core/views.py	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/core/views.py	Thu Jul 18 10:39:26 2013 +0200
@@ -1,1 +1,27 @@
 # Create your views here.
+from core import settings
+from django.http.response import HttpResponseNotFound, HttpResponse,\
+    HttpResponseBadRequest
+from django.views.generic import View
+import requests
+from requests.exceptions import HTTPError
+
+class SparqlEndpointProxy(View):
+    
+    def get(self, request, wp_lang):
+        params = request.GET.dict()
+        if not wp_lang or wp_lang not in settings.WIKIPEDIA_URLS:
+                return HttpResponseBadRequest("The wp_lang parameter is compulsory and must be in %s" % repr(settings.WIKIPEDIA_URLS.keys()))  # @UndefinedVariable
+
+        url = settings.WIKIPEDIA_URLS.get(wp_lang, {}).get('dbpedia_sparql_url', None)  # @UndefinedVariable
+        if not url or not url.startswith("http"):
+            return HttpResponseNotFound("No or bad url for %s: %s" % (wp_lang,repr(url)))
+        
+        try:
+            resp = requests.get(url, params=params)
+            return HttpResponse(content=resp.text, content_type=resp.headers.get('content-type'))
+        except HTTPError as e:
+            return HttpResponse(unicode(e), status=e.status_code)
+        
+        
+    
\ No newline at end of file
--- a/src/core/wp_utils.py	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/core/wp_utils.py	Thu Jul 18 10:39:26 2013 +0200
@@ -9,12 +9,13 @@
 import urllib2
 
 logger = logging.getLogger(__name__)
-site = None
+sites = {}
 
-def __get_site():
-    global site
+def __get_site(lang):
+    site = sites.get(lang, None)
     if site is None:
-        site = wiki.Wiki(settings.WIKIPEDIA_API_URL) #@UndefinedVariable
+        site = wiki.Wiki(settings.WIKIPEDIA_URLS[lang]['api_url'])  # @UndefinedVariable
+        sites[lang] = site        
     return site
 
 
@@ -52,14 +53,14 @@
     return urlquote(label.replace(" ", "_"))
 
 
-def __is_homonymie(page_dict):
+def __is_homonymie(page_dict, lang):
     for cat in page_dict.get(u"categories", []):
-        if u'Catégorie:Homonymie' in cat.get(u"title", u"") or u'Category:Disambiguation pages' in cat.get(u"title", u""):
+        if settings.WIKIPEDIA_URLS[lang]['disambiguation_cat'] in cat.get(u"title", u""):
             return True
     return False
 
 
-def query_wikipedia_title(site, label=None, pageid=None):
+def query_wikipedia_title(site, lang, label=None, pageid=None):
     
     params = {'action':'query', 'prop':'info|categories|langlinks', 'inprop':'url', 'lllimit':'500', 'cllimit':'500'}
         
@@ -101,7 +102,7 @@
     alternative_url = None
     alternative_pageid = None
     
-    if __is_homonymie(page):
+    if __is_homonymie(page, lang):
         status = TERM_URL_STATUS_DICT["homonyme"]
     elif u"redirect" in page:
         status = TERM_URL_STATUS_DICT["redirection"]
@@ -131,7 +132,7 @@
     
     
     if status == TERM_URL_STATUS_DICT['match'] or status == TERM_URL_STATUS_DICT['redirection']:
-        dbpedia_uri = settings.DBPEDIA_URI_TEMPLATE % (urlize_for_wikipedia(new_label))
+        dbpedia_uri = settings.WIKIPEDIA_URLS[lang]['dbpedia_uri'] % (urlize_for_wikipedia(new_label))
     else:
         dbpedia_uri = None
             
@@ -140,23 +141,22 @@
 
 
 
-def get_or_create_term(term_label, term_uri, term_lang, thesaurus, wp_label_transform=(lambda l:l), skip_wp_query=False):
+def get_or_create_term(term_label, term_uri, term_lang, thesaurus, lang, wp_label_transform=(lambda l:l), skip_wp_query=False):
     
     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, created = Term.objects.get_or_create(uri=term_uri, defaults = {'label':term_label, 'thesaurus':thesaurus, 'normalized_label':term_label_normalized, 'lang' : term_lang})  # @UndefinedVariable
  
     if created:
-        wikipedia_revision_id = process_term(__get_site(), term, label=wp_label_transform(term_label_normalized))
+        wikipedia_revision_id = process_term(__get_site(lang), term, lang, 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(__get_site(), pageid=term.wikipedia_pageid)
+        wp_res = query_wikipedia_title(__get_site(lang), lang, pageid=term.wikipedia_pageid)
         wikipedia_revision_id = wp_res['revision_id']
         term.wikipedia_revision_id = wikipedia_revision_id
         term.save()
@@ -167,18 +167,23 @@
     return term, wikipedia_revision_id, created
 
 
-def process_term(site, term, label=None, verbosity=0):
-    
-    if site == None:
-        site = wiki.Wiki(settings.WIKIPEDIA_API_URL)  # @UndefinedVariable
-        
+def process_term(site, term, lang, label=None, verbosity=0):
+            
     if not label:
         label = term.label
-    elif label.startswith(settings.WIKIPEDIA_PAGE_URL):
-        url_parts = urlparse(label)
-        label = urllib2.unquote(str(url_parts.path.split('/')[-1])).decode("utf-8")
+    else:
+        for lang_code, urls in settings.WIKIPEDIA_URLS.iteritems():
+            if label.startswith(urls['page_url']):
+                # lang is overrided when an url is passed as a label.
+                lang = lang_code
+                url_parts = urlparse(label)
+                label = urllib2.unquote(str(url_parts.path.split('/')[-1])).decode("utf-8")
+                break
 
-    wp_res = query_wikipedia_title(site, label=label)
+    if site == None:
+        site = __get_site(lang)
+
+    wp_res = query_wikipedia_title(site, lang, label=label)
     new_label = wp_res['new_label']
     alternative_label= wp_res['alternative_label']
     status =  wp_res['status']
--- a/src/jocondelab/forms.py	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/forms.py	Thu Jul 18 10:39:26 2013 +0200
@@ -13,6 +13,7 @@
 from django.utils.html import format_html, escape
 from django.utils.safestring import mark_safe
 from django.utils.translation import ugettext as _
+from jocondelab import settings
 import json
 
 class ThesaurusTreeWidget(Widget):
@@ -59,6 +60,7 @@
 class ModifyWpLinkForm(Form):
     term_id = fields.IntegerField(required=True)
     label = fields.CharField(required=True, min_length=1)
+    wp_lang = fields.ChoiceField(label=_('Wikipedia version'), required=False, choices=tuple([(k,k) for k in settings.WIKIPEDIA_URLS]))
 
 class LinkSemanticLevelForm(Form):
     term_id = fields.IntegerField(required=True)
Binary file src/jocondelab/locale/en/LC_MESSAGES/django.mo has changed
--- a/src/jocondelab/locale/en/LC_MESSAGES/django.po	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/locale/en/LC_MESSAGES/django.po	Thu Jul 18 10:39:26 2013 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-07-10 17:11+0200\n"
+"POT-Creation-Date: 2013-07-18 10:33+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,114 +20,118 @@
 msgid "language"
 msgstr "language"
 
-#: forms.py:44 forms.py:46
+#: forms.py:45 forms.py:47
 msgid "Open Dialog"
 msgstr "Open thesaurus"
 
-#: forms.py:77 templates/jocondelab/term_list.html:20
+#: forms.py:63
+msgid "Wikipedia version"
+msgstr "Wikipedia version"
+
+#: forms.py:79 templates/jocondelab/term_list.html:20
 msgid "thesaurus"
 msgstr "thesaurus"
 
-#: forms.py:78
+#: forms.py:80
 msgid "thesaurus tree"
 msgstr "thesaurus tree"
 
-#: forms.py:79 forms.py:82 templates/jocondelab/term_edit.html:72
+#: forms.py:81 forms.py:84 templates/jocondelab/term_edit.html:75
 msgid "label"
 msgstr "label"
 
-#: forms.py:80
+#: forms.py:82
 msgid "link_status"
 msgstr "link status"
 
-#: forms.py:81
+#: forms.py:83
 msgid "validated"
 msgstr "valid."
 
-#: forms.py:81
+#: forms.py:83
 msgid "yes"
 msgstr "yes"
 
-#: forms.py:81
+#: forms.py:83
 msgid "no"
 msgstr "no"
 
-#: forms.py:82
+#: forms.py:84
 msgid "order_by"
 msgstr "order by"
 
-#: forms.py:82 templates/jocondelab/term_edit.html:171
+#: forms.py:84 templates/jocondelab/term_edit.html:174
 #: templates/jocondelab/term_list.html:20
 msgid "nb notice"
 msgstr "nb of notice"
 
-#: forms.py:82 templates/jocondelab/term_list.html:20
+#: forms.py:84 templates/jocondelab/term_list.html:20
 msgid "level"
 msgstr "level"
 
-#: forms.py:83
+#: forms.py:85
 msgid "order_dir"
 msgstr "sort order"
 
-#: forms.py:83
+#: forms.py:85
 msgid "asc"
 msgstr "asc."
 
-#: forms.py:83
+#: forms.py:85
 msgid "desc"
 msgstr "desc."
 
-#: settings.py:41
+#: settings.py:42
 msgid "French"
 msgstr "French"
 
-#: templates/jocondelab/term_edit.html:65
+#: templates/jocondelab/term_edit.html:68
 msgid "prev"
 msgstr "prev"
 
-#: templates/jocondelab/term_edit.html:66
+#: templates/jocondelab/term_edit.html:69
 #: templates/jocondelab/partial/pagination.html:27
 #: templates/jocondelab/partial/pagination.html:29
 msgid "next"
 msgstr "next"
 
-#: templates/jocondelab/term_edit.html:76
+#: templates/jocondelab/term_edit.html:79
 msgid "alternative labels"
 msgstr "alternative labels"
 
-#: templates/jocondelab/term_edit.html:86
+#: templates/jocondelab/term_edit.html:89
 msgid "id"
 msgstr "id"
 
-#: templates/jocondelab/term_edit.html:90
+#: templates/jocondelab/term_edit.html:93
 msgid "uri"
 msgstr "uri"
 
-#: templates/jocondelab/term_edit.html:94
+#: templates/jocondelab/term_edit.html:97
 msgid "ancestors"
 msgstr "ancestors"
 
-#: templates/jocondelab/term_edit.html:102
+#: templates/jocondelab/term_edit.html:105
 msgid "info wikipedia"
 msgstr "Wikipedia info"
 
-#: templates/jocondelab/term_edit.html:111
+#: templates/jocondelab/term_edit.html:114
 msgid "Créer page WK"
 msgstr "Create WK page"
 
-#: templates/jocondelab/term_edit.html:111
+#: templates/jocondelab/term_edit.html:114
 msgid "Need wikipedia article"
 msgstr "Need wikipedia article"
 
-#: templates/jocondelab/term_edit.html:142
+#: templates/jocondelab/term_edit.html:145
 msgid "Rech. joconde"
 msgstr "Joconde search"
 
-#: templates/jocondelab/term_edit.html:148
+#: templates/jocondelab/term_edit.html:151
 msgid "Edition wk"
 msgstr "WK Edition"
 
-#: templates/jocondelab/term_edit.html:175
+#: templates/jocondelab/term_edit.html:178
 msgid "notices"
 msgstr "notices"
 
Binary file src/jocondelab/locale/en/LC_MESSAGES/djangojs.mo has changed
--- a/src/jocondelab/locale/en/LC_MESSAGES/djangojs.po	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/locale/en/LC_MESSAGES/djangojs.po	Thu Jul 18 10:39:26 2013 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-07-10 17:11+0200\n"
+"POT-Creation-Date: 2013-07-18 10:33+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,28 +16,32 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: static/jocondelab/js/jocondelab.js:12
+#: static/jocondelab/js/jocondelab.js:14
 msgid "Redirected from: "
 msgstr "Redirected from: "
 
-#: static/jocondelab/js/jocondelab.js:58
+#: static/jocondelab/js/jocondelab.js:16
+msgid "Source wikipedia"
+msgstr "Wikipedia source"
+
+#: static/jocondelab/js/jocondelab.js:67
 #, c-format
 msgid "Confirmez-vous la suppression du lien Wikipédia pour le terme \"%s\" ?"
 msgstr ""
 "Do you confirm the deletion of the wikipedia link for the term \"%s\" ?"
 
-#: static/jocondelab/js/jocondelab.js:180
+#: static/jocondelab/js/jocondelab.js:192
 msgid "Confirmez-vous la validation de ce terme ?"
 msgstr "Do you confirm this term validation ?"
 
-#: static/jocondelab/js/jocondelab.js:183
+#: static/jocondelab/js/jocondelab.js:195
 msgid "Confirmez-vous l'invalidation de cette fiche ?"
 msgstr "Do you confirm this notice validation ?"
 
-#: static/jocondelab/js/jocondelab.js:312
+#: static/jocondelab/js/jocondelab.js:326
 msgid "Ok"
 msgstr "Ok"
 
-#: static/jocondelab/js/jocondelab.js:325
+#: static/jocondelab/js/jocondelab.js:339
 msgid "Cancel"
 msgstr "Cancel"
Binary file src/jocondelab/locale/fr/LC_MESSAGES/django.mo has changed
--- a/src/jocondelab/locale/fr/LC_MESSAGES/django.po	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/locale/fr/LC_MESSAGES/django.po	Thu Jul 18 10:39:26 2013 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-07-10 17:11+0200\n"
+"POT-Creation-Date: 2013-07-18 10:33+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -21,114 +21,119 @@
 msgid "language"
 msgstr "langue"
 
-#: forms.py:44 forms.py:46
+#: forms.py:45 forms.py:47
 msgid "Open Dialog"
 msgstr "Ouvrir thésaurus"
 
-#: forms.py:77 templates/jocondelab/term_list.html:20
+#: forms.py:63
+#, fuzzy
+msgid "Wikipedia version"
+msgstr "Version wikipedia"
+
+#: forms.py:79 templates/jocondelab/term_list.html:20
 msgid "thesaurus"
 msgstr "thésaurus"
 
-#: forms.py:78
+#: forms.py:80
 msgid "thesaurus tree"
 msgstr "Arbre du thésaurus"
 
-#: forms.py:79 forms.py:82 templates/jocondelab/term_edit.html:72
+#: forms.py:81 forms.py:84 templates/jocondelab/term_edit.html:75
 msgid "label"
 msgstr "label"
 
-#: forms.py:80
+#: forms.py:82
 msgid "link_status"
 msgstr "statut lien"
 
-#: forms.py:81
+#: forms.py:83
 msgid "validated"
 msgstr "validé"
 
-#: forms.py:81
+#: forms.py:83
 msgid "yes"
 msgstr "oui"
 
-#: forms.py:81
+#: forms.py:83
 msgid "no"
 msgstr "non"
 
-#: forms.py:82
+#: forms.py:84
 msgid "order_by"
 msgstr "ord. par"
 
-#: forms.py:82 templates/jocondelab/term_edit.html:171
+#: forms.py:84 templates/jocondelab/term_edit.html:174
 #: templates/jocondelab/term_list.html:20
 msgid "nb notice"
 msgstr "nb notice"
 
-#: forms.py:82 templates/jocondelab/term_list.html:20
+#: forms.py:84 templates/jocondelab/term_list.html:20
 msgid "level"
 msgstr "niveau"
 
-#: forms.py:83
+#: forms.py:85
 msgid "order_dir"
 msgstr "ordre tri"
 
-#: forms.py:83
+#: forms.py:85
 msgid "asc"
 msgstr "asc."
 
-#: forms.py:83
+#: forms.py:85
 msgid "desc"
 msgstr "desc."
 
-#: settings.py:41
+#: settings.py:42
 msgid "French"
 msgstr "Français"
 
-#: templates/jocondelab/term_edit.html:65
+#: templates/jocondelab/term_edit.html:68
 msgid "prev"
 msgstr "préc."
 
-#: templates/jocondelab/term_edit.html:66
+#: templates/jocondelab/term_edit.html:69
 #: templates/jocondelab/partial/pagination.html:27
 #: templates/jocondelab/partial/pagination.html:29
 msgid "next"
 msgstr "suiv."
 
-#: templates/jocondelab/term_edit.html:76
+#: templates/jocondelab/term_edit.html:79
 msgid "alternative labels"
 msgstr "Autres labels"
 
-#: templates/jocondelab/term_edit.html:86
+#: templates/jocondelab/term_edit.html:89
 msgid "id"
 msgstr "id"
 
-#: templates/jocondelab/term_edit.html:90
+#: templates/jocondelab/term_edit.html:93
 msgid "uri"
 msgstr "uri"
 
-#: templates/jocondelab/term_edit.html:94
+#: templates/jocondelab/term_edit.html:97
 msgid "ancestors"
 msgstr "ancêtres"
 
-#: templates/jocondelab/term_edit.html:102
+#: templates/jocondelab/term_edit.html:105
 msgid "info wikipedia"
 msgstr "info wikipedia"
 
-#: templates/jocondelab/term_edit.html:111
+#: templates/jocondelab/term_edit.html:114
 msgid "Créer page WK"
 msgstr "Créer page WK"
 
-#: templates/jocondelab/term_edit.html:111
+#: templates/jocondelab/term_edit.html:114
 msgid "Need wikipedia article"
 msgstr "Besoin article Wikipedia"
 
-#: templates/jocondelab/term_edit.html:142
+#: templates/jocondelab/term_edit.html:145
 msgid "Rech. joconde"
 msgstr "Rech. Joconde"
 
-#: templates/jocondelab/term_edit.html:148
+#: templates/jocondelab/term_edit.html:151
 msgid "Edition wk"
 msgstr "Edition wk"
 
-#: templates/jocondelab/term_edit.html:175
+#: templates/jocondelab/term_edit.html:178
 msgid "notices"
 msgstr "notices"
 
@@ -175,5 +180,5 @@
 msgid "login"
 msgstr "connex."
 
-msgid "English"
-msgstr "Anglais"
+#~ msgid "English"
+#~ msgstr "Anglais"
Binary file src/jocondelab/locale/fr/LC_MESSAGES/djangojs.mo has changed
--- a/src/jocondelab/locale/fr/LC_MESSAGES/djangojs.po	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/locale/fr/LC_MESSAGES/djangojs.po	Thu Jul 18 10:39:26 2013 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-07-10 17:11+0200\n"
+"POT-Creation-Date: 2013-07-18 10:33+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,27 +17,31 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: static/jocondelab/js/jocondelab.js:12
+#: static/jocondelab/js/jocondelab.js:14
 msgid "Redirected from: "
 msgstr "Redirigé de : "
 
-#: static/jocondelab/js/jocondelab.js:58
+#: static/jocondelab/js/jocondelab.js:16
+msgid "Source wikipedia"
+msgstr "Source wikipedia"
+
+#: static/jocondelab/js/jocondelab.js:67
 #, c-format
 msgid "Confirmez-vous la suppression du lien Wikipédia pour le terme \"%s\" ?"
 msgstr "Confirmez-vous la suppression du lien Wikipédia pour le terme \"%s\" ?"
 
-#: static/jocondelab/js/jocondelab.js:180
+#: static/jocondelab/js/jocondelab.js:192
 msgid "Confirmez-vous la validation de ce terme ?"
 msgstr "Confirmez-vous la validation de ce terme ?"
 
-#: static/jocondelab/js/jocondelab.js:183
+#: static/jocondelab/js/jocondelab.js:195
 msgid "Confirmez-vous l'invalidation de cette fiche ?"
 msgstr "Confirmez-vous la validation de cette fiche ?"
 
-#: static/jocondelab/js/jocondelab.js:312
+#: static/jocondelab/js/jocondelab.js:326
 msgid "Ok"
 msgstr "Ok"
 
-#: static/jocondelab/js/jocondelab.js:325
+#: static/jocondelab/js/jocondelab.js:339
 msgid "Cancel"
 msgstr "Annuler"
--- a/src/jocondelab/management/commands/import_terms.py	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/management/commands/import_terms.py	Thu Jul 18 10:39:26 2013 +0200
@@ -56,6 +56,11 @@
             default= False,
             help= 'skip wikipedia query' 
         ),
+        make_option('-l','--lang',
+            dest= 'wp_lang',
+            default= 'fr',
+            help= 'wikipedia language' 
+        ),
                                                
     )
 
@@ -64,6 +69,7 @@
         
         batch_size = options.get('batch_size', 50)
         skip_wp_query = options.get('skip_wp_query', False)
+        wp_lang = options.get('wp_lang', 'fr')
         
         transaction.enter_transaction_management()
         transaction.managed()
@@ -95,6 +101,7 @@
                     term_uri=unicode(s),
                     term_lang=lang,
                     thesaurus = thes,
+                    lang = wp_lang,
                     wp_label_transform = THESAURUS_LABEL_TRANSFORM.get(thes.label,lambda l:l),
                     skip_wp_query=skip_wp_query
                 )
--- a/src/jocondelab/settings.py	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/settings.py	Thu Jul 18 10:39:26 2013 +0200
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Django settings for jocondelab project.
 
 DEBUG = True
@@ -183,11 +184,59 @@
     }
 }
 
-WIKIPEDIA_BASE_URL = "http://fr.wikipedia.org/"
-WIKIPEDIA_PAGE_URL = WIKIPEDIA_BASE_URL + "wiki"
-WIKIPEDIA_API_URL = WIKIPEDIA_BASE_URL +"w/api.php"
-WIKIPEDIA_VERSION_PERMALINK_TEMPLATE = WIKIPEDIA_BASE_URL + "w/index.php?oldid=%s"
-DBPEDIA_URI_TEMPLATE = "http://fr.dbpedia.org/resource/%s"
+WIKIPEDIA_URLS = {
+    'fr': {
+        'base_url': "http://fr.wikipedia.org",
+        'page_url': "http://fr.wikipedia.org/wiki",
+        'api_url': "http://fr.wikipedia.org/w/api.php",
+        'permalink_tmpl': "http://fr.wikipedia.org/w/index.php?oldid=%s",
+        'dbpedia_uri' : "http://fr.dbpedia.org/resource/%s",
+        'dbpedia_sparql_url' : "http://fr.dbpedia.org/sparql",
+        'dbpedia_sparql_use_proxy': False,
+        'disambiguation_cat' : u'Catégorie:Homonymie',
+    },
+    'en': {
+        'base_url': "http://en.wikipedia.org",
+        'page_url': "http://en.wikipedia.org/wiki",
+        'api_url': "http://en.wikipedia.org/w/api.php",
+        'permalink_tmpl': "http://en.wikipedia.org/w/index.php?oldid=%s",
+        'dbpedia_uri' : "http://dbpedia.org/resource/%s",
+        'dbpedia_sparql_url' : "http://dbpedia.org/sparql",
+        'dbpedia_sparql_use_proxy': False,
+        'disambiguation_cat' : u'Category:Disambiguation pages',
+    },
+    'it': {
+        'base_url': "http://it.wikipedia.org",
+        'page_url': "http://it.wikipedia.org/wiki",
+        'api_url': "http://it.wikipedia.org/w/api.php",
+        'permalink_tmpl': "http://it.wikipedia.org/w/index.php?oldid=%s",
+        'dbpedia_uri' : "http://it.dbpedia.org/resource/%s",
+        'dbpedia_sparql_url' : "http://it.dbpedia.org/sparql",
+        'dbpedia_sparql_use_proxy': True,
+        'disambiguation_cat' : u'Categoria:Disambigua',
+    },
+    'de': {
+        'base_url': "http://de.wikipedia.org",
+        'page_url': "http://de.wikipedia.org/wiki",
+        'api_url': "http://de.wikipedia.org/w/api.php",
+        'permalink_tmpl': "http://de.wikipedia.org/w/index.php?oldid=%s",
+        'dbpedia_uri' : "http://de.dbpedia.org/resource/%s",
+        'dbpedia_sparql_url' : "http://de.dbpedia.org/sparql",
+        'dbpedia_sparql_use_proxy': True,
+        'disambiguation_cat' : u'Kategorie:Begriffsklärung',
+    },
+    'ja': {
+        'base_url': "http://ja.wikipedia.org",
+        'page_url': "http://ja.wikipedia.org/wiki",
+        'api_url': "http://ja.wikipedia.org/w/api.php",
+        'permalink_tmpl': "http://ja.wikipedia.org/w/index.php?oldid=%s",
+        'dbpedia_uri' : "http://ja.dbpedia.org/resource/%s",
+        'dbpedia_sparql_url' : "http://ja.dbpedia.org/sparql",
+        'dbpedia_sparql_use_proxy': False,
+        'disambiguation_cat' : u'カテゴリ:同名の地名',
+    },
+}
+
 JOCONDE_IMG_BASE_URL = "http://www.culture.gouv.fr/Wave/image/joconde"
 JOCONDE_NOTICE_BASE_URL = "http://www.culture.gouv.fr/public/mistral/joconde_fr?ACTION=CHERCHER&FIELD_98=REF&VALUE_98="
 JOCONDE_TERM_TREE_MAX_CHILDREN = 50
--- a/src/jocondelab/static/jocondelab/js/jocondelab.js	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/static/jocondelab/js/jocondelab.js	Thu Jul 18 10:39:26 2013 +0200
@@ -8,19 +8,21 @@
     
     wp_infobox.find('img').off('error');
     
+    
+    
     var html_str = "<h3>"+item.label+"</h3>" +
     (item.original_label !== item.label ? "<h4>" + gettext("Redirected from: ") + item.original_label+"</h4>":"") +
     "<div class='wp-infobox-wp-link'>" +
-    "<a target='_blank' href='"+ item.url +"'>Source wikipedia</a>" +
+    "<a target='_blank' href='"+ item.url +"'>" + gettext("Source wikipedia") + "</a>" +
     "</div>" +
-    "<img class='wp-img"+ ((!item.thumbnail)?" wp-missing-img":"") + "' src=\""+ item.thumbnail+"\"/>" +
-    "<div>" + item.abstract + "</div>" ;
-    
+    (item.thumbnail?"<img class='wp-img' src=\""+ item.thumbnail+"\"/>":"") +
+    "<div>" + item.abstract + "</div>" ;    
     
     wp_infobox.html(html_str);
     
     wp_infobox.find('img').error(function(){
-        $(this).addClass('wp-missing-img');
+        $(this).attr('src',static_url+"jocondelab/img/Wikipedia-logo-v2-fr.png");
+        $(this).off('error');
     });
     
     wp_infobox
@@ -29,21 +31,28 @@
         .show();
 }
 
-function get_dp_sparql(resource_url) {
+function get_dp_sparql(resource_url, wp_lang) {
     return "select distinct ?s ?t ?y ?l ?r where { " +
     "<"+resource_url+"> rdfs:label ?s . " +
     "OPTIONAL { <"+resource_url+"> dbpedia-owl:thumbnail ?t } . " +
-    "OPTIONAL { <"+resource_url+"> dbpedia-owl:abstract ?y . FILTER(langMatches(lang(?y), \"fr\")) } . "+
+    "OPTIONAL { <"+resource_url+"> dbpedia-owl:abstract ?y . FILTER(langMatches(lang(?y), \""+wp_lang+"\")) } . "+
     "OPTIONAL { <"+resource_url+"> foaf:isPrimaryTopicOf ?l } " +
     "OPTIONAL { <"+resource_url+"> dbpedia-owl:wikiPageRedirects ?r } " +
     "} LIMIT 100"
 }
 
-function get_dp_ajax(resource_url) {
+function get_dp_ajax(resource_url, wp_lang) {
+    var url;
+    if(wikipedia_urls[wp_lang]['dbpedia_sparql_use_proxy']) {
+        url = wp_sparql_proxy_url.replace(/XY(\/?)$/,wp_lang+"$1"); 
+    }
+    else {
+        url = wikipedia_urls[wp_lang]['dbpedia_sparql_url'];
+    }
     return $.ajax({
-        url: "http://fr.dbpedia.org/sparql",
+        url: url,
         data: {
-            query: get_dp_sparql(resource_url),
+            query: get_dp_sparql(resource_url, wp_lang),
             format: "application/sparql-results+json"
         },
         dataType: "json",
@@ -90,8 +99,9 @@
     // Wikipedia search management (new tag)
     $("#wp_search").autocomplete({
         source: function( request, response ) {
+            var wp_lang = $('#wp_lang').val()
             $.ajax({
-               url : "http://fr.wikipedia.org/w/api.php",
+               url : wikipedia_urls[wp_lang]['api_url'],
                dataType: "jsonp",
                data : {
                    action: "opensearch",
@@ -126,20 +136,22 @@
         focus: function(event,ui) {
             
             var page_name = ui.item.label.replace(/ /g, "_");
-            var resource_url = "http://fr.dbpedia.org/resource/" + page_name;
-            var request = get_dp_ajax(resource_url),
+            var wp_lang_code = $('#wp_lang').val();
+            var resource_url = wikipedia_urls[wp_lang_code]['dbpedia_uri'].replace(/\%s/,page_name);
+            var wp_page_url = wikipedia_urls[wp_lang_code]['page_url'] + "/" + page_name;
+            var request = get_dp_ajax(resource_url, wp_lang_code),
                 chained = request.then(function(data) {
-                        res = data.results.bindings.length>0?data.results.bindings[0]:{y:"",l:"http://fr.wikipedia.org/"+page_name,t:"", r:""};                        
-                        if(res.r) {
-                            return get_dp_ajax(res.r.value);
-                        }
-                        else {
-                            return data;
-                        }
+                    res = data.results.bindings.length>0?data.results.bindings[0]:{y:"",l:wp_page_url,t:"", r:""};                        
+                    if(res.r) {
+                        return get_dp_ajax(res.r.value, wp_lang_code);
+                    }
+                    else {
+                        return data;
+                    }
                 });
             
             chained.done(function(data) {
-                res = data.results.bindings.length>0?data.results.bindings[0]:{s:ui.item.label, y:"",l:"http://fr.wikipedia.org/"+page_name,t:"", r:""};                
+                res = data.results.bindings.length>0?data.results.bindings[0]:{s:ui.item.label, y:"",l:wp_page_url,t:"", r:""};                
                 var item = {
                     label : res.s?res.s.value:ui.item.label,
                     original_label : ui.item.label,
@@ -163,13 +175,13 @@
     };
     $('#wp_search').keyup(function(e){
         if((e.keyCode==13) && ($("#wp_search").val()!="") && (select_done==false)){
-            update_link($("#wp_search").val());
+            update_link($("#wp_search").val(), $("#wp_lang").val());
         }
         select_done = false;
     });
     $("#ok_search").click(function(){
         if($("#wp_search").val()!=""){
-            update_link($("#wp_search").val());
+            update_link($("#wp_search").val(), $("#wp_lang").val());
         }
     });
     // Validate sheet management : the radiobutton name has is "'gr_validated' + datasheet.hda_id"
@@ -217,7 +229,7 @@
     });
 }
 
-function update_link(tag_label)
+function update_link(tag_label, wp_lang)
 {
     $("#ok_search").html("<img src='"+static_url+"jocondelab/img/indicator.gif'>");
     var url = modify_wp_link_url;
@@ -226,7 +238,8 @@
         type: 'POST',
         data: {csrfmiddlewaretoken:global_csrf_token,
                term_id:term_id,
-               label:tag_label
+               label:tag_label,
+               wp_lang:wp_lang
                },
         // bug with jquery >= 1.5, "json" adds a callback so we don't specify dataType
         //dataType: 'json',
@@ -240,6 +253,7 @@
         complete: function(){
             // We empty the input and hide the ok button
             $("#wp_search").val("");
+            $("#wp_lang").val(wp_lang);
             $("#ok_search").html("<b>OK</b>");
         }
     });
@@ -401,7 +415,6 @@
 
     $('.pagination a').click(function(e) {
         e.preventDefault();
-        console.log(this);
         var values = this.href.slice(window.location.href.indexOf('?') + 1) 
         $('#term-explorer-container').load(term_list_table_url, values, function() {
             init_edit_page();
--- a/src/jocondelab/templates/jocondelab/base.html	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/base.html	Thu Jul 18 10:39:26 2013 +0200
@@ -34,7 +34,7 @@
     {% block js_declaration %}
     <script type="text/javascript">
     var term_tree_json_url = "{% url 'term_tree' 0 %}";
-    var term_tree_valid_thesaurus = JSON.parse('{{ term_tree_valid_thesaurus | safe }}') ;
+    var term_tree_valid_thesaurus = {% if term_tree_valid_thesaurus %}JSON.parse('{{ term_tree_valid_thesaurus | safe }}'){% else %}[]{% endif %} ;
     </script>
     {% endblock %}
     
--- a/src/jocondelab/templates/jocondelab/term_edit.html	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/term_edit.html	Thu Jul 18 10:39:26 2013 +0200
@@ -15,6 +15,9 @@
     var validate_term_url = "{% url 'validate_term' %}";
     var term_list_table_url = "{% url 'term_list_table' %}";
     var link_semantic_level_url = "{% url 'editon_link_semantic_level' %}";
+    var wp_sparql_proxy_url = "{% url 'wp_sparql_proxy' 'XY' %}";
+    var wikipedia_urls = JSON.parse('{{ wikipedia_urls | safe }}');
+    var select_done = false;
     
     $(document).ready(function(){
         init_term_events();
@@ -160,9 +163,9 @@
             </span>
             <span>
             {% if term.validated %}
-            <span><input type="text" name="wp_search" id="wp_search" size="30" disabled="disabled" /> <span id="ok_search_disabled" class="hand_cursor_disabled"><b>OK</b></span></span>
+            <span><select name="wp_lang" id="wp_lang" disabled="disabled"><option value="fr" selected="selected">fr</option></select><input type="text" name="wp_search" id="wp_search" size="30" disabled="disabled" /> <span id="ok_search_disabled" class="hand_cursor_disabled"><b>OK</b></span></span>
             {% else %}
-            <span><input type="text" name="wp_search" id="wp_search" size="30" /> <span id="ok_search" class="hand_cursor"><b>OK</b></span></span>
+            <span><select name="wp_lang" id="wp_lang">{% for wp_lang in wikipedia_lang_list %}<option value="{{ wp_lang }}" {% if wp_lang == 'fr' %}selected="selected"{% endif %}>{{ wp_lang }}</option>{% endfor %}</select><input type="text" name="wp_search" id="wp_search" size="30" /> <span id="ok_search" class="hand_cursor"><b>OK</b></span></span>
             {% endif %}
             </span>
         </td>
@@ -188,12 +191,12 @@
             <div class="notice-desc">
                 <table>
                 <tr><td class="notice-field-title">ref</td><td class="notice-field-val"><a target="_blank" href="{{JOCONDE_NOTICE_BASE_URL}}{{ notice.ref }}">{{ notice.ref }}</a></td></tr>
-                <tr><td class="notice-field-title">domn</td><td class="notice-field-val">{{ notice.domn }}</td></tr>
-                <tr><td class="notice-field-title">deno</td><td class="notice-field-val">{{ notice.deno }}</td></tr>
-                <tr><td class="notice-field-title">titr</td><td class="notice-field-val">{{ notice.titr }}</td></tr>
-                <tr><td class="notice-field-title">pdec</td><td class="notice-field-val">{{ notice.pdec }}</td></tr>
-                <tr><td class="notice-field-title">lieux</td><td class="notice-field-val">{{ notice.lieux }}</td></tr>
-                <tr><td class="notice-field-title">inv</td><td class="notice-field-val">{{ notice.inv }}</td></tr>                
+                <tr><td class="notice-field-title">titr</td><td class="notice-field-val">{{ notice.titr | truncatewords:100}}</td></tr>
+                <tr><td class="notice-field-title">autr</td><td class="notice-field-val">{{ notice.autr | truncatewords:100}}</td></tr>
+                <tr><td class="notice-field-title">paut</td><td class="notice-field-val">{{ notice.paut | truncatewords:100 }}</td></tr>
+                <tr><td class="notice-field-title">sref</td><td class="notice-field-val">{{ notice.sref | truncatewords:100}}</td></tr>
+                <tr><td class="notice-field-title">drep</td><td class="notice-field-val">{{ notice.drep | truncatewords:100}}</td></tr>
+                <tr><td class="notice-field-title">lieux</td><td class="notice-field-val">{{ notice.lieux | truncatewords:100}}</td></tr>
                 </table>
             </div>
         </td>
--- a/src/jocondelab/urls.py	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/urls.py	Thu Jul 18 10:39:26 2013 +0200
@@ -1,9 +1,10 @@
 from .views import (TermListView, TermEditView, TermModifyWpLink, 
     TermRemoveWpLink, TermValidate, TermWikipediaEdition, 
     TermLinkSemanticLevelEdition, ThesaurusTree)
+from core import urls as core_urls
 from django.conf.urls import patterns, include, url
 from django.contrib import admin
-from django.contrib.auth import urls as auth_url
+from django.contrib.auth import urls as auth_urls
 from django.contrib.auth.decorators import login_required
 from jocondelab.views import TermListTableView
 
@@ -14,7 +15,8 @@
 admin.autodiscover()
 
 urlpatterns = patterns('',    
-    url(r'^auth/', include(auth_url)),    
+    url(r'^auth/', include(auth_urls)),
+    url(r'^core/', include(core_urls)),    
     url(r'^logout/$', 'django.contrib.auth.views.logout_then_login', name='joconde_logout'),
     url(r'^admin/', include(admin.site.urls)),
     url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
--- a/src/jocondelab/views.py	Thu Jul 11 14:26:00 2013 +0200
+++ b/src/jocondelab/views.py	Thu Jul 18 10:39:26 2013 +0200
@@ -117,6 +117,8 @@
         context['link_semantic_level_choice'] = TERM_WK_LINK_SEMANTIC_LEVEL_CHOICES
         context['JOCONDE_IMG_BASE_URL'] = settings.JOCONDE_IMG_BASE_URL
         context['JOCONDE_NOTICE_BASE_URL'] = settings.JOCONDE_NOTICE_BASE_URL
+        context['wikipedia_lang_list'] = settings.WIKIPEDIA_URLS.keys()
+        context['wikipedia_urls'] = json.dumps(settings.WIKIPEDIA_URLS)
         
         field_index = {
             'DOMN' : 1,
@@ -252,8 +254,9 @@
     def process_term(self, request):
         
         label = self.form_values['label']
+        wp_lang = self.form_values['wp_lang']
                 
-        wp_process_term(None, self.term, label)
+        wp_process_term(None, self.term, wp_lang, label=label)
         
         return HttpResponse(status=204)