Model reorganization for user + migration.
authorymh <ymh.work@gmail.com>
Mon, 19 Aug 2013 12:12:17 +0200
changeset 91 3bbf7371378a
parent 85 8c071ab137ad
child 92 5750195b0164
Model reorganization for user + migration. + translation import
.settings/org.eclipse.core.resources.prefs
src/core/admin.py
src/core/forms.py
src/core/migrations/0010_auto__add_user__chg_field_term_validator.py
src/core/models/__init__.py
src/core/models/term.py
src/core/models/user.py
src/core/settings.py
src/core/wp_utils.py
src/jocondelab/admin.py
src/jocondelab/forms.py
src/jocondelab/management/commands/import_dbpedia_fields.py
src/jocondelab/migrations/0004_auto__del_user.py
src/jocondelab/migrations/0005_auto__add_termlinks__add_dbpediafields.py
src/jocondelab/migrations/0006_test.py
src/jocondelab/models.py
src/jocondelab/models/__init__.py
src/jocondelab/models/data.py
src/jocondelab/settings.py
--- a/.settings/org.eclipse.core.resources.prefs	Tue Jul 30 23:08:31 2013 +0200
+++ b/.settings/org.eclipse.core.resources.prefs	Mon Aug 19 12:12:17 2013 +0200
@@ -1,4 +1,5 @@
 eclipse.preferences.version=1
+encoding//src/core/forms.py=utf-8
 encoding//src/core/import_processor.py=utf-8
 encoding//src/core/migrations/0001_initial.py=utf-8
 encoding//src/core/migrations/0002_auto__add_field_term_wikipedia_edition.py=utf-8
@@ -9,8 +10,10 @@
 encoding//src/core/migrations/0007_auto__add_field_term_nb_notice.py=utf-8
 encoding//src/core/migrations/0008_populate_nb_notice.py=utf-8
 encoding//src/core/migrations/0009_auto__add_field_term_parent__add_field_term_lft__add_field_term_rght__.py=utf-8
+encoding//src/core/migrations/0010_auto__add_user__chg_field_term_validator.py=utf-8
 encoding//src/core/models/notice.py=utf-8
 encoding//src/core/models/term.py=utf-8
+encoding//src/core/models/user.py=utf-8
 encoding//src/core/rdf_models.py=utf-8
 encoding//src/core/settings.py=utf-8
 encoding//src/core/templatetags/core_extras.py=utf-8
@@ -22,6 +25,7 @@
 encoding//src/jocondelab/forms.py=utf-8
 encoding//src/jocondelab/management/commands/import_countries.py=utf-8
 encoding//src/jocondelab/management/commands/import_csv.py=utf-8
+encoding//src/jocondelab/management/commands/import_dbpedia_fields.py=utf-8
 encoding//src/jocondelab/management/commands/import_skos.py=utf-8
 encoding//src/jocondelab/management/commands/import_term_labels.py=utf-8
 encoding//src/jocondelab/management/commands/import_terms.py=utf-8
@@ -29,7 +33,10 @@
 encoding//src/jocondelab/migrations/0001_initial.py=utf-8
 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/migrations/0004_auto__del_user.py=utf-8
+encoding//src/jocondelab/migrations/0005_auto__add_termlinks__add_dbpediafields.py=utf-8
+encoding//src/jocondelab/migrations/0006_test.py=utf-8
+encoding//src/jocondelab/models/data.py=utf-8
 encoding//src/jocondelab/settings.py=utf-8
 encoding//src/jocondelab/utils.py=utf-8
 encoding//src/jocondelab/views.py=utf-8
--- a/src/core/admin.py	Tue Jul 30 23:08:31 2013 +0200
+++ b/src/core/admin.py	Mon Aug 19 12:12:17 2013 +0200
@@ -1,6 +1,16 @@
+from core.models import User, Notice, Term, Thesaurus
 from django.contrib import admin
-from .models import Notice, Term, Thesaurus
+from django.contrib.auth.admin import UserAdmin as AuthUserAdmin
+from django.utils.translation import gettext_lazy as _
+from core.forms import UserChangeForm, UserCreationform
 
+class UserAdmin(AuthUserAdmin):
+    form = UserChangeForm
+    add_form = UserCreationform
+    fieldsets = tuple(list(AuthUserAdmin.fieldsets) + [(_('language'), {'fields':('language',)})])
+
+
+admin.site.register(User, UserAdmin)
 
 admin.site.register(Notice)
 admin.site.register(Term)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/core/forms.py	Mon Aug 19 12:12:17 2013 +0200
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Aug 1, 2013
+
+@author: ymh
+'''
+from django.conf import settings
+from django.contrib.auth import get_user_model
+from django.contrib.auth.forms import (UserChangeForm as AuthUserChangeForm, 
+    UserCreationForm as AuthUserCreationForm)
+from django.core.exceptions import ValidationError
+from django.forms.fields import ChoiceField
+from django.utils.translation import ugettext as _
+
+
+User = get_user_model()
+
+class UserCreationform(AuthUserCreationForm):
+    class Meta:
+        model = User
+        
+    def clean_username(self):
+        # Since User.username is unique, this check is redundant,
+        # but it sets a nicer error message than the ORM. See #13147.
+        username = self.cleaned_data["username"]
+        try:
+            User.objects.get(username=username)
+        except User.DoesNotExist:
+            return username
+        raise ValidationError(self.error_messages['duplicate_username'])    
+    
+
+class UserChangeForm(AuthUserChangeForm):
+    language = ChoiceField(label=_("language"), choices=[(k,_(v)) for k,v in settings.LANGUAGES], initial=settings.LANGUAGE_CODE[:2])
+    class Meta:
+        model = User
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/core/migrations/0010_auto__add_user__chg_field_term_validator.py	Mon Aug 19 12:12:17 2013 +0200
@@ -0,0 +1,257 @@
+# -*- coding: utf-8 -*-
+from south.db import db
+from south.v2 import SchemaMigration
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Adding model 'User'
+        db.rename_table(u'jocondelab_user',u'core_user')  # @UndefinedVariable
+
+        db.delete_unique(u'jocondelab_user_groups', ['user_id', 'group_id'])  # @UndefinedVariable
+        # Adding M2M table for field groups on 'User'
+        db.rename_table(u'jocondelab_user_groups', u'core_user_groups')  # @UndefinedVariable
+        db.create_unique(u'core_user_groups', ['user_id', 'group_id'])  # @UndefinedVariable
+
+        db.delete_unique(u'jocondelab_user_user_permissions', ['user_id', 'permission_id'])  # @UndefinedVariable
+        # Adding M2M table for field user_permissions on 'User'
+        #
+        db.rename_table(u'jocondelab_user_user_permissions', u'core_user_user_permissions')  # @UndefinedVariable
+        db.create_unique(u'core_user_user_permissions', ['user_id', 'permission_id'])  # @UndefinedVariable
+
+
+        # Changing field 'Term.validator'
+        db.alter_column(u'core_term', 'validator_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['core.User'], null=True))  # @UndefinedVariable
+
+    def backwards(self, orm):
+        # Deleting model 'User'
+        db.rename_table(u'core_user',u'jocondelab_user')  # @UndefinedVariable
+
+        db.delete_unique(u'core_user_groups', ['user_id', 'group_id'])  # @UndefinedVariable
+        # Adding M2M table for field groups on 'User'
+        db.rename_table(u'core_user_groups', u'jocondelab_user_groups')  # @UndefinedVariable
+        db.create_unique(u'jocondelab_user_groups', ['user_id', 'group_id'])  # @UndefinedVariable
+
+        db.delete_unique(u'core_user_user_permissions',['user_id', 'permission_id'])  # @UndefinedVariable
+        # Adding M2M table for field user_permissions on 'User'
+        #
+        db.rename_table(u'core_user_user_permissions', u'jocondelab_user_user_permissions')  # @UndefinedVariable
+        db.create_unique(u'jocondelab_user_user_permissions', ['user_id', 'permission_id'])  # @UndefinedVariable
+
+        # Changing field 'Term.validator'
+        db.alter_column(u'core_term', 'validator_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['jocondelab.User'], null=True))  # @UndefinedVariable
+
+    models = {
+        u'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        u'auth.permission': {
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'core.autrnoticeterm': {
+            'Meta': {'object_name': 'AutrNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.domnnoticeterm': {
+            'Meta': {'object_name': 'DomnNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.ecolnoticeterm': {
+            'Meta': {'object_name': 'EcolNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.epoqnoticeterm': {
+            'Meta': {'object_name': 'EpoqNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.lieuxnoticeterm': {
+            'Meta': {'object_name': 'LieuxNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.notice': {
+            'Meta': {'object_name': 'Notice'},
+            'adpt': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'appl': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'aptn': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'attr': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'autr': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'autr_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'autr+'", 'symmetrical': 'False', 'through': "orm['core.AutrNoticeTerm']", 'to': "orm['core.Term']"}),
+            'bibl': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'comm': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'contact': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'coor': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'copy': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'dacq': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'data': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'dation': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'ddpt': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'decv': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'deno': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'depo': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'desc': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'desy': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'dims': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'dmaj': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'dmis': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'domn': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'domn_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'domn+'", 'symmetrical': 'False', 'through': "orm['core.DomnNoticeTerm']", 'to': "orm['core.Term']"}),
+            'drep': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'ecol': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'ecol_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'ecol+'", 'symmetrical': 'False', 'through': "orm['core.EcolNoticeTerm']", 'to': "orm['core.Term']"}),
+            'epoq': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'epoq_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'epoq+'", 'symmetrical': 'False', 'through': "orm['core.EpoqNoticeTerm']", 'to': "orm['core.Term']"}),
+            'etat': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'expo': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'gene': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'geohi': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'hist': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'insc': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'inv': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'labo': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'lieux': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'lieux_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'lieux+'", 'symmetrical': 'False', 'through': "orm['core.LieuxNoticeTerm']", 'to': "orm['core.Term']"}),
+            'loca': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'loca2': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'mill': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'milu': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'mosa': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'msgcom': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'museo': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'nsda': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'onom': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'paut': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'pdat': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'pdec': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'peoc': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'peri': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'peri_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'peri+'", 'symmetrical': 'False', 'through': "orm['core.PeriNoticeTerm']", 'to': "orm['core.Term']"}),
+            'peru': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'phot': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'pins': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'plieux': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'prep': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'puti': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'reda': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'ref': ('django.db.models.fields.CharField', [], {'max_length': '20', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+            'refim': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'repr': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'repr_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'repr+'", 'symmetrical': 'False', 'through': "orm['core.ReprNoticeTerm']", 'to': "orm['core.Term']"}),
+            'srep': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'srep_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'srep+'", 'symmetrical': 'False', 'through': "orm['core.SrepNoticeTerm']", 'to': "orm['core.Term']"}),
+            'stat': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'tech': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'tico': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'titr': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'util': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'video': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'www': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'})
+        },
+        'core.noticeimage': {
+            'Meta': {'unique_together': "(('relative_url', 'notice'),)", 'object_name': 'NoticeImage'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'notice': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'images'", 'to': "orm['core.Notice']"}),
+            'relative_url': ('django.db.models.fields.URLField', [], {'max_length': "'1024'"})
+        },
+        'core.noticeterm': {
+            'Meta': {'object_name': 'NoticeTerm'},
+            'graph': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'notice': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Notice']"}),
+            'term': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Term']"})
+        },
+        'core.perinoticeterm': {
+            'Meta': {'object_name': 'PeriNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.reprnoticeterm': {
+            'Meta': {'object_name': 'ReprNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.srepnoticeterm': {
+            'Meta': {'object_name': 'SrepNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.term': {
+            'Meta': {'object_name': 'Term'},
+            'alternative_wikipedia_pageid': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+            'alternative_wikipedia_url': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'dbpedia_uri': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
+            'lang': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
+            u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'link_semantic_level': ('django.db.models.fields.IntegerField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'nb_notice': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True'}),
+            'normalized_label': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
+            'notices': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'terms+'", 'symmetrical': 'False', 'through': "orm['core.NoticeTerm']", 'to': "orm['core.Notice']"}),
+            'parent': ('mptt.fields.TreeForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['core.Term']"}),
+            u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'thesaurus': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Thesaurus']"}),
+            u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'uri': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'url_status': ('django.db.models.fields.IntegerField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'validated': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+            'validation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'validator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.User']", 'null': 'True', 'blank': 'True'}),
+            'wikipedia_edition': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'wikipedia_pageid': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+            'wikipedia_revision_id': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'wikipedia_url': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'wp_alternative_label': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'wp_label': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '1024', 'null': 'True', 'blank': 'True'})
+        },
+        'core.termlabel': {
+            'Meta': {'object_name': 'TermLabel'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
+            'lang': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
+            'term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'alternative_labels'", 'to': "orm['core.Term']"})
+        },
+        'core.thesaurus': {
+            'Meta': {'ordering': "['label']", 'object_name': 'Thesaurus'},
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '1024'}),
+            'uri': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'})
+        },
+        'core.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        }
+    }
+
+    complete_apps = ['core']
\ No newline at end of file
--- a/src/core/models/__init__.py	Tue Jul 30 23:08:31 2013 +0200
+++ b/src/core/models/__init__.py	Mon Aug 19 12:12:17 2013 +0200
@@ -1,11 +1,14 @@
-__all__ = ['Notice', 'Term', 'TermLabel', 'Thesaurus', 'NoticeImage', 'NoticeTerm',
+__all__ = ['User', 'Notice', 'Term', 'TermLabel', 'Thesaurus', 'NoticeImage', 'NoticeTerm',
             'AutrNoticeTerm', 'DomnNoticeTerm', 'EcolNoticeTerm',
-            'EpoqNoticeTerm', 'LieuxNoticeTerm', 'PeriNoticeTerm', 
+            'EpoqNoticeTerm', 'LieuxNoticeTerm', 'PeriNoticeTerm',
             'ReprNoticeTerm', 'SrepNoticeTerm',
-            'TERM_URL_STATUS_CHOICES', 'TERM_URL_STATUS_CHOICES_TRANS', 'TERM_URL_STATUS_DICT', 'TERM_WK_LINK_SEMANTIC_LEVEL_CHOICES_TRANS']
+            'TERM_URL_STATUS_CHOICES', 'TERM_URL_STATUS_CHOICES_TRANS', 'TERM_URL_STATUS_DICT', 'TERM_WK_LINK_SEMANTIC_LEVEL_CHOICES_TRANS',
+            ]
 
-from .notice import (Notice, NoticeImage, NoticeTerm, AutrNoticeTerm, 
+from core.models.user import User
+from core.models.notice import (Notice, NoticeImage, NoticeTerm, AutrNoticeTerm, 
     DomnNoticeTerm, EcolNoticeTerm, EpoqNoticeTerm, LieuxNoticeTerm, PeriNoticeTerm, 
     ReprNoticeTerm, SrepNoticeTerm)
-from .term import (Term, TermLabel, Thesaurus, TERM_URL_STATUS_CHOICES, 
-    TERM_URL_STATUS_CHOICES_TRANS, TERM_URL_STATUS_DICT, TERM_WK_LINK_SEMANTIC_LEVEL_CHOICES_TRANS)
+from core.models.term import (Term, TermLabel, Thesaurus, TERM_URL_STATUS_CHOICES, 
+    TERM_URL_STATUS_CHOICES_TRANS, TERM_URL_STATUS_DICT, 
+    TERM_WK_LINK_SEMANTIC_LEVEL_CHOICES_TRANS)
--- a/src/core/models/term.py	Tue Jul 30 23:08:31 2013 +0200
+++ b/src/core/models/term.py	Mon Aug 19 12:12:17 2013 +0200
@@ -5,17 +5,16 @@
 @author: ymh
 '''
 
-from .. import settings
-from django.contrib.auth import get_user_model
+from core import settings
 from django.db import models
 from django.utils.translation import ugettext as _
 from mptt.models import MPTTModel, TreeForeignKey
 import datetime
 import logging
+from core.models import User
 
 logger = logging.getLogger(__name__)
 
-User = get_user_model()
 
 TERM_URL_STATUS_CHOICES = (
     (0, "null_result"),
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/core/models/user.py	Mon Aug 19 12:12:17 2013 +0200
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Jul 31, 2013
+
+@author: ymh
+'''
+from django.conf import settings
+from django.contrib.auth.models import AbstractUser
+from django.db import models
+
+class User(AbstractUser):
+    language = models.CharField(max_length=2, default=settings.LANGUAGE_CODE[:2])
+    
+    class Meta:
+        app_label = 'core'
+
--- a/src/core/settings.py	Tue Jul 30 23:08:31 2013 +0200
+++ b/src/core/settings.py	Mon Aug 19 12:12:17 2013 +0200
@@ -25,6 +25,7 @@
         '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_base_url' : "http://fr.dbpedia.org",
         'dbpedia_uri' : "http://fr.dbpedia.org/resource/%s",
         'dbpedia_sparql_url' : "http://fr.dbpedia.org/sparql",
         'dbpedia_sparql_use_proxy': False,
@@ -35,6 +36,7 @@
         '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_base_url' : "http://dbpedia.org",
         'dbpedia_uri' : "http://dbpedia.org/resource/%s",
         'dbpedia_sparql_url' : "http://dbpedia.org/sparql",
         'dbpedia_sparql_use_proxy': False,
@@ -45,6 +47,7 @@
         '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_base_url' : "http://it.dbpedia.org",
         'dbpedia_uri' : "http://it.dbpedia.org/resource/%s",
         'dbpedia_sparql_url' : "http://it.dbpedia.org/sparql",
         'dbpedia_sparql_use_proxy': True,
@@ -55,6 +58,7 @@
         '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_base_url' : "http://de.dbpedia.org",
         'dbpedia_uri' : "http://de.dbpedia.org/resource/%s",
         'dbpedia_sparql_url' : "http://de.dbpedia.org/sparql",
         'dbpedia_sparql_use_proxy': True,
@@ -65,6 +69,7 @@
         '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_base_url' : "http://ja.dbpedia.org",
         'dbpedia_uri' : "http://ja.dbpedia.org/resource/%s",
         'dbpedia_sparql_url' : "http://ja.dbpedia.org/sparql",
         'dbpedia_sparql_use_proxy': False,
--- a/src/core/wp_utils.py	Tue Jul 30 23:08:31 2013 +0200
+++ b/src/core/wp_utils.py	Mon Aug 19 12:12:17 2013 +0200
@@ -221,3 +221,10 @@
     
     return revision_id
     
+def get_dbpedia_lang(dbp_uri):
+    
+    for lang, props in settings.WIKIPEDIA_URLS.iteritems():
+        if dbp_uri.startswith(props['dbpedia_base_url']):
+            return lang
+    return None
+
--- a/src/jocondelab/admin.py	Tue Jul 30 23:08:31 2013 +0200
+++ b/src/jocondelab/admin.py	Mon Aug 19 12:12:17 2013 +0200
@@ -1,14 +1,2 @@
-from django.contrib import admin
-from django.contrib.auth.admin import UserAdmin as AuthUserAdmin
-from django.utils.translation import gettext_lazy as _
-from jocondelab.forms import UserChangeForm, UserCreationform
-from jocondelab.models import User
 
 
-class UserAdmin(AuthUserAdmin):
-    form = UserChangeForm
-    add_form = UserCreationform
-    fieldsets = tuple(list(AuthUserAdmin.fieldsets) + [(_('language'), {'fields':('language',)})])
-
-
-admin.site.register(User, UserAdmin)
--- a/src/jocondelab/forms.py	Tue Jul 30 23:08:31 2013 +0200
+++ b/src/jocondelab/forms.py	Mon Aug 19 12:12:17 2013 +0200
@@ -6,11 +6,7 @@
 '''
 from core.models import (Thesaurus, Term, TERM_URL_STATUS_CHOICES_TRANS, 
     TERM_WK_LINK_SEMANTIC_LEVEL_CHOICES_TRANS)
-from django.contrib.auth import get_user_model
-from django.contrib.auth.forms import (UserChangeForm as AuthUserChangeForm, 
-    UserCreationForm as AuthUserCreationForm)
-from django.forms import Form, fields, ModelChoiceField, ValidationError
-from django.forms.fields import ChoiceField
+from django.forms import Form, fields, ModelChoiceField
 from django.forms.util import flatatt
 from django.forms.widgets import (Widget, Select, 
     NullBooleanSelect as DjangoNullBooleanSelect)
@@ -22,7 +18,6 @@
 from jocondelab import settings
 import json
 
-User = get_user_model()
 
 class ThesaurusTreeWidget(Widget):
     
@@ -160,22 +155,3 @@
         
         return qs
     
-class UserCreationform(AuthUserCreationForm):
-    class Meta:
-        model = User
-        
-    def clean_username(self):
-        # Since User.username is unique, this check is redundant,
-        # but it sets a nicer error message than the ORM. See #13147.
-        username = self.cleaned_data["username"]
-        try:
-            User.objects.get(username=username)
-        except User.DoesNotExist:
-            return username
-        raise ValidationError(self.error_messages['duplicate_username'])    
-    
-
-class UserChangeForm(AuthUserChangeForm):
-    language = ChoiceField(label=_("language"), choices=[(k,_(v)) for k,v in settings.LANGUAGES], initial=settings.LANGUAGE_CODE[:2])
-    class Meta:
-        model = User
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/management/commands/import_dbpedia_fields.py	Mon Aug 19 12:12:17 2013 +0200
@@ -0,0 +1,194 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Jul 31, 2013
+
+@author: ymh
+'''
+from SPARQLWrapper.Wrapper import RDF, SPARQLWrapper
+from core.models import Term
+from core.utils import show_progress
+from core.wp_utils import get_dbpedia_lang
+from django.conf import settings
+from django.core.management.base import NoArgsCommand
+from django.db import reset_queries, transaction
+from django.db.models.aggregates import Count
+from django.utils.http import urlunquote
+from jocondelab.models.data import TermLinks, DbpediaFields
+from optparse import make_option
+from rdflib.term import URIRef
+import sys
+import traceback
+import urllib2
+
+class Command(NoArgsCommand):
+    '''
+    query and update wikipedia for tag title.
+    '''
+    options = ''
+    help = """query and update wikipedia for tag title."""
+    
+    option_list = NoArgsCommand.option_list + (
+        make_option('--all',
+            action='store_true',
+            dest='all',
+            default=False,
+            help='force all tags to be updated, not only those not yet processed'),
+        make_option('--force',
+            action='store_true',
+            dest='force',
+            default=False,
+            help='ask no questions'),
+        make_option('--validated',
+            action='store_true',
+            dest='validated',
+            default=False,
+            help='query only validated terms'),
+        make_option('--random',
+            action='store_true',
+            dest='random',
+            default=False,
+            help='randomize query on tags'),
+        make_option('--limit',
+            action='store',
+            type='int',
+            dest='limit',
+            default= -1,
+            help='number of tag to process'),
+        make_option('--start',
+            action='store',
+            type='int',
+            dest='start',
+            default=0,
+            help='number of tag to ignore'),
+        make_option('--term',
+            action='append',
+            dest='terms',
+            type='string',
+            default=[],
+            help='the tag to query'),
+    )
+    
+    def handle_noargs(self, **options):
+
+        self.interactive = options.get('interactive', True)
+        self.verbosity = int(options.get('verbosity', '1'))        
+        self.all = options.get('all', False)
+        self.force = options.get('force', False)        
+        self.limit = options.get("limit", -1)
+        self.start = options.get("start", 0)        
+        self.random = options.get('random', False)
+        self.term_list = options.get("terms", []);
+        self.validated = options.get("validated", False);
+        
+        if self.verbosity > 2:
+            print "option passed : " + repr(options)
+
+
+        qs = Term.objects.exclude(dbpedia_uri= None)  # @UndefinedVariable
+        
+        if self.validated:
+            qs = qs.filter(validated=True)
+        
+        if self.term_list:
+            qs = qs.filter(label__in = self.term_list)
+            
+        if not self.all:
+            qs = qs.annotate(dbfc=Count('dbpedia_fields')).filter(dbfc = 0)
+            
+        if self.random:
+            qs = qs.order_by('?')
+        else:
+            qs = qs.order_by('label')
+        
+        if self.limit >= 0:
+            qs = qs[self.start:self.limit]
+        elif self.start > 0:
+            qs = qs[self.start:]
+
+        if self.verbosity > 2 :
+            print("Term Query is %s" % (qs.query))
+
+        count = qs.count()
+        
+        if count == 0:
+            print("No tag to query : exit.")
+            return
+
+        if not self.force and self.interactive:
+            confirm = raw_input("You have requested to query and replace the dbpedia information for %d terms.\n Are you sure you want to do this? \nType 'yes' to continue, or 'no' to cancel: " % (count))
+        else:
+            confirm = 'yes'
+            
+        if confirm != "yes":
+            print "dbpedia query cancelled"
+            return
+
+        endpoints = {}
+        
+        writer = None
+        transaction.enter_transaction_management()
+        for i,aterm in enumerate(qs):
+            writer = show_progress(i+1, count, aterm.label, 50, writer)
+            reset_queries()
+            
+            try :
+                abstracts = {}
+                labels = {}
+                thumbnail = None
+                dbp_lang = get_dbpedia_lang(aterm.dbpedia_uri)
+                if dbp_lang is None:
+                    print("Lang unknown for %s, continue" % aterm.dbpedia_uri)
+                    continue
+                endpoint = endpoints.get(dbp_lang, None)
+                if endpoint is None:
+                    dbpedia_sparql_url = settings.WIKIPEDIA_URLS.get(dbp_lang,{}).get('dbpedia_sparql_url', None)
+                    if dbpedia_sparql_url is None:
+                        print("Lang unknown for %s, continue" % aterm.dbpedia_uri)
+                        continue
+                    endpoint = endpoints.setdefault(dbp_lang, SPARQLWrapper(dbpedia_sparql_url, returnFormat=RDF))
+                
+
+                dbpedia_uri = urlunquote(aterm.dbpedia_uri)
+
+                endpoint.setQuery(u"select distinct ?y where {<%s>  <http://dbpedia.org/ontology/abstract> ?y}" % (dbpedia_uri))
+                
+                res_abstracts = endpoint.queryAndConvert()
+                for _,_,o in res_abstracts.triples((None, URIRef('http://www.w3.org/2005/sparql-results#value'), None)):
+                    abstracts[o.language] = unicode(o)
+
+
+                endpoint.setQuery(u"select distinct ?y where {<%s>  <http://www.w3.org/2000/01/rdf-schema#label> ?y}" % (dbpedia_uri))
+                res_labels = endpoint.queryAndConvert()
+                for _,_,o in res_labels.triples((None, URIRef('http://www.w3.org/2005/sparql-results#value'), None)):
+                    labels[o.language] = unicode(o)
+                        
+                endpoint.setQuery(u"select distinct ?y where {<%s>  <http://dbpedia.org/ontology/thumbnail> ?y} limit 1" % (dbpedia_uri))
+                res_thumbnails = endpoint.queryAndConvert()
+                for _,_,o in res_thumbnails.triples((None, URIRef('http://www.w3.org/2005/sparql-results#value'), None)):
+                    thumbnail = unicode(o)
+
+                endpoint.setQuery(u'select distinct ?y where { <%s> ?p ?y . FILTER regex(?y, "^http://dbpedia.org/resource")}' % (dbpedia_uri))
+                res_links = endpoint.queryAndConvert()
+                for _,_,o in res_links.triples((None, URIRef('http://www.w3.org/2005/sparql-results#value'), None)):
+                    termqs = Term.objects.filter(dbpedia_uri= urllib2.quote(unicode(o).encode("utf8")))  # @UndefinedVariable
+                    if len(termqs):
+                        TermLinks.objects.get_or_create(subject=aterm, object=termqs[0])                        
+                
+                language_set = set(labels.keys()) | set(abstracts.keys())
+
+                for lang in language_set:
+                    dbfield , created = DbpediaFields.objects.get_or_create(dbpedia_uri=aterm.dbpedia_uri, language_code=lang, term=aterm, defaults={'abstract':abstracts.get(lang, None), 'thumbnail':thumbnail, 'label':labels.get(lang, None)}) #@UndefinedVariable
+                    if not created:
+                        dbfield.abstract = abstracts.get(lang, None)
+                        dbfield.thumbnail = thumbnail
+                        dbfield.label = labels.get(lang, None)
+                        dbfield.save()
+                    
+                transaction.commit()
+            except Exception as e:
+                print "\nError processing resource %s : %s" %(aterm.dbpedia_uri,unicode(e))
+                traceback.print_exception(type(e), e, sys.exc_info()[2])
+                transaction.rollback()
+
+        transaction.leave_transaction_management()
+            
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/migrations/0004_auto__del_user.py	Mon Aug 19 12:12:17 2013 +0200
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+from south.v2 import SchemaMigration
+
+
+class Migration(SchemaMigration):
+
+    # does nothing all has been put in core migration (0010_auto__add_user__chg_field_term_validator)
+    def forwards(self, orm):
+        orm['contenttypes.contenttype'].objects.filter(app_label='jocondelab', model='user', name='user').delete()
+
+    # does nothing all has been put in core migration (0010_auto__add_user__chg_field_term_validator)
+    def backwards(self, orm):
+        orm['contenttypes.contenttype'].objects.create(app_label='jocondelab', model='user', name='user')
+
+    models = {
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'jocondelab.country': {
+            'Meta': {'object_name': 'Country'},
+            'dbpedia_uri': ('django.db.models.fields.URLField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'iso_code_2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'db_index': 'True'}),
+            'iso_code_3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'db_index': 'True'})
+        }
+    }
+
+    complete_apps = ['jocondelab', 'contenttypes']
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/migrations/0005_auto__add_termlinks__add_dbpediafields.py	Mon Aug 19 12:12:17 2013 +0200
@@ -0,0 +1,260 @@
+# -*- coding: utf-8 -*-
+from south.db import db
+from south.v2 import SchemaMigration
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Adding model 'TermLinks'
+        db.create_table(u'jocondelab_termlinks', (  # @UndefinedVariable
+            (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('subject', self.gf('django.db.models.fields.related.ForeignKey')(related_name='termlinks_subjects', to=orm['core.Term'])),
+            ('object', self.gf('django.db.models.fields.related.ForeignKey')(related_name='termlinks_objects', to=orm['core.Term'])),
+        ))
+        db.send_create_signal('jocondelab', ['TermLinks'])  # @UndefinedVariable
+
+        # Adding model 'DbpediaFields'
+        db.create_table(u'jocondelab_dbpediafields', (  # @UndefinedVariable
+            (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('dbpedia_uri', self.gf('django.db.models.fields.URLField')(max_length=2048, db_index=True)),
+            ('language_code', self.gf('django.db.models.fields.CharField')(max_length=15, db_index=True)),
+            ('term', self.gf('django.db.models.fields.related.ForeignKey')(related_name='dbpedia_fields', to=orm['core.Term'])),
+            ('thumbnail', self.gf('django.db.models.fields.URLField')(max_length=2048, null=True, blank=True)),
+            ('label', self.gf('django.db.models.fields.CharField')(max_length=2048, null=True, blank=True)),
+            ('abstract', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+        ))
+        db.send_create_signal('jocondelab', ['DbpediaFields'])  # @UndefinedVariable
+
+
+    def backwards(self, orm):
+        # Deleting model 'TermLinks'
+        db.delete_table(u'jocondelab_termlinks')  # @UndefinedVariable
+
+        # Deleting model 'DbpediaFields'
+        db.delete_table(u'jocondelab_dbpediafields')  # @UndefinedVariable
+
+
+    models = {
+        u'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        u'auth.permission': {
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'core.autrnoticeterm': {
+            'Meta': {'object_name': 'AutrNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.domnnoticeterm': {
+            'Meta': {'object_name': 'DomnNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.ecolnoticeterm': {
+            'Meta': {'object_name': 'EcolNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.epoqnoticeterm': {
+            'Meta': {'object_name': 'EpoqNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.lieuxnoticeterm': {
+            'Meta': {'object_name': 'LieuxNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.notice': {
+            'Meta': {'object_name': 'Notice'},
+            'adpt': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'appl': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'aptn': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'attr': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'autr': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'autr_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'autr+'", 'symmetrical': 'False', 'through': "orm['core.AutrNoticeTerm']", 'to': "orm['core.Term']"}),
+            'bibl': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'comm': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'contact': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'coor': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'copy': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'dacq': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'data': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'dation': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'ddpt': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'decv': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'deno': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'depo': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'desc': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'desy': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'dims': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'dmaj': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'dmis': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'domn': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'domn_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'domn+'", 'symmetrical': 'False', 'through': "orm['core.DomnNoticeTerm']", 'to': "orm['core.Term']"}),
+            'drep': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'ecol': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'ecol_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'ecol+'", 'symmetrical': 'False', 'through': "orm['core.EcolNoticeTerm']", 'to': "orm['core.Term']"}),
+            'epoq': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'epoq_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'epoq+'", 'symmetrical': 'False', 'through': "orm['core.EpoqNoticeTerm']", 'to': "orm['core.Term']"}),
+            'etat': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'expo': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'gene': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'geohi': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'hist': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'insc': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'inv': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'labo': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'lieux': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'lieux_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'lieux+'", 'symmetrical': 'False', 'through': "orm['core.LieuxNoticeTerm']", 'to': "orm['core.Term']"}),
+            'loca': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'loca2': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'mill': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'milu': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'mosa': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'msgcom': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'museo': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'nsda': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'onom': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'paut': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'pdat': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'pdec': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'peoc': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'peri': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'peri_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'peri+'", 'symmetrical': 'False', 'through': "orm['core.PeriNoticeTerm']", 'to': "orm['core.Term']"}),
+            'peru': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'phot': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'pins': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'plieux': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'prep': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'puti': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'reda': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'ref': ('django.db.models.fields.CharField', [], {'max_length': '20', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+            'refim': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'repr': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'repr_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'repr+'", 'symmetrical': 'False', 'through': "orm['core.ReprNoticeTerm']", 'to': "orm['core.Term']"}),
+            'srep': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'srep_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'srep+'", 'symmetrical': 'False', 'through': "orm['core.SrepNoticeTerm']", 'to': "orm['core.Term']"}),
+            'stat': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'tech': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'tico': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'titr': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'util': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'video': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'www': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'})
+        },
+        'core.noticeterm': {
+            'Meta': {'object_name': 'NoticeTerm'},
+            'graph': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'notice': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Notice']"}),
+            'term': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Term']"})
+        },
+        'core.perinoticeterm': {
+            'Meta': {'object_name': 'PeriNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.reprnoticeterm': {
+            'Meta': {'object_name': 'ReprNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.srepnoticeterm': {
+            'Meta': {'object_name': 'SrepNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.term': {
+            'Meta': {'object_name': 'Term'},
+            'alternative_wikipedia_pageid': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+            'alternative_wikipedia_url': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'dbpedia_uri': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
+            'lang': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
+            u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'link_semantic_level': ('django.db.models.fields.IntegerField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'nb_notice': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True'}),
+            'normalized_label': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
+            'notices': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'terms+'", 'symmetrical': 'False', 'through': "orm['core.NoticeTerm']", 'to': "orm['core.Notice']"}),
+            'parent': ('mptt.fields.TreeForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['core.Term']"}),
+            u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'thesaurus': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Thesaurus']"}),
+            u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'uri': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'url_status': ('django.db.models.fields.IntegerField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'validated': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+            'validation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'validator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.User']", 'null': 'True', 'blank': 'True'}),
+            'wikipedia_edition': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'wikipedia_pageid': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+            'wikipedia_revision_id': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'wikipedia_url': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'wp_alternative_label': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'wp_label': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '1024', 'null': 'True', 'blank': 'True'})
+        },
+        'core.thesaurus': {
+            'Meta': {'ordering': "['label']", 'object_name': 'Thesaurus'},
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '1024'}),
+            'uri': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'})
+        },
+        'core.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        'jocondelab.country': {
+            'Meta': {'object_name': 'Country'},
+            'dbpedia_uri': ('django.db.models.fields.URLField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'iso_code_2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'db_index': 'True'}),
+            'iso_code_3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'db_index': 'True'})
+        },
+        'jocondelab.dbpediafields': {
+            'Meta': {'object_name': 'DbpediaFields'},
+            'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'dbpedia_uri': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'db_index': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
+            'term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'dbpedia_fields'", 'to': "orm['core.Term']"}),
+            'thumbnail': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'})
+        },
+        'jocondelab.termlinks': {
+            'Meta': {'object_name': 'TermLinks'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'object': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'termlinks_objects'", 'to': "orm['core.Term']"}),
+            'subject': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'termlinks_subjects'", 'to': "orm['core.Term']"})
+        }
+    }
+
+    complete_apps = ['jocondelab']
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/migrations/0006_test.py	Mon Aug 19 12:12:17 2013 +0200
@@ -0,0 +1,239 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+
+class Migration(DataMigration):
+
+    def forwards(self, orm):
+        "Write your forwards methods here."
+        # Note: Remember to use orm['appname.ModelName'] rather than "from appname.models..."
+
+    def backwards(self, orm):
+        "Write your backwards methods here."
+
+    models = {
+        u'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        u'auth.permission': {
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        'core.autrnoticeterm': {
+            'Meta': {'object_name': 'AutrNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.domnnoticeterm': {
+            'Meta': {'object_name': 'DomnNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.ecolnoticeterm': {
+            'Meta': {'object_name': 'EcolNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.epoqnoticeterm': {
+            'Meta': {'object_name': 'EpoqNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.lieuxnoticeterm': {
+            'Meta': {'object_name': 'LieuxNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.notice': {
+            'Meta': {'object_name': 'Notice'},
+            'adpt': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'appl': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'aptn': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'attr': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'autr': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'autr_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'autr+'", 'symmetrical': 'False', 'through': "orm['core.AutrNoticeTerm']", 'to': "orm['core.Term']"}),
+            'bibl': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'comm': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'contact': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'coor': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'copy': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'dacq': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'data': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'dation': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'ddpt': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'decv': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'deno': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'depo': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'desc': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'desy': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'dims': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'dmaj': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'dmis': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'domn': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'domn_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'domn+'", 'symmetrical': 'False', 'through': "orm['core.DomnNoticeTerm']", 'to': "orm['core.Term']"}),
+            'drep': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'ecol': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'ecol_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'ecol+'", 'symmetrical': 'False', 'through': "orm['core.EcolNoticeTerm']", 'to': "orm['core.Term']"}),
+            'epoq': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'epoq_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'epoq+'", 'symmetrical': 'False', 'through': "orm['core.EpoqNoticeTerm']", 'to': "orm['core.Term']"}),
+            'etat': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'expo': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'gene': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'geohi': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'hist': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'insc': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'inv': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'labo': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'lieux': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'lieux_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'lieux+'", 'symmetrical': 'False', 'through': "orm['core.LieuxNoticeTerm']", 'to': "orm['core.Term']"}),
+            'loca': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'loca2': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'mill': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'milu': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'mosa': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'msgcom': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'museo': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'nsda': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'onom': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'paut': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'pdat': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'pdec': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'peoc': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'peri': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'peri_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'peri+'", 'symmetrical': 'False', 'through': "orm['core.PeriNoticeTerm']", 'to': "orm['core.Term']"}),
+            'peru': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'phot': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'pins': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'plieux': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'prep': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'puti': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'reda': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'ref': ('django.db.models.fields.CharField', [], {'max_length': '20', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+            'refim': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'repr': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'repr_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'repr+'", 'symmetrical': 'False', 'through': "orm['core.ReprNoticeTerm']", 'to': "orm['core.Term']"}),
+            'srep': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'srep_terms': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'srep+'", 'symmetrical': 'False', 'through': "orm['core.SrepNoticeTerm']", 'to': "orm['core.Term']"}),
+            'stat': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'tech': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'tico': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'titr': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'util': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'video': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'www': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'})
+        },
+        'core.noticeterm': {
+            'Meta': {'object_name': 'NoticeTerm'},
+            'graph': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'notice': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Notice']"}),
+            'term': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Term']"})
+        },
+        'core.perinoticeterm': {
+            'Meta': {'object_name': 'PeriNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.reprnoticeterm': {
+            'Meta': {'object_name': 'ReprNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.srepnoticeterm': {
+            'Meta': {'object_name': 'SrepNoticeTerm', '_ormbases': ['core.NoticeTerm']},
+            u'noticeterm_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['core.NoticeTerm']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        'core.term': {
+            'Meta': {'object_name': 'Term'},
+            'alternative_wikipedia_pageid': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+            'alternative_wikipedia_url': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'dbpedia_uri': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
+            'lang': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
+            u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'link_semantic_level': ('django.db.models.fields.IntegerField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'nb_notice': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True'}),
+            'normalized_label': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'db_index': 'True'}),
+            'notices': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'terms+'", 'symmetrical': 'False', 'through': "orm['core.NoticeTerm']", 'to': "orm['core.Notice']"}),
+            'parent': ('mptt.fields.TreeForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': "orm['core.Term']"}),
+            u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'thesaurus': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Thesaurus']"}),
+            u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}),
+            'uri': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'url_status': ('django.db.models.fields.IntegerField', [], {'default': 'None', 'null': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'validated': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+            'validation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'validator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.User']", 'null': 'True', 'blank': 'True'}),
+            'wikipedia_edition': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'wikipedia_pageid': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+            'wikipedia_revision_id': ('django.db.models.fields.BigIntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'wikipedia_url': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'wp_alternative_label': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'wp_label': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '1024', 'null': 'True', 'blank': 'True'})
+        },
+        'core.thesaurus': {
+            'Meta': {'ordering': "['label']", 'object_name': 'Thesaurus'},
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'db_index': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '1024'}),
+            'uri': ('django.db.models.fields.URLField', [], {'db_index': 'True', 'max_length': '2048', 'null': 'True', 'blank': 'True'})
+        },
+        'core.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        'jocondelab.country': {
+            'Meta': {'object_name': 'Country'},
+            'dbpedia_uri': ('django.db.models.fields.URLField', [], {'unique': 'True', 'max_length': '2048', 'db_index': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'iso_code_2': ('django.db.models.fields.CharField', [], {'max_length': '2', 'db_index': 'True'}),
+            'iso_code_3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'db_index': 'True'})
+        },
+        'jocondelab.dbpediafields': {
+            'Meta': {'object_name': 'DbpediaFields'},
+            'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'dbpedia_uri': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'db_index': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'label': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'}),
+            'language_code': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
+            'term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'dbpedia_fields'", 'to': "orm['core.Term']"}),
+            'thumbnail': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'})
+        },
+        'jocondelab.termlinks': {
+            'Meta': {'object_name': 'TermLinks'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'object': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'termlinks_objects'", 'to': "orm['core.Term']"}),
+            'subject': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'termlinks_subjects'", 'to': "orm['core.Term']"})
+        }
+    }
+
+    complete_apps = ['contenttypes', 'jocondelab']
+    symmetrical = True
--- a/src/jocondelab/models.py	Tue Jul 30 23:08:31 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-# -*- coding: utf-8 -*-
-'''
-Created on Jun 12, 2013
-
-@author: ymh
-'''
-from django.conf import settings
-from django.contrib.auth.models import AbstractUser
-from django.db import models
-
-class User(AbstractUser):
-    language = models.CharField(max_length=2, default=settings.LANGUAGE_CODE[:2])
-    
-
-class Country(models.Model):
-    dbpedia_uri = models.URLField(max_length=2048, unique=True, blank=False, null=False, db_index=True)
-    iso_code_3 = models.CharField(max_length=3, unique=False, blank=False, null=False, db_index=True)
-    iso_code_2 = models.CharField(max_length=2, unique=False, blank=False, null=False, db_index=True)
-    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/models/__init__.py	Mon Aug 19 12:12:17 2013 +0200
@@ -0,0 +1,3 @@
+__all__ = ['Country', 'DbpediaFields', 'TermLinks']
+
+from jocondelab.models.data import Country, DbpediaFields, TermLinks
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/models/data.py	Mon Aug 19 12:12:17 2013 +0200
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Jul 31, 2013
+
+@author: ymh
+'''
+from django.db import models
+from core.models import Term
+
+class Country(models.Model):
+    dbpedia_uri = models.URLField(max_length=2048, unique=True, blank=False, null=False, db_index=True)
+    iso_code_3 = models.CharField(max_length=3, unique=False, blank=False, null=False, db_index=True)
+    iso_code_2 = models.CharField(max_length=2, unique=False, blank=False, null=False, db_index=True)
+
+    class Meta:
+        app_label = 'jocondelab'
+
+
+class DbpediaFields(models.Model):
+     
+    dbpedia_uri = models.URLField(max_length=2048, blank=False, null=False, db_index=True, unique=False)
+    language_code = models.CharField(max_length=15, blank=False, null=False, db_index=True)
+    term = models.ForeignKey(Term, blank=False, null=False, db_index=True, related_name="dbpedia_fields")
+    thumbnail = models.URLField(max_length=2048, blank=True, null=True, db_index=False)    
+    label = models.CharField(max_length=2048, unique=False, blank=True, null=True)
+    abstract = models.TextField(blank=True, null=True)
+ 
+    class Meta:
+        app_label = 'jocondelab'
+ 
+class TermLinks(models.Model):
+     
+    subject = models.ForeignKey(Term, blank=False, null=False, db_index=True, related_name="termlinks_subjects")
+    object = models.ForeignKey(Term, blank=False, null=False, db_index=True, related_name="termlinks_objects")
+     
+    class Meta:
+        app_label = 'jocondelab'
--- a/src/jocondelab/settings.py	Tue Jul 30 23:08:31 2013 +0200
+++ b/src/jocondelab/settings.py	Mon Aug 19 12:12:17 2013 +0200
@@ -113,7 +113,7 @@
 
 ROOT_URLCONF = 'jocondelab.urls'
 
-AUTH_USER_MODEL = 'jocondelab.User'
+AUTH_USER_MODEL = 'core.User'
 INITIAL_CUSTOM_USER_MIGRATION = "0001_initial"
 
 # Python dotted path to the WSGI application used by Django's runserver.
@@ -190,6 +190,7 @@
         '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_base_url' : "http://fr.dbpedia.org",
         'dbpedia_uri' : "http://fr.dbpedia.org/resource/%s",
         'dbpedia_sparql_url' : "http://fr.dbpedia.org/sparql",
         'dbpedia_sparql_use_proxy': False,
@@ -200,6 +201,7 @@
         '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_base_url' : "http://dbpedia.org",
         'dbpedia_uri' : "http://dbpedia.org/resource/%s",
         'dbpedia_sparql_url' : "http://dbpedia.org/sparql",
         'dbpedia_sparql_use_proxy': False,
@@ -210,6 +212,7 @@
         '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_base_url' : "http://it.dbpedia.org",
         'dbpedia_uri' : "http://it.dbpedia.org/resource/%s",
         'dbpedia_sparql_url' : "http://it.dbpedia.org/sparql",
         'dbpedia_sparql_use_proxy': True,
@@ -220,6 +223,7 @@
         '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_base_url' : "http://de.dbpedia.org",
         'dbpedia_uri' : "http://de.dbpedia.org/resource/%s",
         'dbpedia_sparql_url' : "http://de.dbpedia.org/sparql",
         'dbpedia_sparql_use_proxy': True,
@@ -230,6 +234,7 @@
         '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_base_url' : "http://ja.dbpedia.org",
         'dbpedia_uri' : "http://ja.dbpedia.org/resource/%s",
         'dbpedia_sparql_url' : "http://ja.dbpedia.org/sparql",
         'dbpedia_sparql_use_proxy': False,
@@ -245,7 +250,7 @@
 TERM_LIST_PAGE_SIZE = 20
 PAGINATOR_VISIBLE_RANGE = 5
 
-from .config import *  # @UnusedWildImport
+from config import *  # @UnusedWildImport
 
 if not "SRC_BASE_URL" in locals():
     SRC_BASE_URL = BASE_URL + __name__.split('.')[0] + '/'