--- a/src/core/models/term.py Mon Sep 16 10:44:50 2013 +0200
+++ b/src/core/models/term.py Wed Sep 18 18:31:29 2013 +0200
@@ -157,6 +157,9 @@
self.validation_date = None
self.save()
+ def __unicode__(self):
+ return self.label
+
class Meta:
app_label = 'core'
--- a/src/jocondelab/admin.py Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/admin.py Wed Sep 18 18:31:29 2013 +0200
@@ -1,2 +1,10 @@
+from jocondelab.models import DbpediaYears, DbpediaGeo, ContributedTerm, ContributedFields, Contribution, ContributableTerm, TagcloudTerm
+from django.contrib import admin
-
+admin.site.register(DbpediaYears)
+admin.site.register(DbpediaGeo)
+admin.site.register(ContributedTerm)
+admin.site.register(ContributedFields)
+admin.site.register(Contribution)
+admin.site.register(ContributableTerm)
+admin.site.register(TagcloudTerm)
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/migrations/0009_auto__contribution_allow_null_thesaurus.py Wed Sep 18 18:31:29 2013 +0200
@@ -0,0 +1,282 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+
+ # Changing field 'Contribution.thesaurus'
+ db.alter_column(u'jocondelab_contribution', 'thesaurus_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['core.Thesaurus'], null=True))
+
+ def backwards(self, orm):
+
+ # Changing field 'Contribution.thesaurus'
+ db.alter_column(u'jocondelab_contribution', 'thesaurus_id', self.gf('django.db.models.fields.related.ForeignKey')(default=1, to=orm['core.Thesaurus']))
+
+ 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': "'en'", '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.contributedfields': {
+ 'Meta': {'object_name': 'ContributedFields'},
+ '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['jocondelab.ContributedTerm']"}),
+ 'thumbnail': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'})
+ },
+ 'jocondelab.contributedterm': {
+ 'Meta': {'object_name': 'ContributedTerm'},
+ 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'dbpedia_language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
+ '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'})
+ },
+ 'jocondelab.contribution': {
+ 'Meta': {'object_name': 'Contribution'},
+ 'contribution_count': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': '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', [], {'related_name': "'contributions'", 'to': "orm['jocondelab.ContributedTerm']"}),
+ 'thesaurus': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Thesaurus']", 'null': 'True', 'blank': 'True'})
+ },
+ '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'}),
+ 'nb_notices': ('django.db.models.fields.IntegerField', [], {'default': '0', '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.dbpediageo': {
+ 'Meta': {'object_name': 'DbpediaGeo'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'latitude': ('django.db.models.fields.FloatField', [], {'db_index': 'True'}),
+ 'longitude': ('django.db.models.fields.FloatField', [], {'db_index': 'True'}),
+ 'term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'geo'", 'unique': 'True', 'to': "orm['core.Term']"})
+ },
+ 'jocondelab.dbpediayears': {
+ 'Meta': {'object_name': 'DbpediaYears'},
+ 'end_year': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'start_year': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
+ 'term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'years'", 'unique': 'True', 'to': "orm['core.Term']"})
+ },
+ '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/0010_auto__add_contributable_term.py Wed Sep 18 18:31:29 2013 +0200
@@ -0,0 +1,291 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'ContributableTerm'
+ db.create_table(u'jocondelab_contributableterm', (
+ (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('term', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['core.Term'], unique=True)),
+ ))
+ db.send_create_signal('jocondelab', ['ContributableTerm'])
+
+
+ def backwards(self, orm):
+ # Deleting model 'ContributableTerm'
+ db.delete_table(u'jocondelab_contributableterm')
+
+
+ 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': "'en'", '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.contributableterm': {
+ 'Meta': {'object_name': 'ContributableTerm'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'term': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Term']", 'unique': 'True'})
+ },
+ 'jocondelab.contributedfields': {
+ 'Meta': {'object_name': 'ContributedFields'},
+ '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['jocondelab.ContributedTerm']"}),
+ 'thumbnail': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'})
+ },
+ 'jocondelab.contributedterm': {
+ 'Meta': {'object_name': 'ContributedTerm'},
+ 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'dbpedia_language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
+ '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'})
+ },
+ 'jocondelab.contribution': {
+ 'Meta': {'object_name': 'Contribution'},
+ 'contribution_count': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': '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', [], {'related_name': "'contributions'", 'to': "orm['jocondelab.ContributedTerm']"}),
+ 'thesaurus': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Thesaurus']", 'null': 'True', 'blank': 'True'})
+ },
+ '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'}),
+ 'nb_notices': ('django.db.models.fields.IntegerField', [], {'default': '0', '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.dbpediageo': {
+ 'Meta': {'object_name': 'DbpediaGeo'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'latitude': ('django.db.models.fields.FloatField', [], {'db_index': 'True'}),
+ 'longitude': ('django.db.models.fields.FloatField', [], {'db_index': 'True'}),
+ 'term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'geo'", 'unique': 'True', 'to': "orm['core.Term']"})
+ },
+ 'jocondelab.dbpediayears': {
+ 'Meta': {'object_name': 'DbpediaYears'},
+ 'end_year': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'start_year': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
+ 'term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'years'", 'unique': 'True', 'to': "orm['core.Term']"})
+ },
+ '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/0011_auto__add_tagcloud_term.py Wed Sep 18 18:31:29 2013 +0200
@@ -0,0 +1,296 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'TagcloudTerm'
+ db.create_table(u'jocondelab_tagcloudterm', (
+ (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('term', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['core.Term'], unique=True)),
+ ))
+ db.send_create_signal('jocondelab', ['TagcloudTerm'])
+
+
+ def backwards(self, orm):
+ # Deleting model 'TagcloudTerm'
+ db.delete_table(u'jocondelab_tagcloudterm')
+
+
+ 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': "'en'", '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.contributableterm': {
+ 'Meta': {'object_name': 'ContributableTerm'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'term': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Term']", 'unique': 'True'})
+ },
+ 'jocondelab.contributedfields': {
+ 'Meta': {'object_name': 'ContributedFields'},
+ '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['jocondelab.ContributedTerm']"}),
+ 'thumbnail': ('django.db.models.fields.URLField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'})
+ },
+ 'jocondelab.contributedterm': {
+ 'Meta': {'object_name': 'ContributedTerm'},
+ 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'dbpedia_language': ('django.db.models.fields.CharField', [], {'max_length': '15', 'db_index': 'True'}),
+ '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'})
+ },
+ 'jocondelab.contribution': {
+ 'Meta': {'object_name': 'Contribution'},
+ 'contribution_count': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': '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', [], {'related_name': "'contributions'", 'to': "orm['jocondelab.ContributedTerm']"}),
+ 'thesaurus': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Thesaurus']", 'null': 'True', 'blank': 'True'})
+ },
+ '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'}),
+ 'nb_notices': ('django.db.models.fields.IntegerField', [], {'default': '0', '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.dbpediageo': {
+ 'Meta': {'object_name': 'DbpediaGeo'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'latitude': ('django.db.models.fields.FloatField', [], {'db_index': 'True'}),
+ 'longitude': ('django.db.models.fields.FloatField', [], {'db_index': 'True'}),
+ 'term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'geo'", 'unique': 'True', 'to': "orm['core.Term']"})
+ },
+ 'jocondelab.dbpediayears': {
+ 'Meta': {'object_name': 'DbpediaYears'},
+ 'end_year': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'start_year': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
+ 'term': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'years'", 'unique': 'True', 'to': "orm['core.Term']"})
+ },
+ 'jocondelab.tagcloudterm': {
+ 'Meta': {'object_name': 'TagcloudTerm'},
+ u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'term': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['core.Term']", 'unique': '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
--- a/src/jocondelab/models/__init__.py Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/models/__init__.py Wed Sep 18 18:31:29 2013 +0200
@@ -1,4 +1,5 @@
-__all__ = ['Country', 'DbpediaFields', 'TermLinks', 'DbpediaYears', 'DbpediaGeo', 'ContributedTerm', 'ContributedFields', 'Contribution' ]
+__all__ = ['Country', 'DbpediaFields', 'TermLinks', 'DbpediaYears', 'DbpediaGeo', 'ContributedTerm', 'ContributedFields', 'Contribution', 'ContributableTerm', 'TagcloudTerm' ]
from jocondelab.models.data import Country, DbpediaFields, TermLinks, DbpediaYears, DbpediaGeo
-from jocondelab.models.contribution import ContributedTerm, ContributedFields, Contribution
\ No newline at end of file
+from jocondelab.models.contribution import ContributedTerm, ContributedFields, Contribution, ContributableTerm
+from jocondelab.models.displaysettings import TagcloudTerm
--- a/src/jocondelab/models/contribution.py Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/models/contribution.py Wed Sep 18 18:31:29 2013 +0200
@@ -5,7 +5,7 @@
@author: ymh
'''
from django.db import models
-from core.models import Thesaurus, Notice
+from core.models import Thesaurus, Notice, Term
class ContributedTerm(models.Model):
@@ -15,6 +15,9 @@
class Meta:
app_label = 'jocondelab'
+
+ def __unicode__(self):
+ return self.dbpedia_uri
class ContributedFields(models.Model):
@@ -27,6 +30,9 @@
class Meta:
app_label = 'jocondelab'
+
+ def __unicode__(self):
+ return u'"%s"@%s'%(self.label, self.language_code)
class Contribution(models.Model):
@@ -37,3 +43,16 @@
class Meta:
app_label = 'jocondelab'
+
+ def __unicode__(self):
+ return u'%s, %s'%((self.notice.titr or self.notice.deno),self.term.dbpedia_uri)
+
+class ContributableTerm(models.Model):
+
+ term = models.ForeignKey(Term, blank=False, null=False, db_index=True, unique=True)
+
+ class Meta:
+ app_label = 'jocondelab'
+
+ def __unicode__(self):
+ return self.term.label
\ No newline at end of file
--- a/src/jocondelab/models/data.py Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/models/data.py Wed Sep 18 18:31:29 2013 +0200
@@ -15,6 +15,9 @@
class Meta:
app_label = 'jocondelab'
+
+ def __unicode__(self):
+ return self.dbpedia_uri
class DbpediaFields(models.Model):
@@ -28,6 +31,9 @@
class Meta:
app_label = 'jocondelab'
+
+ def __unicode__(self):
+ return u'"%s"@%s'%(self.label, self.language_code)
class TermLinks(models.Model):
@@ -44,6 +50,9 @@
class Meta:
app_label = 'jocondelab'
+
+ def __unicode__(self):
+ return u'%s: %d - %d'%(self.term.dbpedia_uri, self.start_year, self.end_year)
class DbpediaGeo(models.Model):
term = models.ForeignKey(Term, unique=True, blank=False, null=False, db_index=True, related_name="geo")
@@ -51,4 +60,7 @@
longitude = models.FloatField(null=False, blank=False, db_index=True)
class Meta:
- app_label = 'jocondelab'
\ No newline at end of file
+ app_label = 'jocondelab'
+
+ def __unicode__(self):
+ return u'%s: %.4f%s, %.4f%s'%(self.term.dbpedia_uri, abs(self.latitude), 'N' if self.latitude > 0 else 'S', abs(self.longitude), 'E' if self.longitude > 0 else 'W')
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/models/displaysettings.py Wed Sep 18 18:31:29 2013 +0200
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Aug 08, 2013
+
+@author: rvelt
+'''
+from django.db import models
+from core.models import (Term)
+
+class TagcloudTerm(models.Model):
+
+ term = models.ForeignKey(Term, blank=False, null=False, db_index=True, unique=True)
+
+ class Meta:
+ app_label = 'jocondelab'
+
+ def __unicode__(self):
+ return self.term.label
\ No newline at end of file
--- a/src/jocondelab/settings.py Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/settings.py Wed Sep 18 18:31:29 2013 +0200
@@ -46,6 +46,7 @@
('de', ugettext('German')),
('pt', ugettext('Portuguese')),
('ar', ugettext('Arabic')),
+ ('ru', ugettext('Russian')),
('zh-cn', ugettext('Chinese')),
('ja', ugettext('Japanese')),
('ca', ugettext('Catalan')),
--- a/src/jocondelab/static/jocondelab/css/front-common.css Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/static/jocondelab/css/front-common.css Wed Sep 18 18:31:29 2013 +0200
@@ -130,7 +130,7 @@
}
footer {
- margin: 40px auto 20px; text-align: right;
+ padding: 40px 0 20px; text-align: right;
}
input {
@@ -149,6 +149,10 @@
float: left; margin-top: 10px; height: 50px; line-height: 50px; overflow: hidden;
}
+html[dir=rtl] .main-title {
+ float: right;
+}
+
.main-title h1, .main-title h2 {
display: inline;
}
@@ -172,7 +176,11 @@
/* HEADER > SEARCH FORM */
.header-search-form {
- position: absolute; top: 8px; right: 0; max-width: 35%; text-align: right;
+ position: absolute; top: 8px; right: 0; max-width: 35%;
+}
+
+html[dir=rtl] .header-search-form {
+ left: 0; right: auto;
}
.search-input, .search-form .tagit {
@@ -181,6 +189,10 @@
overflow: hidden;
}
+html[dir=rtl] .search-input, html[dir=rtl] .search-form .tagit {
+ background-position: 4px center;
+}
+
.header-search-input, .header-search-form .tagit {
margin: 0 auto; width: 260px; max-width: 90%; font-size: 14px; z-index: 1;
}
@@ -205,12 +217,38 @@
float: right;
}
+html[dir=rtl] .header-search-form .tagit {
+ float: left;
+}
+
+html[dir=rtl] ul.tagit li {
+ float: right;
+}
+
+/* Big Search Form (on search and home pages) */
+
+.big-search-form {
+ text-align: center; margin: 20px 0; clear: both;
+}
+
+.big-search-input, .big-search-form .tagit {
+ margin: 0 auto; width: 80%; font-size: 15px;
+}
+
+.big-search-input {
+ line-height: 32px; height: 32px; padding: 0 9px;
+}
+
/* HEADER > MENUS */
.menu-links {
position: absolute; right: 0; top: 44px; font-size: 14px; font-weight: bold;
}
+html[dir=rtl] .menu-links {
+ left: 0; right: auto;
+}
+
.menu-link {
float: right; margin-left: 20px;
}
@@ -254,6 +292,10 @@
/* RESULTS LIST */
+.results {
+ clear: both;
+}
+
.resultcount {
font-size: 18px; margin: 10px 0;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/static/jocondelab/css/front-home.css Wed Sep 18 18:31:29 2013 +0200
@@ -0,0 +1,39 @@
+.about-jl {
+ font-size: 18px; font-weight: bold; margin: 20px 0;
+}
+
+.module-list {
+ margin: 0 0 20px; width: 100%; clear: both; float: left;
+}
+
+.module-item {
+ width: 20%; height: 80px; float: left;
+}
+
+@media screen and (max-width: 720px) and (min-width: 400px){
+ .module-item {
+ width: 33%;
+ }
+}
+
+@media screen and (max-width: 400px) {
+ .module-item {
+ width: 100%;
+ }
+}
+
+.module-item:nth-child(even) {
+ background: #fff8e0;
+}
+
+.module-item:nth-child(odd) {
+ background: #f8f8f8;
+}
+
+.module-item:hover {
+ background: #ffffff;
+}
+
+.module-item h3 {
+ margin: 10px 5px; font-size: 16px; text-decoration: underline; text-align: center;
+}
--- a/src/jocondelab/static/jocondelab/css/front-notice.css Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/static/jocondelab/css/front-notice.css Wed Sep 18 18:31:29 2013 +0200
@@ -44,6 +44,14 @@
width: 130px; font-weight: 700; text-align: left; padding-right: 2px;
}
+html[dir=rtl] .notice-datasheet th {
+ text-align: right; padding-right: 0; padding-left: 2px;
+}
+
+html[dir=rtl] .notice-datasheet td {
+ text-align: right;
+}
+
.notice-datasheet th, .notice-datasheet td {
padding-top: 3px;
}
@@ -56,7 +64,7 @@
margin: -2px 5px 4px 0;
}
-.notice-term.term-untranslated {
+.notice-term.term-untranslated, .notice-term.contribution-null {
background: transparent; color: #333333; font-style: italic;
}
@@ -74,7 +82,7 @@
}
.contribution-frame {
- margin: 10px 10px 0 0; background: #ffe0c0; padding: 10px;
+ margin: 10px 0; background: #ffe8c0; padding: 10px;
}
.contribution-frame h2 {
@@ -89,6 +97,10 @@
float: right; height: 16px; width: 13px; margin-left: 3px;
}
+html[dir=rtl] .contribution-vote {
+ float: left; margin-left: 0; margin-right: 3px;
+}
+
.contribution-upvote, .contribution-downvote {
display: block; background: url(../img/vote-sprite.png); width: 11px; height: 6px;
}
--- a/src/jocondelab/static/jocondelab/css/front-search.css Mon Sep 16 10:44:50 2013 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/* TERM CLOUD */
-
-.term-cloud {
- line-height: 26px; width: 80%; font-size: 12px; text-align: center; margin: 0 auto;
-}
-
-.term-cloud li {
- display: inline-block; margin: 0 10px;
-}
-
-.term-frequency {
- font-size: .8em;
-}
-
-.big-search-form {
- text-align: center; margin: 20px 0;
-}
-
-.big-search-input, .big-search-form .tagit {
- margin: 0 auto; width: 80%; font-size: 15px;
-}
-
-.big-search-input {
- line-height: 32px; height: 32px; padding: 0 9px;
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/static/jocondelab/css/front-termlist.css Wed Sep 18 18:31:29 2013 +0200
@@ -0,0 +1,80 @@
+/* TERM CLOUD */
+
+.term-cloud {
+ line-height: 26px; width: 80%; font-size: 12px; text-align: center; margin: 10px auto; clear: both;
+}
+
+.term-cloud li {
+ display: inline-block; margin: 0 10px;
+}
+
+.term-tabs {
+ width: 100%; clear: both; height: 41px;
+}
+
+.term-tab {
+ width: 25%; float: left;
+}
+
+.term-tab h2 {
+ height: 20px; margin: 0 2px; border: 1px #cccccc; border-style: solid solid none; padding: 10px;
+ font-size: 15px; background: #f8f8f8; color: #666666; border-radius: 8px 8px 0 0; overflow: hidden; line-height: 1.1em;
+}
+
+@media screen and (max-width: 640px) {
+ .term-tab h2 {
+ font-size: 12px;
+ }
+}
+
+.term-tab.active h2 {
+ color: #000000; background: #ffffff; font-weight: bold;
+}
+
+.term-contents {
+ background: #ffffff; border: 1px solid #cccccc; padding: 10px;
+}
+
+.term-filter {
+ margin: 5px; font-size: 16px; font-weight: bold; color: #666666;
+}
+
+.letter {
+ display: inline-block;
+}
+
+.term-filter.active, .letter.active {
+ color: #0000C0;
+}
+
+.term-contents-empty {
+ text-align: center; font-size: 18px; font-style: italic; color: #999999;
+}
+
+.terms {
+ width: 100%;
+}
+
+.term {
+ float: left; width: 290px; margin: 5px; border: 1px solid #e0e0e0; padding: 5px; height: 60px; overflow: hidden;
+}
+
+html[dir=rtl] {
+ float: right;
+}
+
+.term-image-wrap {
+ float: left; width: 48px; height: 60px; margin-right: 5px;
+}
+
+.term h3 {
+ font-size: 13px; font-weight: bold;
+}
+
+.term img {
+ display: block; margin: 0 auto; max-width: 48px; max-height: 60px;
+}
+
+.term p {
+ font-size: 11px; line-height: 1.1em;
+}
Binary file src/jocondelab/static/jocondelab/img/vote-sprite.png has changed
--- a/src/jocondelab/static/jocondelab/js/front-common.js Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/static/jocondelab/js/front-common.js Wed Sep 18 18:31:29 2013 +0200
@@ -22,12 +22,13 @@
},
allowSpaces: true,
afterTagAdded : submitIfChanged,
- afterTagRemoved: submitIfChanged
+ afterTagRemoved: submitIfChanged,
+ singleFieldDelimiter: ";"
});
/* DBPEDIA OVERLAY */
- var lang = $("html").attr("lang"),
+ var lang = $("html").attr("lang").substr(0,2) || "fr",
sparqlTpl = _.template(
'select distinct * where { '
+ 'OPTIONAL { <<%= uri %>> rdfs:label ?l FILTER( langMatches( lang(?l), "<%- lang %>" ) ) }. '
--- a/src/jocondelab/static/jocondelab/js/front-notice.js Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/static/jocondelab/js/front-notice.js Wed Sep 18 18:31:29 2013 +0200
@@ -3,7 +3,7 @@
$('.notice-images a').magnificPopup({type:'image'});
dbpediaBox.bind(".notice-term a");
- var lang = document.querySelector("html").lang.substr(0,2) || "en",
+ var lang = document.querySelector("html").lang.substr(0,2) || "fr",
labelsCache = {},
dbpCache = {},
eventCache = {},
@@ -51,6 +51,12 @@
t.label = b.lr.value;
t.language = b.lr["xml:lang"];
}
+ if (!t.label) {
+ t.label = label;
+ }
+ if (!t.language) {
+ t.language = lang;
+ }
return t;
});
res.local = _(res.translations).find(function(t) {
@@ -186,7 +192,8 @@
$source.attr("href", termdata.wikipedia_url);
}
- var eltTemplate = '<li class="notice-term term-translated"><a class="term-link" href="#"></a></li>';
+ var tmpTemplate = '<li class="notice-term term-translated"></li>',
+ $ntl = $(".notice-term-list");
$(".notice-contribution-field").autocomplete({
source: function( request, response ) {
@@ -224,18 +231,17 @@
},
select: function(e, ui) {
var $this = $(this),
- $newItem = $(eltTemplate);
- $this.next(".notice-term-list").append($newItem);
- $newItem.find(".term-link").text(gettext("Validating Resource…"));
+ $tmpItem = $(tmpTemplate);
+ $ntl.append($tmpItem);
+ $tmpItem.text(gettext("Validating Resource…"));
$this.autocomplete("close");
$this.val("");
getDbpedia(ui.item.label, function(label, termdata) {
- $newItem.find(".term-link").text(gettext("Saving contribution…"));
+ $tmpItem.text(gettext("Saving contribution…"));
if (termdata.dbpedia_uri) {
- dbpediaBox.bind($newItem.find("term-link"), termdata.dbpedia_uri);
$.ajax({
url: urls.ajax_contribute,
- dataType: "json",
+ dataType: "html",
type: "POST",
data: {
csrfmiddlewaretoken: csrf_token,
@@ -244,19 +250,27 @@
dbpedia_uri: termdata.dbpedia_uri,
translations: JSON.stringify(termdata.translations)
},
- success: function() {
- $newItem.find(".term-link").text(termdata.label);
+ success: function(html) {
+ var $el = $(html),
+ samecontrib = $ntl.find("[data-contribution-id='" + $el.attr("data-contribution-id") + "']");
+ if (samecontrib.length) {
+ samecontrib.replaceWith($el);
+ } else {
+ $ntl.append($el);
+ }
+ $tmpItem.remove();
+ dbpediaBox.bind($el);
},
error: function() {
- $newItem.remove();
+ $tmpItem.remove();
}
})
} else {
- $newItem.remove();
+ $tmpItem.remove();
alert(gettext("No DbPedia resource found for term") + " " + ui.item.label);
}
}, function() {
- $newItem.remove();
+ $tmpItem.remove();
alert(gettext("No DbPedia resource found for term") + " " + ui.item.label);
});
},
@@ -266,4 +280,23 @@
},
minLength: 2
});
+
+ $(".notice-contribution-list").on("click",".contribution-upvote, .contribution-downvote", function() {
+ var $this = $(this),
+ $li = $(this).parents("li"),
+ endpoint = urls[$this.hasClass("contribution-upvote") ? "upvote" : "downvote"];
+ $.ajax({
+ url: endpoint,
+ dataType: "html",
+ type: "POST",
+ data: {
+ csrfmiddlewaretoken: csrf_token,
+ contribution_id: $li.attr("data-contribution-id"),
+ },
+ success: function(html) {
+ $li.replaceWith($(html));
+ }
+ });
+ return false;
+ });
});
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/static/jocondelab/js/front-termlist.js Wed Sep 18 18:31:29 2013 +0200
@@ -0,0 +1,28 @@
+$(function() {
+
+ var $tt = $(".term-tab"),
+ $tc = $(".term-contents");
+
+ function loadUrl(url) {
+ $tc.empty().append($(".loading-please-wait").clone().show());
+ $.ajax({
+ url: url,
+ dataType: "html",
+ success: function(html) {
+ $tc.html(html);
+ $tc.find(".term-filter a").click(function() {
+ loadUrl($(this).attr("href"));
+ return false;
+ });
+ }
+ })
+ }
+
+ $tt.click(function() {
+ var $this = $(this);
+ $tt.removeClass("active");
+ $this.addClass("active");
+ loadUrl($this.find("a").attr("href"));
+ return false;
+ });
+});
--- a/src/jocondelab/templates/jocondelab/front_base.html Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/front_base.html Wed Sep 18 18:31:29 2013 +0200
@@ -1,6 +1,6 @@
{% load i18n %}
<!doctype html>
-<html lang="{% if lang %}{{lang|slice:':2'}}{% else %}{{LANGUAGE_CODE|slice:':2'}}{% endif %}">
+<html lang="{{LANGUAGE_CODE}}"{% if LANGUAGE_CODE == 'ar' %} dir="rtl"{% endif %}>
<head>
{% block head %}
<meta charset="UTF-8" />
@@ -67,7 +67,7 @@
<a href="{% url 'front_home' %}">{% trans 'Accueil' %}</a>
</li>
<li class="menu-item">
- <a href="{% url 'front_search' %}">{% trans 'Recherche' %}</a>
+ <a href="{% url 'front_termlist' %}">{% trans 'Liste des termes' %}</a>
</li>
<li class="menu-item">
<a href="{% url 'front_timeline' %}">{% trans 'Frise chronologique' %}</a>
--- a/src/jocondelab/templates/jocondelab/front_home.html Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/front_home.html Wed Sep 18 18:31:29 2013 +0200
@@ -1,32 +1,33 @@
{% extends "jocondelab/front_search.html" %}
{% load i18n %}
+{% block css_declaration %}
+{{block.super}}
+ <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}jocondelab/css/front-home.css" />
+{% endblock %}
+
{% block title %}JocondeLab » {% trans 'Accueil' %}{% endblock %}
{% block breadcrumbs %}<a href="{% url 'front_home' %}">{% trans 'Accueil' %}</a>{% endblock %}
{% block main %}
-
- <p class="about-jl">{% trans 'Bienvenue sur JocondeLab' %}</p>
+ <h2 class="about-jl">{% trans 'Bienvenue sur JocondeLab' %}</h2>
<ul class="module-list">
<li class="module-item">
- <h2><a href="{% url 'front_search' %}">{% trans 'Recherche' %}</a></h2>
+ <h3><a href="{% url 'front_termlist' %}">{% trans 'Liste des termes' %}</a></h3>
</li>
<li class="module-item">
- <h2><a href="{% url 'front_timeline' %}">{% trans 'Frise chronologique' %}</a></h2>
- </li>
- <li class="module-item">
- <h2><a href="{% url 'front_geo' %}">{% trans 'Mappemonde' %}</a></h2>
+ <h3><a href="{% url 'front_timeline' %}">{% trans 'Frise chronologique' %}</a></h3>
</li>
<li class="module-item">
- <h2><a href="{% url 'front_search' %}">{% trans 'Liste des termes' %}</a></h2>
+ <h3><a href="{% url 'front_geo' %}">{% trans 'Mappemonde' %}</a></h3>
</li>
<li class="module-item">
- <h2><a href="{% url 'front_search' %}">{% trans 'À propos' %}</a></h2>
+ <h3><a href="{% url 'front_search' %}">{% trans 'À propos' %}</a></h3>
</li>
</ul>
-
- <div class="results"></div>
-{{block.super}}
+{{block.super}}
{% endblock %}
+
+{% block term_cloud %}{% endblock %}
--- a/src/jocondelab/templates/jocondelab/front_notice.html Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/front_notice.html Wed Sep 18 18:31:29 2013 +0200
@@ -13,6 +13,8 @@
var notice_id = "{{object.id}}",
csrf_token = "{{csrf_token}}";
urls.ajax_contribute = "{% url 'ajax_contribute' %}";
+ urls.upvote = "{% url 'ajax_upvote' %}";
+ urls.downvote = "{% url 'ajax_downvote' %}";
urls.wikipedia = {{wikipedia_urls|safe}};
</script>
<script type="text/javascript" src="{{STATIC_URL}}jocondelab/js/front-notice.js"></script>
@@ -30,7 +32,7 @@
{% block title %}JocondeLab » {{title}}{% endblock %}
-{% block breadcrumbs %}<a href="{% url 'front_notice' object.id %}">{{title|truncatechars:30}}</a>{% endblock %}
+{% block breadcrumbs %}<a href="{% url 'front_notice' object.id %}" dir="ltr">{{title|truncatechars:40}}</a>{% endblock %}
{% block main %}
<ul class="notice-images">
@@ -91,15 +93,9 @@
<div class="contribution-frame">
<h2>Contribution (Folksonomie)</h2>
<input class="notice-contribution-field" type="text" size="60" placeholder="{% trans 'Complétez les mots-clés de la fiche' %}" />
- <ul class="notice-term-list">
+ <ul class="notice-term-list notice-contribution-list">
{% for term in contributions %}
- <li class="notice-term term-translated" data-contribution-id="{{term.contribution_id}}">
- <div class="contribution-vote">
- <a href="#" class="contribution-upvote" title="{% trans 'Votez pour ce terme' %}"></a>
- <a href="#" class="contribution-downvote" title="{% trans 'Votez contre ce terme' %}"></a>
- </div>
- <a href="{% url 'front_search' %}?q={{term.label|urlencode}}" data-dbpedia-uri="{{term.dbpedia_uri}}">{{term.label}}</a>
- </li>
+ {% include "jocondelab/partial/contributed_item.html" %}
{% endfor %}
</ul>
</div>
--- a/src/jocondelab/templates/jocondelab/front_search.html Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/front_search.html Wed Sep 18 18:31:29 2013 +0200
@@ -1,6 +1,5 @@
{% extends "jocondelab/front_base.html" %}
{% load i18n %}
-{% load l10n %}
{% block js_declaration %}
{{block.super}}
@@ -10,33 +9,18 @@
</script>
{% endblock %}
-{% block css_declaration %}
- {{block.super}}
- <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}jocondelab/css/front-search.css"></script>
-{% endblock %}
+{% block title %}JocondeLab » {% if searchterm %}{% trans 'Résultats pour : « ' %}{{searchterm}}{% trans ' »' %}{% else %}{% trans 'Recherche' %}{% endif %}{% endblock %}
-{% block title %}JocondeLab » {% trans 'Recherche' %}{% endblock %}
-
-{% block breadcrumbs %}<a href="{% url 'front_search' %}">{% trans 'Recherche' %}</a>{% endblock %}
+{% block breadcrumbs %}<a href="{% url 'front_search' %}{% if searchterm %}?q={{searchterm|urlencode}}{% endif %}">{% if searchterm %}{% trans 'Résultats pour : « ' %}{{searchterm}}{% trans ' »' %}{% else %}{% trans 'Recherche' %}{% endif %}</a>{% endblock %}
{% block header_search %}{% endblock %}
{% block main %}
-
+
<form class="big-search-form search-form">
<input class="big-search-input search-input" type="search" name="q" value="{{searchterm}}" />
</form>
- {% if words %}
- <ul class="term-cloud">
- {% for word in words %}
- <li style="font-size: {{word.font_size|unlocalize}}em">
- <a href="{% url 'front_search' %}?q={{word.label|urlencode}}" data-dbpedia-uri="{{word.uri}}">{{word.label}}</a>
- </li>
- {% endfor %}
- </ul>
- {% endif %}
-
{% include 'jocondelab/partial/wrapped_notice_list.html' %}
<div class="loading-please-wait"><img src="{{STATIC_URL}}jocondelab/img/loader.gif" /></div>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/templates/jocondelab/front_termlist.html Wed Sep 18 18:31:29 2013 +0200
@@ -0,0 +1,50 @@
+{% extends "jocondelab/front_base.html" %}
+{% load i18n %}
+
+{% block js_declaration %}
+ {{block.super}}
+ <script type="text/javascript" src="{{STATIC_URL}}jocondelab/js/front-termlist.js"></script>
+{% endblock %}
+
+{% block css_declaration %}
+ {{block.super}}
+ <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}jocondelab/css/front-termlist.css" />
+{% endblock %}
+
+{% block title %}JocondeLab » {% trans 'Liste des termes' %}{% endblock %}
+
+{% block breadcrumbs %}<a href="{% url 'front_termlist' %}">{% trans 'Liste des termes' %}</a>{% endblock %}
+
+{% block main %}
+
+ <ul class="term-cloud">
+ {% for word in words %}
+ <li style="font-size: {{word.font_size}}em">
+ <a href="{% url 'front_search' %}?dbpedia_uri={{word.uri|urlencode}}" data-dbpedia-uri="{{word.uri}}">{{word.label}}</a>
+ </li>
+ {% endfor %}
+ </ul>
+
+ <ul class="term-tabs">
+ <li class="term-tab{% if thesaurus == 'AUTR' %} active{% endif %}">
+ <h2><a href="{% url 'front_termlist' %}?thesaurus=AUTR">{% trans "Auteurs" %}</a></h2>
+ </li>
+ <li class="term-tab{% if thesaurus == 'REPR' %} active{% endif %}">
+ <h2><a href="{% url 'front_termlist' %}?thesaurus=REPR">{% trans "Sujets Représentés" %}</a></h2>
+ </li>
+ <li class="term-tab{% if thesaurus == 'DOMN' %} active{% endif %}">
+ <h2><a href="{% url 'front_termlist' %}?thesaurus=DOMN">{% trans "Domaines" %}</a></h2>
+ </li>
+ <li class="term-tab{% if thesaurus == 'EPOQ' %} active{% endif %}">
+ <h2><a href="{% url 'front_termlist' %}?thesaurus=EPOQ">{% trans "Epoques" %}</a></h2>
+ </li>
+ </ul>
+
+ <div class="term-contents">
+ {% include "jocondelab/partial/termlist_contents.html" %}
+ </div>
+
+ <div class="loading-please-wait"><img src="{{STATIC_URL}}jocondelab/img/loader.gif" /></div>
+ <script>$(function() { dbpediaBox.bind(".term h3");});</script>
+
+{% endblock %}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/templates/jocondelab/partial/contributed_item.html Wed Sep 18 18:31:29 2013 +0200
@@ -0,0 +1,9 @@
+{% load i18n %}
+
+<li class="notice-term contribution-{{term.li_style}}" data-contribution-id="{{term.contribution_id}}" style="font-size: {{term.font_size}}px">
+ <div class="contribution-vote">
+ <a href="#" class="contribution-upvote" title="{% trans 'Votez pour ce terme' %}"></a>
+ <a href="#" class="contribution-downvote" title="{% trans 'Votez contre ce terme' %}"></a>
+ </div>
+ <a href="{% url 'front_search' %}?q={{term.label|urlencode}}" data-dbpedia-uri="{{term.dbpedia_uri}}">{{term.label}}</a>
+</li>
\ No newline at end of file
--- a/src/jocondelab/templates/jocondelab/partial/datasheet_row.html Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/partial/datasheet_row.html Wed Sep 18 18:31:29 2013 +0200
@@ -5,12 +5,13 @@
<th>{% trans fieldname context 'Thesaurus label' %}{% trans ':' %}</th>
<td>
<ul class="notice-term-list">
- {% for termtype, terms in linked_terms.items %}
- {% for term in terms %}
- <li class="notice-term term-{{termtype}}">
- <a href="{% url 'front_search' %}?q={{term.label|urlencode}}" data-dbpedia-uri="{{term.dbpedia_uri}}">{{term.label}}</a>
+ {% for term in linked_terms.translated %}
+ <li class="notice-term term-translated">
+ <a href="{% url 'front_search' %}?dbpedia_uri={{term.dbpedia_uri|urlencode}}" data-dbpedia-uri="{{term.dbpedia_uri}}">{{term.label}}</a>
</li>
- {% endfor %}
+ {% endfor %}
+ {% for term in linked_terms.untranslated %}
+ <li class="notice-term term-untranslated" dir="ltr">{{term.label}}</li>
{% endfor %}
</ul>
</td>
@@ -18,7 +19,7 @@
{% elif base_field %}
<tr{% if row_class %} class="{{row_class}}"{% endif %}>
<th>{% trans fieldname context 'Thesaurus label' %}{% trans ':' %}</th>
- <td>{{base_field}}</td>
+ <td dir="ltr">{{base_field}}</td>
</tr>
{% endif %}
--- a/src/jocondelab/templates/jocondelab/partial/notice_list.html Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/partial/notice_list.html Wed Sep 18 18:31:29 2013 +0200
@@ -7,17 +7,13 @@
<img class="notice-image" alt="{{notice.imagetitle}}" src="{{ notice.image }}" />
</a>
<div class="notice-metadata">
- {% if notice.title %}<h2><a href="{% url 'front_notice' notice.id %}">{% trans thesaurus 'TITR' 'Thesaurus label' %}{% trans ':' %} <span class="notice-title">{{notice.title}}</span></a></h2>{% endif %}
- {% if not notice.title and notice.denomination %}<h2><a href="{% url 'front_notice' notice.id %}">{{% trans thesaurus 'DENO' 'Thesaurus label' %}{% trans ':' %} <span class="notice-title">{{notice.denomination}}</span></a></h2>{% endif %}
+ {% if notice.title %}<h2><a href="{% url 'front_notice' notice.id %}">{% trans 'TITR' context 'Thesaurus label' %}{% trans ':' %} <span class="notice-title" dir="ltr">{{notice.title}}</span></a></h2>{% endif %}
+ {% if not notice.title and notice.denomination %}<h2><a href="{% url 'front_notice' notice.id %}">{% trans 'DENO' context 'Thesaurus label' %}{% trans ':' %} <span class="notice-title" dir="ltr">{{notice.denomination}}</span></a></h2>{% endif %}
<ul>
- {% if not notice.terms_by_thesaurus.AUTR and notice.authors %}
+ {% if not notice.terms_by_thesaurus.AUTR and notice.author %}
<li class="notice-thesaurus">
<h3 class="notice-thesaurus-title">{% trans 'AUTR' context 'Thesaurus label' %}{% trans ':' %}</h3>
- <ul class="notice-terms-list">
- {% for author in notice.authors %}
- <li class="notice-term"><a href="{% url 'front_search' %}?q={{author|urlencode}}">{{author}}</a></li>
- {% endfor %}
- </ul>
+ <p class="notice-terms-list" dir="ltr">{{notice.author}}</p>
</li>
{% endif %}
{% for thesaurus, terms in notice.terms_by_thesaurus.items %}
@@ -25,7 +21,7 @@
<h3>{% trans thesaurus context 'Thesaurus label' %}{% trans ':' %}</h3>
<ul class="notice-term-list">
{% for term in terms %}
- <li class="notice-term"><a href="{% url 'front_search' %}?q={{term.locale_label|urlencode}}" data-dbpedia-uri="{{term.dbpedia_uri}}">{{term.locale_label}}</a></li>
+ <li class="notice-term"><a href="{% url 'front_search' %}?dbpedia_uri={{term.dbpedia_uri|urlencode}}" data-dbpedia-uri="{{term.dbpedia_uri}}">{{term.locale_label}}</a></li>
{% endfor %}
</ul>
</li>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/templates/jocondelab/partial/termlist_contents.html Wed Sep 18 18:31:29 2013 +0200
@@ -0,0 +1,31 @@
+{% load i18n %}
+
+{% if thesaurus %}
+ <p class="term-filter{% if not alpha_sort %} active{% endif %}">
+ <a href="{% url 'front_termlist' %}?thesaurus={{thesaurus}}">{% trans "Termes les plus fréquents" %}</a>
+ </p>
+ {% if show_alphabet %}
+ <ul class="term-filter letter-list">
+ {% for letter in alphabet %}
+ <li class="letter{% if letter == current_letter %} active{% endif %}"><a href="{% url 'front_termlist' %}?thesaurus={{thesaurus}}&letter={{letter|urlencode}}">{{letter}}</a></li>
+ {% endfor %}
+ </ul>
+ {% else %}
+ <p class="term-filter{% if alpha_sort %} active{% endif %}">
+ <a href="{% url 'front_termlist' %}?thesaurus={{thesaurus}}&alphabet=1">{% trans "Classer par ordre alphabétique" %}</a>
+ </p>
+ {% endif %}
+ <ul class="terms clearfix">
+ {% for term in terms %}
+ <li class="term" data-dbpedia-uri="{{term.dbpedia_uri}}">
+ <div class="term-image-wrap">
+ <img class="term-image" src="{{JOCONDE_IMAGE_BASE_URL}}{{term.image_url}}" />
+ </div>
+ <h3 data-dbpedia-uri="{{term.dbpedia_uri}}"><a href="{% url 'front_search' %}?dbpedia_uri={{term.dbpedia_uri|urlencode}}">{{term.label}}</a></h3>
+ {% if term.abstract %}<p>{{term.abstract|truncatechars:100}}</p>{% endif %}
+ </li>
+ {% endfor %}
+ </ul>
+{% else %}
+ <h3 class="term-contents-empty">{% trans "Choisissez une liste ci-dessus" %}</h3>
+{% endif %}
\ No newline at end of file
--- a/src/jocondelab/templates/jocondelab/partial/wrapped_notice_list.html Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/templates/jocondelab/partial/wrapped_notice_list.html Wed Sep 18 18:31:29 2013 +0200
@@ -1,6 +1,6 @@
{% load i18n %}
-<h2 class="resultcount"><b>{{count}}</b> {% if searchterm %}{% trans 'results for:' %} <b>{{searchterm}}</b>{% else %}{% trans 'results' %}{% endif %}</h2>
+<h2 class="resultcount"><b>{{count}}</b> {% if searchterm %}{% trans 'résultats pour :' %} <b>{{searchterm}}</b>{% else %}{% trans 'résultats' %}{% endif %}</h2>
<ul class="notice-list clearfix"{% if page_count %} data-page-count="{{page_count}}"{% endif %} data-current-page="{{current_page}}">
{% include 'jocondelab/partial/notice_list.html' %}
--- a/src/jocondelab/urls.py Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/urls.py Wed Sep 18 18:31:29 2013 +0200
@@ -1,7 +1,8 @@
from jocondelab.views.back_office import (TermListView, TermEditView, TermModifyWpLink,
TermRemoveWpLink, TermValidate, TermWikipediaEdition,
TermLinkSemanticLevelEdition, ThesaurusTree, TermListTableView)
-from jocondelab.views.front_office import (SearchView, NoticeView, GeoView)
+from jocondelab.views.front_office import (SearchView, NoticeView, GeoView, FrontTermListView)
+from jocondelab.views.ajax import (ContributeView, VoteView)
from core import urls as core_urls
from django.conf.urls import patterns, include, url
from django.contrib import admin
@@ -32,15 +33,18 @@
url(r'^bo/term/validate/$', login_required(TermValidate.as_view()), name='validate_term'),
url(r'^bo/tree/(?P<thes_id>\d+)/$', login_required(ThesaurusTree.as_view()), name='term_tree'),
url(r'^$', SearchView.as_view(template_name="jocondelab/front_home.html"), name='front_home'),
+ url(r'^termlist/$', FrontTermListView.as_view(), name='front_termlist'),
url(r'^search/$', SearchView.as_view(), name='front_search'),
url(r'^geo/$', GeoView.as_view(), name='front_geo'),
url(r'^timeline/$', TemplateView.as_view(template_name="jocondelab/front_timeline.html"), name='front_timeline'),
url(r'^notice/(?P<pk>\d+)/$', NoticeView.as_view(), name='front_notice'),
- url(r'^notice/$', NoticeView.as_view(), name='front_notice'),
+ url(r'^notice/$', NoticeView.as_view(), name='random_notice'),
url(r'^ajax/terms/$', 'jocondelab.views.ajax.terms', name='ajax_terms'),
url(r'^ajax/years/$', 'jocondelab.views.ajax.years', name='ajax_years'),
url(r'^ajax/geocoords/$', 'jocondelab.views.ajax.geo_coords', name='ajax_geo_coords'),
url(r'^ajax/geosearch/$', 'jocondelab.views.ajax.geo_search', name='ajax_geo_search'),
- url(r'^ajax/contribute/$', 'jocondelab.views.ajax.contribute', name='ajax_contribute'),
+ url(r'^ajax/contribute/$', ContributeView.as_view(), name='ajax_contribute'),
+ url(r'^ajax/upvote/$', VoteView.as_view(vote_value=1), name='ajax_upvote'),
+ url(r'^ajax/downvote/$', VoteView.as_view(vote_value=-1), name='ajax_downvote'),
)
--- a/src/jocondelab/views/ajax.py Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/views/ajax.py Wed Sep 18 18:31:29 2013 +0200
@@ -11,6 +11,7 @@
from django.core.paginator import Paginator
from django.http import HttpResponse
from django.template.response import TemplateResponse
+from django.views.generic import TemplateView, DetailView
from django.db.models import Sum
from django.conf import settings
@@ -106,45 +107,64 @@
return HttpResponse(content=json.dumps(results), mimetype='application/json')
-def contribute(request):
+class BaseContributionView(TemplateView):
+
+ template_name = "jocondelab/partial/contributed_item.html"
- notice_id = request.POST.get('notice_id', None)
- dbpedia_language = request.POST.get('dbpedia_language', None)
- dbpedia_uri = request.POST.get('dbpedia_uri', None)
- thesaurus_label = request.POST.get('thesaurus_label', None)
- translations = json.loads(request.POST.get('translations', '[]'))
+ def render_contribution(self, contribution, request):
+ lang = request.LANGUAGE_CODE[:2]
+ termdict = {
+ "label": contribution.term.dbpedia_fields.get(language_code=lang).label,
+ "dbpedia_uri": contribution.term.dbpedia_uri,
+ "contribution_id": contribution.id,
+ "li_style": "positive" if contribution.contribution_count > 0 else "null",
+ "font_size": "%.1f"%(12. + .5 * max(0., min(12., contribution.contribution_count)))
+ }
+ return self.render_to_response({"term": termdict})
- thobj = Thesaurus.objects.get(label=thesaurus_label) if thesaurus_label else None
- notobj = Notice.objects.get(id=notice_id)
- termobj, created = ContributedTerm.objects.get_or_create(dbpedia_uri=dbpedia_uri, dbpedia_language=dbpedia_language)
- controbj, created = Contribution.objects.get_or_create(term=termobj, thesaurus=thobj, notice=notobj, defaults={'contribution_count': 1})
- if not created:
- controbj.contribution_count += 1
- controbj.save()
- for t in translations:
- fieldsobj, created = ContributedFields.objects.get_or_create(term=termobj, dbpedia_uri=dbpedia_uri, language_code=t['language'], defaults={'abstract': t['abstract'], 'label': t['label'], 'thumbnail': t['thumbnail']})
+ def get(self, request):
+ contribution_id = int(request.GET.get('contribution_id', None))
+ return self.render_contribution(Contribution.objects.get(pk=contribution_id), request)
+
+class ContributeView(BaseContributionView):
+
+ def post(self, request):
+
+ notice_id = request.POST.get('notice_id', None)
+ dbpedia_language = request.POST.get('dbpedia_language', None)
+ dbpedia_uri = request.POST.get('dbpedia_uri', None)
+ thesaurus_label = request.POST.get('thesaurus_label', None)
+ translations = json.loads(request.POST.get('translations', '[]'))
+
+ thobj = Thesaurus.objects.get(label=thesaurus_label) if thesaurus_label else None
+ notobj = Notice.objects.get(id=notice_id)
+ termobj, created = ContributedTerm.objects.get_or_create(dbpedia_uri=dbpedia_uri, dbpedia_language=dbpedia_language)
+ controbj, created = Contribution.objects.get_or_create(term=termobj, thesaurus=thobj, notice=notobj, defaults={'contribution_count': 1})
if not created:
- fieldsobj.abstract = t['abstract']
- fieldsobj.thumbnail = t['thumbnail']
- fieldsobj.label = t['label']
- fieldsobj.save()
-
- return HttpResponse(content=json.dumps({ "contribution_id": controbj.id, "contribution_count": controbj.contribution_count }), mimetype='application/json')
-
-def contribution_vote(request, grade):
+ controbj.contribution_count += 1
+ controbj.save()
+ for t in translations:
+ abstract = t.get('abstract', None)
+ thumbnail = t.get('thumbnail', None)
+ label = t['label']
+ language = t.get('language',request.LANGUAGE_CODE[:2])
+ fieldsobj, created = ContributedFields.objects.get_or_create(term=termobj, dbpedia_uri=dbpedia_uri, language_code=language, defaults={'abstract': abstract, 'label': label, 'thumbnail': thumbnail})
+ if not created:
+ fieldsobj.abstract = abstract
+ fieldsobj.thumbnail = thumbnail
+ fieldsobj.label = label
+ fieldsobj.save()
+ return self.render_contribution(controbj, request)
- contribution_id = request.POST.get('contribution_id', None)
- controbj = ContributedTerm.objects.get(id=contribution_id)
- controbj.contribution_count += grade
- controbj.save()
+
+class VoteView(BaseContributionView):
+
+ vote_value = 0
- return HttpResponse(content=json.dumps({ "contribution_id": controbj.id, "contribution_count": controbj.contribution_count }), mimetype='application/json')
-
-def upvote(request):
-
- return contribution_vote(1)
-
-def downvote(request):
-
- return contribution_vote(-1)
+ def post(self, request):
+ contribution_id = int(request.POST.get('contribution_id', None))
+ controbj = Contribution.objects.get(id=contribution_id)
+ controbj.contribution_count += self.vote_value
+ controbj.save()
+ return self.render_contribution(controbj, request)
\ No newline at end of file
--- a/src/jocondelab/views/front_office.py Mon Sep 16 10:44:50 2013 +0200
+++ b/src/jocondelab/views/front_office.py Wed Sep 18 18:31:29 2013 +0200
@@ -6,17 +6,15 @@
'''
from core.models import (Notice, Thesaurus, Term)
-from jocondelab.models import (DbpediaFields, Country)
+from jocondelab.models import (DbpediaFields, Country, ContributableTerm, TagcloudTerm)
from django.core.paginator import Paginator
import django.utils.simplejson as json
from django.conf import settings
-from django.views.generic import View, DetailView
-from django.views.generic.base import TemplateResponseMixin
-from django.db.models import Q, Count
-import re
-import time
+from django.views.generic import DetailView, TemplateView
+from django.db.models import Sum, Count
+import random
-class SearchView(View, TemplateResponseMixin):
+class SearchView(TemplateView):
def get(self, request):
@@ -25,14 +23,12 @@
page = request.GET.get('page',1)
querystr = request.GET.get('q', "")
is_ajax = request.is_ajax()
- queryterms = [s.strip(" ") for s in re.split("[,;]",querystr) if s.strip(" ")]
+ queryterms = [s.strip(" ") for s in querystr.split(";") if s.strip(" ")]
dbpedia_uri = request.GET.get('dbpedia_uri', None)
emptysearch = (not queryterms and not dbpedia_uri)
- show_tagcloud = (emptysearch and not is_ajax)
npp = request.GET.get('count', 12 if emptysearch else 36)
wpp = 50
context["current_page"] = page
- context["lang"] = lang
if self.template_name is None:
if is_ajax and page > 1:
@@ -85,29 +81,15 @@
"title": n.titr,
"denomination": n.deno,
"image": (settings.JOCONDE_IMG_BASE_URL + n.images.all()[0].url) if n.images.count() else "",
- "authors": re.split("\s?;\s?", n.autr) if n.autr else [],
+ "author": n.autr,
"terms_by_thesaurus": termsbythesaurus
}
notices.append(noticedict)
context["notices"] = notices
-
- if show_tagcloud:
- ts = Term.objects.filter(dbpedia_fields__language_code=lang).order_by('-nb_notice')[:wpp]
- words = [{
- "uri": t.dbpedia_uri,
- "label": t.dbpedia_fields.get(language_code=lang).label,
- "notice_count": t.nb_notice
- } for t in ts]
- fontmax = 2.5
- fontmin = 1.
- scale = (fontmax - fontmin)/max(1,words[0]["notice_count"]-words[-1]["notice_count"])
- for w in words:
- w["font_size"] = fontmin + scale * w["notice_count"]
- context["words"] = words
-
+
return self.render_to_response(context)
-class GeoView(View, TemplateResponseMixin):
+class GeoView(TemplateView):
template_name = "jocondelab/front_geo.html"
@@ -129,7 +111,6 @@
context = super(NoticeView, self).get_context_data(**kwargs)
lang = self.request.GET.get('lang',self.request.LANGUAGE_CODE)[:2]
- context["lang"] = lang
context["images"] = [settings.JOCONDE_IMG_BASE_URL + i.url for i in self.object.images.exclude(relative_url__endswith='v.jpg')]
context["title"] = self.object.titr if self.object.titr else self.object.deno
@@ -153,7 +134,9 @@
contributions = [{
"label": ct.term.dbpedia_fields.get(language_code=lang).label,
"dbpedia_uri": ct.term.dbpedia_uri,
- "contribution_id": ct.id
+ "contribution_id": ct.id,
+ "li_style": "positive" if ct.contribution_count > 0 else "null",
+ "font_size": "%.1f"%(12. + .5 * max(0., min(12., ct.contribution_count)))
} for ct in cqs.filter(thesaurus=None,term__dbpedia_fields__language_code=lang).order_by('-contribution_count')]
context["terms_by_thesaurus"] = termsbythesaurus
@@ -167,6 +150,114 @@
if self.pk_url_kwarg in self.kwargs:
return super(NoticeView, self).get_object()
else:
- queryset = self.get_queryset().filter(image=True, repr='')
- return queryset.order_by('?')[0]
+ queryset = self.get_queryset().filter(image=True, repr='', noticeterm__term__id__in=ContributableTerm.objects.values('term__id'))
+ return queryset[random.randint(0, queryset.count() - 1)]
+
+class FrontTermListView(TemplateView):
+
+ template_name = "jocondelab/front_termlist.html"
+
+ def get(self, request):
+
+ context = {}
+ lang = self.request.GET.get('lang',self.request.LANGUAGE_CODE)[:2]
+ is_ajax = request.is_ajax()
+ letter = self.request.GET.get('letter',None)
+ alpha_sort = (letter is not None) or self.request.GET.get('alphabet',False)
+ context['alpha_sort'] = alpha_sort
+ thesaurus = self.request.GET.get('thesaurus',None)
+ context['thesaurus'] = thesaurus
+
+ if is_ajax:
+ self.template_name = "jocondelab/partial/termlist_contents.html"
+ else:
+ wqs = TagcloudTerm.objects.filter(term__dbpedia_fields__language_code=lang).values('term__dbpedia_fields__label','term__dbpedia_uri')
+ wqs = wqs.distinct().annotate(sum_notice=Sum('term__nb_notice')).order_by('-sum_notice')
+ n = wqs.count()
+ context['words'] = [{
+ 'label': w['term__dbpedia_fields__label'],
+ 'uri': w['term__dbpedia_uri'],
+ 'font_size': "%.2f"%(1. + float(n-i)/n)
+ } for i, w in enumerate(wqs)]
+
+ if thesaurus is not None:
+ alphabets = [{
+ "languages": [ "fr", "en", "de", "it", "es", "pt", "ca", "br", "eu", "oc" ],
+ "letters": u"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ }, {
+ "languages": [ "ru" ],
+ "letters": u"АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЭЮЯ"
+ }, {
+ "languages": [ "ar" ],
+ "letters": u"ابتثجحخدذرزسشصضطظعغفقكلمنهوي"
+ }]
+ latinalph = alphabets[0]
+ alphabet = None
+ for a in alphabets:
+ if lang in a["languages"]:
+ alphabet = a
+ if alphabet is not None:
+ if thesaurus in ['REPR','AUTR']:
+ context["show_alphabet"] = True
+ letters = alphabet["letters"]
+ context["alphabet"] = letters
+ if letter is not None:
+ letterpos = letters.find(letter)
+ context["current_letter"] = letter
+ if (not alpha_sort) or (thesaurus == 'AUTR' and alphabet == latinalph and letter is not None):
+ tqs = Term.objects.filter(dbpedia_fields__language_code=lang)
+ if thesaurus == 'REPR':
+ tqs = tqs.filter(thesaurus__label__in=['REPR','SREP'])
+ else:
+ tqs = tqs.filter(thesaurus__label=thesaurus)
+ if alpha_sort:
+ # Particular case in which thesaurus == AUTR and the alphabet is latin,
+ # we use original sorting by family name
+ if letterpos >= 0:
+ tqs = tqs.filter(label__gte=letters[letterpos])
+ if letterpos < len(letters)-1:
+ tqs = tqs.filter(label__lt=letters[letterpos+1])
+ tqs = tqs.filter(notices__image=True).distinct('label').order_by('label').select_related('notices__images')
+ tqs = tqs.values('notices__images__relative_url','dbpedia_uri','dbpedia_fields__abstract','dbpedia_fields__label')
+ terms = []
+ known_uris = []
+ for t in tqs:
+ uri = t['dbpedia_uri']
+ if uri not in known_uris:
+ terms.append(t)
+ known_uris.append(uri)
+ else:
+ # When we're in sort by most frequent terms
+ tqs = tqs.order_by('-nb_notice').extra(select={
+ 'image_url': 'SELECT relative_url FROM core_noticeimage AS JL01 JOIN core_notice AS JL02 ON JL02.id = JL01.notice_id JOIN core_noticeterm AS JL03 ON JL02.id = JL03.notice_id WHERE JL03.term_id = core_term.id LIMIT 1'
+ })[:80]
+ tqs = tqs.values('image_url','dbpedia_fields__thumbnail','dbpedia_uri','dbpedia_fields__abstract','dbpedia_fields__label')
+ terms = [t for t in tqs if t['image_url']][:60]
+ terms = [{
+ "dbpedia_uri": t['dbpedia_uri'],
+ "label": t['dbpedia_fields__label'],
+ "abstract": t['dbpedia_fields__abstract'],
+ "image_url": "%s%s"%(settings.JOCONDE_IMG_BASE_URL, t.get('image_url',t.get('notices__images__relative_url','')))
+ } for t in terms]
+ context['termcount'] = len(terms)
+ else:
+ tqs = DbpediaFields.objects.filter(language_code=lang,term__notices__image=True).exclude(label=None)
+ if thesaurus == 'REPR':
+ tqs = tqs.filter(term__thesaurus__label__in=['REPR','SREP'])
+ else:
+ tqs = tqs.filter(term__thesaurus__label=thesaurus)
+ if thesaurus in ['REPR','AUTR'] and letter is not None: #Pagination required for these two thesaura
+ if alphabet is not None:
+ if letterpos >= 0:
+ tqs = tqs.filter(label__gte=letters[letterpos])
+ if letterpos < len(letters)-1:
+ tqs = tqs.filter(label__lt=letters[letterpos+1])
+ tqs = tqs.distinct('label').order_by('label')
+ terms = tqs.select_related('term__notices__images').values('term__notices__images__relative_url','dbpedia_uri','abstract','label')
+ for t in terms:
+ t['image_url'] = "%s%s"%(settings.JOCONDE_IMG_BASE_URL, t['term__notices__images__relative_url'])
+ context['termcount'] = terms.count()
+ context['terms'] = terms
+
+ return self.render_to_response(context)
\ No newline at end of file