# HG changeset patch # User veltr # Date 1378740218 -7200 # Node ID e61d5a5d970e975e351e0d3f8a29f258829a86ce # Parent da385c0872a6d5ae8af2b04d0d248199f64d5d63 Search on terms diff -r da385c0872a6 -r e61d5a5d970e src/jocondelab/migrations/0008_auto__add_nb_notices_on_countries.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jocondelab/migrations/0008_auto__add_nb_notices_on_countries.py Mon Sep 09 17:23:38 2013 +0200 @@ -0,0 +1,284 @@ +# -*- 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 field 'Country.nb_notices' + db.add_column(u'jocondelab_country', 'nb_notices', + self.gf('django.db.models.fields.IntegerField')(default=0, db_index=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Country.nb_notices' + db.delete_column(u'jocondelab_country', 'nb_notices') + + + 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']"}) + }, + '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 diff -r da385c0872a6 -r e61d5a5d970e src/jocondelab/static/jocondelab/css/front-common.css --- a/src/jocondelab/static/jocondelab/css/front-common.css Fri Sep 06 17:51:50 2013 +0200 +++ b/src/jocondelab/static/jocondelab/css/front-common.css Mon Sep 09 17:23:38 2013 +0200 @@ -129,6 +129,10 @@ margin: 40px auto 20px; text-align: right; } +input { + font-family: 'OpenSans' !important; +} + /* END GLOBAL BLOCKS */ /* HEADER > TITLE */ @@ -167,11 +171,17 @@ position: absolute; top: 32px; right: 0; max-width: 35%; text-align: right; } +.search-input, .search-form .tagit { + border-radius: 8px; box-shadow: 1px 1px 1px #666666 inset; border: none; + background: url(../img/search-icon.png) right center no-repeat #ffffff; +} + +.header-search-input, .header-search-form .tagit { + margin: 0 auto; width: 260px; max-width: 90%; font-size: 14px; z-index: 1; +} + .header-search-input { - margin: 0 auto; width: 260px; max-width: 90%; line-height: 28px; height: 28px; - font-size: 16px; font-family: 'OpenSans'; padding: 0 9px; z-index: 1; - border-radius: 9px; box-shadow: 2px 2px 4px #333333 inset; border: none; - background: url(../img/search-icon.png) right center no-repeat #ffffff; + line-height: 28px; height: 28px; padding: 0 9px; } .header-search-input::-moz-placeholder { @@ -182,6 +192,10 @@ font-size: .8em; font-style: italic; } +.search-form .tagit { + height: 2em; padding: 0.2em 0.5em; +} + /* HEADER > MENUS */ .top-menus { @@ -239,24 +253,24 @@ /* DBPEDIA OVERLAY */ .dbpedia-overlay { - position: absolute; width: 400px; background: #ffffff; border: 1px solid #999999; box-shadow: 5px 5px 10px rgba(0,0,0,.5); + position: absolute; width: 280px; background: #ffffff; border: 1px solid #999999; box-shadow: 5px 5px 10px rgba(0,0,0,.5); display: none; z-index: 8; } .dbpedia-overlay h2 { - font-size: 16px; font-weight: 700; margin: 10px; + font-size: 14px; font-weight: 700; margin: 10px; } .dbpedia-abstract { - font-size: 12px; margin: 0 10px 10px; + font-size: 11px; margin: 0 10px 10px; } .dbpedia-source { - color: #0063DC; font-size: 11px; margin: 0 10px 10px; clear: both; + color: #0063DC; font-size: 10px; margin: 0 10px 10px; clear: both; } .dbpedia-overlay img { - max-width: 200px; max-height: 180px; float: left; margin: 10px 10px 2px; + max-width: 160px; max-height: 150px; float: left; margin: 10px 10px 2px; } /* RESULTS LIST */ @@ -328,14 +342,4 @@ .notice-term:hover { background: #ffffff; -} - -.big-search-form { - text-align: center; margin: 20px 0; -} - -.big-search-input { - margin: 0 auto; width: 80%; line-height: 32px; height: 32px; font-size: 16px; font-family: 'OpenSans'; padding: 0 9px; - border-radius: 9px; box-shadow: 2px 2px 4px #333333 inset; - background: url(../img/search-icon.png) right center no-repeat #ffffff; border: none; } \ No newline at end of file diff -r da385c0872a6 -r e61d5a5d970e src/jocondelab/static/jocondelab/css/front-search.css --- a/src/jocondelab/static/jocondelab/css/front-search.css Fri Sep 06 17:51:50 2013 +0200 +++ b/src/jocondelab/static/jocondelab/css/front-search.css Mon Sep 09 17:23:38 2013 +0200 @@ -10,4 +10,16 @@ .term-frequency { font-size: .8em; -} \ No newline at end of file +} + +.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; +} diff -r da385c0872a6 -r e61d5a5d970e src/jocondelab/static/jocondelab/js/front-common.js --- a/src/jocondelab/static/jocondelab/js/front-common.js Fri Sep 06 17:51:50 2013 +0200 +++ b/src/jocondelab/static/jocondelab/js/front-common.js Mon Sep 09 17:23:38 2013 +0200 @@ -1,5 +1,30 @@ $(function() { + /* SEARCH TAG-IT */ + + var $searchInput = $(".search-input"), + originalValue = $searchInput.val(); + + function submitIfChanged(e, ui) { + var val = $searchInput.val(); + if (!ui.duringInitialization && val && val !== originalValue) { + $(".search-form").submit(); + } + } + + $searchInput.tagit({ + autocomplete: { + source: urls.ajax_terms, + focus: function(e, ui) { + showDbpediaBox(ui.item.dbpedia_uri); + setDbpediaBoxAnchor({type: "dom", selector: $(e.target).autocomplete("widget"), positioning: "side"}); + } + }, + allowSpaces: true, + afterTagAdded : submitIfChanged, + afterTagRemoved: submitIfChanged + }); + /* DBPEDIA OVERLAY */ var lang = $("html").attr("lang"), @@ -17,35 +42,62 @@ $overlay = $(".dbpedia-overlay"), hovering = null, dontclose = false, - $refdiv = null, + anchor = null, $win = $(window), dbpediaCache = {}, $overlayImg = $overlay.find("img"), $h2 = $overlay.find("h2"), $abstract = $overlay.find(".dbpedia-abstract"), $source = $overlay.find(".dbpedia-source a"); - - window.moveDbpediaBoxToCoords = function(x, y, ymargin, alwaysbelow) { - var ovw = $overlay.outerWidth(), - ovh = $overlay.outerHeight(), - showAbove = (y + ymargin + ovh) > ($win.height() + $win.scrollTop()) && !alwaysbelow; - $overlay.css({ - top: showAbove ? (y - ovh - ymargin) : (y + ymargin), - left: Math.max(5, Math.min($win.width() - ovw - 5, x - (ovw / 2))) - }); - } - function moveDbpediaBoxToRefDiv() { - if (hovering && $refdiv) { - var refoff = $refdiv.offset(), - refw = $refdiv.outerWidth(), - refh = $refdiv.outerHeight(), - refx = refoff.left, - refy = refoff.top; - window.moveDbpediaBoxToCoords(refx + (refw / 2), refy + (refh / 2), refh / 2); + window.setDbpediaBoxAnchor = function(a) { + anchor = a || null; + if (anchor) { + recentreDbpediaBox(); } } + window.recentreDbpediaBox = function() { + if (!anchor) { return; } + var ovw = $overlay.outerWidth(), + ovh = $overlay.outerHeight(); + switch (anchor.type) { + case "dom": + var $refdiv = anchor.selector, + refoff = $refdiv.offset(), + refw = $refdiv.outerWidth(), + refh = $refdiv.outerHeight(), + refx = refoff.left, + refy = refoff.top, + refbox = { left: refx, right: refx + refw, top: refy, bottom: refy + refh }; + break; + case "callback": + var refbox = anchor.callback() + break; + } + if (!refbox) { return; } + if (!refbox.right) { refbox.right = refbox.left; } + if (!refbox.bottom) { refbox.bottom = refbox.top; } + refbox.hcentre = (refbox.left + refbox.right) / 2; + switch (anchor.positioning) { + case "side": + var showLeft = (refbox.right + ovw) > $win.width(); + css = { left: showLeft ? (refbox.left - ovw) : (refbox.right), top: refbox.top }; + break; + case "bottom": + css = { left: refbox.hcentre - ovw / 2, top: refbox.bottom }; + break; + case "vertical": + default: + var showAbove = (refbox.bottom + ovh) > ($win.height() + $win.scrollTop()); + css = { left: refbox.hcentre - ovw / 2, top: showAbove ? refbox.top - ovh : refbox.bottom }; + } + if (css) { + css.left = Math.max(5, Math.min($win.width() - ovw - 5, css.left)); + $overlay.css(css); + } + } + window.showDbpediaBox = function(dbpediaUri, cancelClose) { if (!dbpediaUri) { return; @@ -73,7 +125,7 @@ $h2.text((uriData.l && uriData.lr) ? (uriData.l + " → " + uriData.lr) : label); $abstract.text((uriData.a || uriData.ar || "").replace(/^(.{240,260})\s.+$/,'$1…').substr(0,261)); $source.attr("href", wkUrl); - moveDbpediaBoxToRefDiv(); + recentreDbpediaBox(); } function getUriData(dbpediaUri) { @@ -108,8 +160,8 @@ setTimeout(function() { if (!hovering) { $overlay.hide(); + window.setDbpediaBoxAnchor(); deferredRemovePopin(); - $refdiv = null; } }, 0); } @@ -118,8 +170,9 @@ var $sel = $(selector); $sel.off("mouseenter mouseleave"); $sel.mouseenter(function(e) { - $refdiv = $(this); - var dbpediaUri = $refdiv.attr("data-dbpedia-uri") || defaultUri; + var $this = $(this); + setDbpediaBoxAnchor({ selector: $this, type: "dom", positioning: "vertical" }); + var dbpediaUri = $this.attr("data-dbpedia-uri") || defaultUri; if (!dbpediaUri || dbpediaUri === "None") { return; } @@ -247,8 +300,8 @@ $win.resize(function() { adaptGrid(); - moveDbpediaBoxToRefDiv(); - }).scroll(moveDbpediaBoxToRefDiv); + recentreDbpediaBox(); + }).scroll(recentreDbpediaBox); $(".language-label").click(function() { $(this).siblings(".language-button").click(); @@ -258,6 +311,6 @@ $(".language-list").toggle(); }); */ - $overlayImg.load(moveDbpediaBoxToRefDiv); + $overlayImg.load(recentreDbpediaBox); }); diff -r da385c0872a6 -r e61d5a5d970e src/jocondelab/static/jocondelab/js/front-geo.js --- a/src/jocondelab/static/jocondelab/js/front-geo.js Fri Sep 06 17:51:50 2013 +0200 +++ b/src/jocondelab/static/jocondelab/js/front-geo.js Mon Sep 09 17:23:38 2013 +0200 @@ -15,7 +15,7 @@ var coordCache = [], coordIdCache = [], defaultIcon = new L.Icon.Default(), - orangeIcon = new L.Icon.Default({iconUrl: urls.static_url + "jocondelab/lib/images/marker-orange.png"}), + orangeIcon = new L.Icon.Default({iconUrl: urls.orange_marker }), country_uris = _(countries).pluck("dbpedia_uri"), itemCount = 12, scaleBase = Math.log(countries[0].nb_notices), @@ -94,6 +94,7 @@ return; } window.showDbpediaBox(feature.dbpedia_uri, (feature === stickyFeature)); + window.setDbpediaBoxAnchor({type: "callback", callback: moveCurrentFeature, positioning: "bottom"}); throttledMove(); } @@ -120,17 +121,19 @@ return; } var p = map.latLngToContainerPoint(c), - mo = $map.offset(); - window.moveDbpediaBoxToCoords(p.x + mo.left, p.y + mo.top, 0, true); + mo = $map.offset(), + y = p.y + mo.top; + return ({ top: y - (fb ? 0 : 30), left: p.x + mo.left, bottom: y }); } - var throttledMove = _.throttle(moveCurrentFeature,200); + var throttledMove = _.throttle(window.recentreDbpediaBox,200); function hideDbpedia(force) { if (!stickyFeature) { currentFeature = null; } if (!stickyFeature || force) { + window.setDbpediaBoxAnchor(); window.hideDbpediaBox(); } } diff -r da385c0872a6 -r e61d5a5d970e src/jocondelab/static/jocondelab/js/front-notice.js --- a/src/jocondelab/static/jocondelab/js/front-notice.js Fri Sep 06 17:51:50 2013 +0200 +++ b/src/jocondelab/static/jocondelab/js/front-notice.js Mon Sep 09 17:23:38 2013 +0200 @@ -100,7 +100,7 @@ if (typeof dbpCache[label] === "undefined") { dbpCache[label] = null; $.ajax({ - url: wikipedia_urls.fr.dbpedia_sparql_url, + url: urls.wikipedia.fr.dbpedia_sparql_url, data: { query: frSparqlTpl( { label: label, lang: lang } ), format: "application/sparql-results+json" @@ -111,10 +111,10 @@ //console.log("Data found in french DbPedia", data.results.bindings[0]); onBindingsLoaded(data, { dbpedia_language: "fr" }); } else { - if (lang !== "fr" && wikipedia_urls[lang]) { - var wk_url = wikipedia_urls[lang].page_url + '/' + encodeURIComponent(label.replace(/ /g,'_')); + if (lang !== "fr" && urls.wikipedia[lang]) { + var wk_url = urls.wikipedia[lang].page_url + '/' + encodeURIComponent(label.replace(/ /g,'_')); $.ajax({ - url: wikipedia_urls[lang].dbpedia_sparql_url, + url: urls.wikipedia[lang].dbpedia_sparql_url, data: { query: otherSparqlTpl({ wikipedia_url: wk_url }), format: "application/sparql-results+json" @@ -234,7 +234,7 @@ if (termdata.dbpedia_uri) { bindDbpediaBox($newItem.find("term-link"), termdata.dbpedia_uri); $.ajax({ - url: contribute_url, + url: urls.ajax_contribute, dataType: "json", type: "POST", data: { diff -r da385c0872a6 -r e61d5a5d970e src/jocondelab/static/jocondelab/lib/jquery.tagit.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jocondelab/static/jocondelab/lib/jquery.tagit.css Mon Sep 09 17:23:38 2013 +0200 @@ -0,0 +1,67 @@ +ul.tagit { + padding: 1px 5px; + overflow: auto; + margin-left: inherit; /* usually we don't want the regular ul margins. */ + margin-right: inherit; +} +ul.tagit li { + display: block; + float: left; + margin: 2px 5px 2px 0; +} +ul.tagit li.tagit-choice { + position: relative; + line-height: inherit; +} + +ul.tagit li.tagit-choice-read-only { + padding: .2em .5em .2em .5em; +} + +ul.tagit li.tagit-choice-editable { + padding: .2em 18px .2em .5em; +} + +ul.tagit li.tagit-new { + padding: .25em 4px .25em 0; +} + +ul.tagit li.tagit-choice a.tagit-label { + cursor: pointer; + text-decoration: none; +} +ul.tagit li.tagit-choice .tagit-close { + cursor: pointer; + position: absolute; + right: .1em; + top: 50%; + margin-top: -8px; + line-height: 17px; +} + +/* used for some custom themes that don't need image icons */ +ul.tagit li.tagit-choice .tagit-close .text-icon { + display: none; +} + +ul.tagit li.tagit-choice input { + display: block; + float: left; + margin: 2px 5px 2px 0; +} +ul.tagit input[type="text"] { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + + border: none; + margin: 0; + padding: 0; + width: inherit; + background-color: inherit; + outline: none; +} diff -r da385c0872a6 -r e61d5a5d970e src/jocondelab/static/jocondelab/lib/tag-it.min.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jocondelab/static/jocondelab/lib/tag-it.min.js Mon Sep 09 17:23:38 2013 +0200 @@ -0,0 +1,16 @@ +(function(b){b.widget("ui.tagit",{options:{allowDuplicates:!1,caseSensitive:!0,fieldName:"tags",placeholderText:null,readOnly:!1,removeConfirmation:!1,tagLimit:null,availableTags:[],autocomplete:{},showAutocompleteOnFocus:!1,allowSpaces:!1,singleField:!1,singleFieldDelimiter:",",singleFieldNode:null,animate:!0,tabIndex:null,beforeTagAdded:null,afterTagAdded:null,beforeTagRemoved:null,afterTagRemoved:null,onTagClicked:null,onTagLimitExceeded:null,onTagAdded:null,onTagRemoved:null,tagSource:null},_create:function(){var a= +this;this.element.is("input")?(this.tagList=b("