From b63ac30fa188f2c8da37fe85e122d5a1e801d7a2 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 30 Aug 2016 16:56:51 +0200 Subject: Minor template fix --- ishtar_common/templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html index b601076fe..4b8b68f8a 100644 --- a/ishtar_common/templates/base.html +++ b/ishtar_common/templates/base.html @@ -125,7 +125,7 @@

{% trans "Processing..." %}

{% trans "This can be long." %}

{% trans "Time to take a coffee?" %}

-

{% trans "Time to take another coffee?" %}

+

{% trans "Time to take another coffee?" %}

-- cgit v1.2.3 From 998fc1779b089e7fc29e2958eb8f3ffc7b02344b Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 30 Aug 2016 17:11:08 +0200 Subject: Install: default nginx conf wait after long uwsgi response (refs #3174) --- install/nginx.conf.template | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install/nginx.conf.template b/install/nginx.conf.template index c41018786..dd236d113 100644 --- a/install/nginx.conf.template +++ b/install/nginx.conf.template @@ -29,6 +29,8 @@ server { location / { include uwsgi_params; uwsgi_pass 127.0.0.1:#UWSGI_PORT#; + uwsgi_read_timeout 1800; + uwsgi_send_timeout 600; } } -- cgit v1.2.3 From 8d6f214b9e88e64e5776bb5d6580c718ca792bbd Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 30 Aug 2016 18:10:19 +0200 Subject: Imports: delete town when associated import is deleted (refs #2867) --- ishtar_common/migrations/0055_auto.py | 415 ++++++++++++++++++++++++++++++++++ ishtar_common/models.py | 2 +- ishtar_common/tests.py | 33 ++- ishtar_common/utils.py | 2 +- 4 files changed, 445 insertions(+), 7 deletions(-) create mode 100644 ishtar_common/migrations/0055_auto.py diff --git a/ishtar_common/migrations/0055_auto.py b/ishtar_common/migrations/0055_auto.py new file mode 100644 index 000000000..db41eb868 --- /dev/null +++ b/ishtar_common/migrations/0055_auto.py @@ -0,0 +1,415 @@ +# -*- 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 M2M table for field imports on 'Town' + db.create_table('ishtar_common_town_imports', ( + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), + ('town', models.ForeignKey(orm['ishtar_common.town'], null=False)), + ('import', models.ForeignKey(orm['ishtar_common.import'], null=False)) + )) + db.create_unique('ishtar_common_town_imports', ['town_id', 'import_id']) + + + def backwards(self, orm): + # Removing M2M table for field imports on 'Town' + db.delete_table('ishtar_common_town_imports') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.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': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + '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'}), + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + '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'}), + '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'}) + }, + 'ishtar_common.arrondissement': { + 'Meta': {'object_name': 'Arrondissement'}, + 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.author': { + 'Meta': {'object_name': 'Author'}, + 'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) + }, + 'ishtar_common.authortype': { + 'Meta': {'object_name': 'AuthorType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.canton': { + 'Meta': {'object_name': 'Canton'}, + 'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.department': { + 'Meta': {'ordering': "['number']", 'object_name': 'Department'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), + 'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.documenttemplate': { + 'Meta': {'ordering': "['associated_object_name', 'name']", 'object_name': 'DocumentTemplate'}, + 'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) + }, + 'ishtar_common.format': { + 'Meta': {'object_name': 'Format'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.formatertype': { + 'Meta': {'ordering': "('formater_type', 'options')", 'unique_together': "(('formater_type', 'options', 'many_split'),)", 'object_name': 'FormaterType'}, + 'formater_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'many_split': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'options': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.globalvar': { + 'Meta': {'ordering': "['slug']", 'object_name': 'GlobalVar'}, + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.historicalorganization': { + 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOrganization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), + 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.import': { + 'Meta': {'object_name': 'Import'}, + 'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), + 'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), + 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), + 'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) + }, + 'ishtar_common.importercolumn': { + 'Meta': {'ordering': "('importer_type', 'col_number')", 'unique_together': "(('importer_type', 'col_number'),)", 'object_name': 'ImporterColumn'}, + 'col_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'columns'", 'to': "orm['ishtar_common.ImporterType']"}), + 'regexp_pre_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.importerdefault': { + 'Meta': {'object_name': 'ImporterDefault'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'defaults'", 'to': "orm['ishtar_common.ImporterType']"}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerdefaultvalues': { + 'Meta': {'object_name': 'ImporterDefaultValues'}, + 'default_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_values'", 'to': "orm['ishtar_common.ImporterDefault']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerduplicatefield': { + 'Meta': {'object_name': 'ImporterDuplicateField'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'duplicate_fields'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'field_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + 'ishtar_common.importertype': { + 'Meta': {'object_name': 'ImporterType'}, + 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.importtarget': { + 'Meta': {'object_name': 'ImportTarget'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'targets'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'formater_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.FormaterType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'regexp_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.ishtarsiteprofile': { + 'Meta': {'ordering': "['label']", 'object_name': 'IshtarSiteProfile'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'base_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}), + 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'context_record_external_id': ('django.db.models.fields.TextField', [], {'default': "'{parcel__external_id}-{label}'"}), + 'currency': ('django.db.models.fields.CharField', [], {'default': "u'\\u20ac'", 'max_length': "'5'"}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'file_external_id': ('django.db.models.fields.TextField', [], {'default': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}), + 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}), + 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.TextField', [], {}), + 'parcel_external_id': ('django.db.models.fields.TextField', [], {'default': "'{associated_file__external_id}{operation__code_patriarche}-{town__numero_insee}-{section}{parcel_number}'"}), + 'person_raw_name': ('django.db.models.fields.TextField', [], {'default': "'{name|upper} {surname}'"}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'warehouse': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.ishtaruser': { + 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), + 'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'ishtar_common.itemkey': { + 'Meta': {'object_name': 'ItemKey'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}) + }, + 'ishtar_common.operationtype': { + 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.organization': { + 'Meta': {'object_name': 'Organization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_organization'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.organizationtype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.person': { + 'Meta': {'object_name': 'Person'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'contact_type': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_person'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_name': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.persontype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.regexp': { + 'Meta': {'object_name': 'Regexp'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'regexp': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.sourcetype': { + 'Meta': {'object_name': 'SourceType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.state': { + 'Meta': {'ordering': "['number']", 'object_name': 'State'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}) + }, + 'ishtar_common.supporttype': { + 'Meta': {'object_name': 'SupportType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.targetkey': { + 'Meta': {'unique_together': "(('target', 'key', 'associated_user', 'associated_import'),)", 'object_name': 'TargetKey'}, + 'associated_import': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'associated_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_set': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'key': ('django.db.models.fields.TextField', [], {}), + 'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'keys'", 'to': "orm['ishtar_common.ImportTarget']"}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.town': { + 'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'}, + 'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}), + 'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}), + 'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_town'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), + 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['ishtar_common'] \ No newline at end of file diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 6228ea1d0..7b448284e 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -2565,7 +2565,7 @@ if settings.COUNTRY == 'fr': (self.name, unicode(self.arrondissement))) -class Town(models.Model): +class Town(Imported, models.Model): name = models.CharField(_(u"Name"), max_length=100) surface = models.IntegerField(_(u"Surface (m2)"), blank=True, null=True) center = models.PointField(_(u"Localisation"), srid=settings.SRID, diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index a4d354eb1..3c46ee6b2 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2015 Étienne Loks +# Copyright (C) 2015-2016 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -24,6 +24,7 @@ from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.core.cache import cache from django.core.exceptions import ValidationError +from django.core.files.base import File as DjangoFile from django.core.urlresolvers import reverse from django.template.defaultfilters import slugify from django.test import TestCase @@ -216,7 +217,29 @@ class MergeTest(TestCase): in self.person_3.person_types.all()) -class ImportKeyTest(TestCase): +class ImportTest(TestCase): + def testDeleteRelated(self): + town = models.Town.objects.create(name='my-test') + self.assertEqual(models.Town.objects.filter(name='my-test').count(), 1) + + # create an import, fields are not relevant... + create_user() + importer_type = models.ImporterType.objects.create( + associated_models='ishtar_common.models.Person') + mcc_operation_file = DjangoFile(file( + settings.ROOT_PATH + + '../archaeological_operations/tests/MCC-operations-example.csv', + 'rb')) + imprt = models.Import.objects.create( + user=models.IshtarUser.objects.all()[0], + importer_type=importer_type, + imported_file=mcc_operation_file) + + town.imports.add(imprt) + imprt.delete() + # town should be deleted + self.assertEqual(models.Town.objects.filter(name='my-test').count(), 0) + def testKeys(self): content_type = ContentType.objects.get_for_model( models.OrganizationType) @@ -291,12 +314,12 @@ class IshtarSiteProfileTest(TestCase): self.assertTrue(profile2.context_record and profile2.find) def testDefaultProfile(self): - cache.set('default-ishtarsiteprofile-is-current-profile', None, + cache.set('default-ishtar_common-IshtarSiteProfile', None, settings.CACHE_TIMEOUT) self.assertFalse(models.IshtarSiteProfile.objects.count()) - profile = models.get_current_profile() + profile = models.get_current_profile(force=True) self.assertTrue(profile) - self.assertTrue(models.IshtarSiteProfile.objects.count()) + self.assertEqual(models.IshtarSiteProfile.objects.count(), 1) def testMenuFiltering(self): cache.set('default-ishtarsiteprofile-is-current-profile', None, diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index 28b1affa5..9fe7a3a00 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2013 Étienne Loks +# Copyright (C) 2013-2016 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as -- cgit v1.2.3 From 3f537626078258b0f1189444733e55dbc2cc6db1 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 31 Aug 2016 17:01:50 +0200 Subject: Docs (fr): update installation instruction --- docs/fr/source/installation.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/fr/source/installation.rst b/docs/fr/source/installation.rst index 5c6d3fdc6..e262e0df9 100644 --- a/docs/fr/source/installation.rst +++ b/docs/fr/source/installation.rst @@ -5,7 +5,7 @@ Installation ============ :Auteur: Étienne Loks -:Date: 2016-06-09 +:Date: 2016-08-31 :Copyright: CC-BY 3.0 Ce document présente les instructions d'installation d'Ishtar. @@ -44,7 +44,7 @@ Enfin pour créer une nouvelle instance d'Ishtar :: INSTANCE=le_nom_de_mon_instance URL=ishtar.my-organization.net ishtar-prepare-instance -INSTANCE est le nom de l'instance et URL le nom du domaine associé. +INSTANCE est le nom de l'instance et URL le nom du domaine associé (juste l'url pas de http:// ou https://). .. note:: Le nom de domaine doit bien entendu pointer vers l'adresse IP du serveur. Si à l'issue de l'installation, le service n'est pas joignable, verifiez bien votre configuration DNS ou le cas échéant verifez bien auprès du gestionnaire de nom de domaine que c'est le cas. -- cgit v1.2.3 From 0af04bcd8d16bd5f140bc82cd7f56a7b90f0f61c Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 1 Sep 2016 11:04:24 +0200 Subject: Title types can be set in administration. --- archaeological_files/data_importer.py | 4 +- archaeological_files/models.py | 4 +- archaeological_files/tests.py | 2 +- archaeological_operations/utils.py | 4 +- ishtar_common/forms_common.py | 6 +- ...to__add_titletype__add_field_person_pretitle.py | 434 ++++++++++++++++++++ .../migrations/0057_rename_pretitle_old_title.py | 421 ++++++++++++++++++++ ishtar_common/migrations/0058_generate_title.py | 435 +++++++++++++++++++++ ishtar_common/models.py | 23 +- ishtar_common/ooo_translation.py | 7 +- ishtar_common/tests.py | 6 +- ishtar_common/wizards.py | 2 +- 12 files changed, 1324 insertions(+), 24 deletions(-) create mode 100644 ishtar_common/migrations/0056_auto__add_titletype__add_field_person_pretitle.py create mode 100644 ishtar_common/migrations/0057_rename_pretitle_old_title.py create mode 100644 ishtar_common/migrations/0058_generate_title.py diff --git a/archaeological_files/data_importer.py b/archaeological_files/data_importer.py index ba92c63ab..96b2ee007 100644 --- a/archaeological_files/data_importer.py +++ b/archaeological_files/data_importer.py @@ -23,7 +23,7 @@ import unicodecsv from django.conf import settings from ishtar_common.data_importer import * -from ishtar_common.models import Person, OrganizationType +from ishtar_common.models import OrganizationType from archaeological_operations.data_importer import * @@ -113,7 +113,7 @@ class FileImporterSraPdL(FilePostProcessing, Importer): None, # D, 4 ImportFormater( "general_contractor__title", # E, 5 - StrChoiceFormater(Person.TYPE, cli=True), + TypeFormater(models.TitleType), required=False, comment=u"Aménageur - titre"), None, # F, 6 diff --git a/archaeological_files/models.py b/archaeological_files/models.py index 1cfbe35d3..98223d7ff 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -30,7 +30,7 @@ from ishtar_common.utils import cached_label_changed, get_cache from ishtar_common.models import GeneralType, BaseHistorizedItem, \ HistoricalRecords, OwnPerms, Person, Organization, Department, Town, \ - Dashboard, DashboardFormItem, IshtarUser, ValueGetter, ShortMenuItem, \ + Dashboard, DashboardFormItem, ValueGetter, ShortMenuItem, \ OperationType, get_external_id from archaeological_operations.models import get_values_town_related, \ @@ -243,7 +243,7 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter, if self.general_contractor: if self.general_contractor.name: address = u" ".join([ - getattr(self.general_contractor, key) + unicode(getattr(self.general_contractor, key)) for key in ('title', 'surname', 'name') if getattr(self.general_contractor, key)]) elif self.general_contractor.raw_name: diff --git a/archaeological_files/tests.py b/archaeological_files/tests.py index 030bc1624..63b8550e2 100644 --- a/archaeological_files/tests.py +++ b/archaeological_files/tests.py @@ -50,7 +50,7 @@ class FileInit(object): self.extra_models['person_type'] = person_type self.model_list.append(person_type) - person = models.Person(title='Mr', surname='Surname', name='Name', + person = models.Person(surname='Surname', name='Name', history_modifier=self.o_user) person.save() self.extra_models['person'] = person diff --git a/archaeological_operations/utils.py b/archaeological_operations/utils.py index 53bfedc62..a84ff44ae 100644 --- a/archaeological_operations/utils.py +++ b/archaeological_operations/utils.py @@ -289,7 +289,7 @@ def parse_title(value): return value.title() -def parse_name_surname(value): +def parse_name_surname(value, owner): value = parse_string(value) items = value.split(' ') name = items[0] @@ -305,7 +305,7 @@ def parse_name_surname(value): if q.count(): return q.all()[0] else: - defaults = {'history_modifier': get_default_user(), + defaults = {'history_modifier': owner, 'title': ''} defaults.update(values) p = Person.objects.create(**defaults) diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index aef94476c..cb75e4026 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -256,8 +256,9 @@ class PersonFormSelection(forms.Form): class SimplePersonForm(NewItemForm): form_label = _("Identity") - associated_models = {'attached_to': models.Organization} - title = forms.ChoiceField(label=_("Title"), choices=models.Person.TYPE) + associated_models = {'attached_to': models.Organization, + 'title': models.TitleType} + title = forms.ChoiceField(label=_("Title"), choices=[]) surname = forms.CharField(label=_(u"Surname"), max_length=50, validators=[name_validator]) name = forms.CharField(label=_(u"Name"), max_length=200, @@ -308,6 +309,7 @@ class SimplePersonForm(NewItemForm): def __init__(self, *args, **kwargs): super(SimplePersonForm, self).__init__(*args, **kwargs) self.fields['raw_name'].widget.attrs['readonly'] = True + self.fields['title'].choices = models.TitleType.get_types() class PersonUserSelect(PersonSelect): diff --git a/ishtar_common/migrations/0056_auto__add_titletype__add_field_person_pretitle.py b/ishtar_common/migrations/0056_auto__add_titletype__add_field_person_pretitle.py new file mode 100644 index 000000000..6db62c107 --- /dev/null +++ b/ishtar_common/migrations/0056_auto__add_titletype__add_field_person_pretitle.py @@ -0,0 +1,434 @@ +# -*- 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 'TitleType' + db.create_table('ishtar_common_titletype', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('label', self.gf('django.db.models.fields.CharField')(max_length=100)), + ('txt_idx', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)), + ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), + ('available', self.gf('django.db.models.fields.BooleanField')(default=True)), + )) + db.send_create_signal('ishtar_common', ['TitleType']) + + # Adding field 'Person.pretitle' + db.add_column('ishtar_common_person', 'pretitle', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['ishtar_common.TitleType'], null=True, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting model 'TitleType' + db.delete_table('ishtar_common_titletype') + + # Deleting field 'Person.pretitle' + db.delete_column('ishtar_common_person', 'pretitle_id') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.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': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + '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'}), + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + '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'}), + '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'}) + }, + 'ishtar_common.arrondissement': { + 'Meta': {'object_name': 'Arrondissement'}, + 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.author': { + 'Meta': {'object_name': 'Author'}, + 'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) + }, + 'ishtar_common.authortype': { + 'Meta': {'object_name': 'AuthorType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.canton': { + 'Meta': {'object_name': 'Canton'}, + 'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.department': { + 'Meta': {'ordering': "['number']", 'object_name': 'Department'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), + 'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.documenttemplate': { + 'Meta': {'ordering': "['associated_object_name', 'name']", 'object_name': 'DocumentTemplate'}, + 'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) + }, + 'ishtar_common.format': { + 'Meta': {'object_name': 'Format'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.formatertype': { + 'Meta': {'ordering': "('formater_type', 'options')", 'unique_together': "(('formater_type', 'options', 'many_split'),)", 'object_name': 'FormaterType'}, + 'formater_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'many_split': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'options': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.globalvar': { + 'Meta': {'ordering': "['slug']", 'object_name': 'GlobalVar'}, + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.historicalorganization': { + 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOrganization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), + 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.import': { + 'Meta': {'object_name': 'Import'}, + 'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), + 'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), + 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), + 'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) + }, + 'ishtar_common.importercolumn': { + 'Meta': {'ordering': "('importer_type', 'col_number')", 'unique_together': "(('importer_type', 'col_number'),)", 'object_name': 'ImporterColumn'}, + 'col_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'columns'", 'to': "orm['ishtar_common.ImporterType']"}), + 'regexp_pre_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.importerdefault': { + 'Meta': {'object_name': 'ImporterDefault'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'defaults'", 'to': "orm['ishtar_common.ImporterType']"}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerdefaultvalues': { + 'Meta': {'object_name': 'ImporterDefaultValues'}, + 'default_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_values'", 'to': "orm['ishtar_common.ImporterDefault']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerduplicatefield': { + 'Meta': {'object_name': 'ImporterDuplicateField'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'duplicate_fields'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'field_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + 'ishtar_common.importertype': { + 'Meta': {'object_name': 'ImporterType'}, + 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.importtarget': { + 'Meta': {'object_name': 'ImportTarget'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'targets'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'formater_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.FormaterType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'regexp_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.ishtarsiteprofile': { + 'Meta': {'ordering': "['label']", 'object_name': 'IshtarSiteProfile'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'base_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}), + 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'context_record_external_id': ('django.db.models.fields.TextField', [], {'default': "'{parcel__external_id}-{label}'"}), + 'currency': ('django.db.models.fields.CharField', [], {'default': "u'\\u20ac'", 'max_length': "'5'"}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'file_external_id': ('django.db.models.fields.TextField', [], {'default': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}), + 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}), + 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.TextField', [], {}), + 'parcel_external_id': ('django.db.models.fields.TextField', [], {'default': "'{associated_file__external_id}{operation__code_patriarche}-{town__numero_insee}-{section}{parcel_number}'"}), + 'person_raw_name': ('django.db.models.fields.TextField', [], {'default': "'{name|upper} {surname}'"}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'warehouse': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.ishtaruser': { + 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), + 'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'ishtar_common.itemkey': { + 'Meta': {'object_name': 'ItemKey'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}) + }, + 'ishtar_common.operationtype': { + 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.organization': { + 'Meta': {'object_name': 'Organization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_organization'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.organizationtype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.person': { + 'Meta': {'object_name': 'Person'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'contact_type': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_person'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'pretitle': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.TitleType']", 'null': 'True', 'blank': 'True'}), + 'raw_name': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.persontype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.regexp': { + 'Meta': {'object_name': 'Regexp'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'regexp': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.sourcetype': { + 'Meta': {'object_name': 'SourceType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.state': { + 'Meta': {'ordering': "['number']", 'object_name': 'State'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}) + }, + 'ishtar_common.supporttype': { + 'Meta': {'object_name': 'SupportType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.targetkey': { + 'Meta': {'unique_together': "(('target', 'key', 'associated_user', 'associated_import'),)", 'object_name': 'TargetKey'}, + 'associated_import': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'associated_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_set': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'key': ('django.db.models.fields.TextField', [], {}), + 'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'keys'", 'to': "orm['ishtar_common.ImportTarget']"}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.titletype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'TitleType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.town': { + 'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'}, + 'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}), + 'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}), + 'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_town'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), + 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['ishtar_common'] \ No newline at end of file diff --git a/ishtar_common/migrations/0057_rename_pretitle_old_title.py b/ishtar_common/migrations/0057_rename_pretitle_old_title.py new file mode 100644 index 000000000..8a13b6c88 --- /dev/null +++ b/ishtar_common/migrations/0057_rename_pretitle_old_title.py @@ -0,0 +1,421 @@ +# -*- 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): + db.delete_index('ishtar_common_person', ['pretitle_id']) + db.rename_column('ishtar_common_person', 'pretitle_id', 'title_id') + db.create_index('ishtar_common_person', ['title_id']) + db.rename_column('ishtar_common_person', 'title', 'old_title') + + def backwards(self, orm): + db.delete_index('ishtar_common_person', ['title_id']) + db.rename_column('ishtar_common_person', 'title_id', 'pretitle_id') + db.create_index('ishtar_common_person', ['pretitle_id']) + db.rename_column('ishtar_common_person', 'old_title', 'title') + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.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': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + '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'}), + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + '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'}), + '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'}) + }, + 'ishtar_common.arrondissement': { + 'Meta': {'object_name': 'Arrondissement'}, + 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.author': { + 'Meta': {'object_name': 'Author'}, + 'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) + }, + 'ishtar_common.authortype': { + 'Meta': {'object_name': 'AuthorType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.canton': { + 'Meta': {'object_name': 'Canton'}, + 'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.department': { + 'Meta': {'ordering': "['number']", 'object_name': 'Department'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), + 'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.documenttemplate': { + 'Meta': {'ordering': "['associated_object_name', 'name']", 'object_name': 'DocumentTemplate'}, + 'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) + }, + 'ishtar_common.format': { + 'Meta': {'object_name': 'Format'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.formatertype': { + 'Meta': {'ordering': "('formater_type', 'options')", 'unique_together': "(('formater_type', 'options', 'many_split'),)", 'object_name': 'FormaterType'}, + 'formater_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'many_split': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'options': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.globalvar': { + 'Meta': {'ordering': "['slug']", 'object_name': 'GlobalVar'}, + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.historicalorganization': { + 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOrganization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), + 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.import': { + 'Meta': {'object_name': 'Import'}, + 'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), + 'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), + 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), + 'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) + }, + 'ishtar_common.importercolumn': { + 'Meta': {'ordering': "('importer_type', 'col_number')", 'unique_together': "(('importer_type', 'col_number'),)", 'object_name': 'ImporterColumn'}, + 'col_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'columns'", 'to': "orm['ishtar_common.ImporterType']"}), + 'regexp_pre_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.importerdefault': { + 'Meta': {'object_name': 'ImporterDefault'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'defaults'", 'to': "orm['ishtar_common.ImporterType']"}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerdefaultvalues': { + 'Meta': {'object_name': 'ImporterDefaultValues'}, + 'default_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_values'", 'to': "orm['ishtar_common.ImporterDefault']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerduplicatefield': { + 'Meta': {'object_name': 'ImporterDuplicateField'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'duplicate_fields'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'field_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + 'ishtar_common.importertype': { + 'Meta': {'object_name': 'ImporterType'}, + 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.importtarget': { + 'Meta': {'object_name': 'ImportTarget'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'targets'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'formater_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.FormaterType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'regexp_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.ishtarsiteprofile': { + 'Meta': {'ordering': "['label']", 'object_name': 'IshtarSiteProfile'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'base_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}), + 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'context_record_external_id': ('django.db.models.fields.TextField', [], {'default': "'{parcel__external_id}-{label}'"}), + 'currency': ('django.db.models.fields.CharField', [], {'default': "u'\\u20ac'", 'max_length': "'5'"}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'file_external_id': ('django.db.models.fields.TextField', [], {'default': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}), + 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}), + 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.TextField', [], {}), + 'parcel_external_id': ('django.db.models.fields.TextField', [], {'default': "'{associated_file__external_id}{operation__code_patriarche}-{town__numero_insee}-{section}{parcel_number}'"}), + 'person_raw_name': ('django.db.models.fields.TextField', [], {'default': "'{name|upper} {surname}'"}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'warehouse': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.ishtaruser': { + 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), + 'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'ishtar_common.itemkey': { + 'Meta': {'object_name': 'ItemKey'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}) + }, + 'ishtar_common.operationtype': { + 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.organization': { + 'Meta': {'object_name': 'Organization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_organization'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.organizationtype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.person': { + 'Meta': {'object_name': 'Person'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'contact_type': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_person'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'old_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_name': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.TitleType']", 'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.persontype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.regexp': { + 'Meta': {'object_name': 'Regexp'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'regexp': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.sourcetype': { + 'Meta': {'object_name': 'SourceType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.state': { + 'Meta': {'ordering': "['number']", 'object_name': 'State'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}) + }, + 'ishtar_common.supporttype': { + 'Meta': {'object_name': 'SupportType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.targetkey': { + 'Meta': {'unique_together': "(('target', 'key', 'associated_user', 'associated_import'),)", 'object_name': 'TargetKey'}, + 'associated_import': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'associated_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_set': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'key': ('django.db.models.fields.TextField', [], {}), + 'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'keys'", 'to': "orm['ishtar_common.ImportTarget']"}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.titletype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'TitleType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.town': { + 'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'}, + 'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}), + 'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}), + 'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_town'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), + 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['ishtar_common'] diff --git a/ishtar_common/migrations/0058_generate_title.py b/ishtar_common/migrations/0058_generate_title.py new file mode 100644 index 000000000..ac0d1d602 --- /dev/null +++ b/ishtar_common/migrations/0058_generate_title.py @@ -0,0 +1,435 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models +from django.utils import translation + +TYPE = ( + ('Mr', u'Mr'), + ('Ms', u'Miss'), + ('Mr and Miss', u'Mr and Mrs'), + ('Md', u'Mrs'), + ('Dr', u'Doctor'), +) + + +class Migration(SchemaMigration): + + def forwards(self, orm): + keys = {} + translation.activate('fr') + for key, lbl in TYPE: + lbl = translation.ugettext(lbl) + keys[key] = orm['ishtar_common.TitleType'].objects.create( + label=lbl, txt_idx=key.lower()) + translation.deactivate() + for person in orm['ishtar_common.Person'].objects.all(): + if not person.old_title: + continue + person.title_id = keys[person.old_title].id + person.save() + + def backwards(self, orm): + pass + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.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': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + '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'}), + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + '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'}), + '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'}) + }, + 'ishtar_common.arrondissement': { + 'Meta': {'object_name': 'Arrondissement'}, + 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.author': { + 'Meta': {'object_name': 'Author'}, + 'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) + }, + 'ishtar_common.authortype': { + 'Meta': {'object_name': 'AuthorType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.canton': { + 'Meta': {'object_name': 'Canton'}, + 'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.department': { + 'Meta': {'ordering': "['number']", 'object_name': 'Department'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), + 'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.documenttemplate': { + 'Meta': {'ordering': "['associated_object_name', 'name']", 'object_name': 'DocumentTemplate'}, + 'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) + }, + 'ishtar_common.format': { + 'Meta': {'object_name': 'Format'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.formatertype': { + 'Meta': {'ordering': "('formater_type', 'options')", 'unique_together': "(('formater_type', 'options', 'many_split'),)", 'object_name': 'FormaterType'}, + 'formater_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'many_split': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'options': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.globalvar': { + 'Meta': {'ordering': "['slug']", 'object_name': 'GlobalVar'}, + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.historicalorganization': { + 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOrganization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), + 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.import': { + 'Meta': {'object_name': 'Import'}, + 'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), + 'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), + 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), + 'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) + }, + 'ishtar_common.importercolumn': { + 'Meta': {'ordering': "('importer_type', 'col_number')", 'unique_together': "(('importer_type', 'col_number'),)", 'object_name': 'ImporterColumn'}, + 'col_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'columns'", 'to': "orm['ishtar_common.ImporterType']"}), + 'regexp_pre_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.importerdefault': { + 'Meta': {'object_name': 'ImporterDefault'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'defaults'", 'to': "orm['ishtar_common.ImporterType']"}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerdefaultvalues': { + 'Meta': {'object_name': 'ImporterDefaultValues'}, + 'default_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_values'", 'to': "orm['ishtar_common.ImporterDefault']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerduplicatefield': { + 'Meta': {'object_name': 'ImporterDuplicateField'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'duplicate_fields'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'field_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + 'ishtar_common.importertype': { + 'Meta': {'object_name': 'ImporterType'}, + 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.importtarget': { + 'Meta': {'object_name': 'ImportTarget'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'targets'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'formater_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.FormaterType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'regexp_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.ishtarsiteprofile': { + 'Meta': {'ordering': "['label']", 'object_name': 'IshtarSiteProfile'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'base_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}), + 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'context_record_external_id': ('django.db.models.fields.TextField', [], {'default': "'{parcel__external_id}-{label}'"}), + 'currency': ('django.db.models.fields.CharField', [], {'default': "u'\\u20ac'", 'max_length': "'5'"}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'file_external_id': ('django.db.models.fields.TextField', [], {'default': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}), + 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}), + 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.TextField', [], {}), + 'parcel_external_id': ('django.db.models.fields.TextField', [], {'default': "'{associated_file__external_id}{operation__code_patriarche}-{town__numero_insee}-{section}{parcel_number}'"}), + 'person_raw_name': ('django.db.models.fields.TextField', [], {'default': "'{name|upper} {surname}'"}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'warehouse': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.ishtaruser': { + 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), + 'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'ishtar_common.itemkey': { + 'Meta': {'object_name': 'ItemKey'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}) + }, + 'ishtar_common.operationtype': { + 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.organization': { + 'Meta': {'object_name': 'Organization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_organization'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.organizationtype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.person': { + 'Meta': {'object_name': 'Person'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'contact_type': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_person'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'old_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_name': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.TitleType']", 'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.persontype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.regexp': { + 'Meta': {'object_name': 'Regexp'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'regexp': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.sourcetype': { + 'Meta': {'object_name': 'SourceType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.state': { + 'Meta': {'ordering': "['number']", 'object_name': 'State'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}) + }, + 'ishtar_common.supporttype': { + 'Meta': {'object_name': 'SupportType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.targetkey': { + 'Meta': {'unique_together': "(('target', 'key', 'associated_user', 'associated_import'),)", 'object_name': 'TargetKey'}, + 'associated_import': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'associated_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_set': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'key': ('django.db.models.fields.TextField', [], {}), + 'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'keys'", 'to': "orm['ishtar_common.ImportTarget']"}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.titletype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'TitleType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.town': { + 'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'}, + 'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}), + 'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}), + 'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_town'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), + 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['ishtar_common'] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 7b448284e..47f2017f2 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1848,6 +1848,7 @@ class TargetKey(models.Model): TARGET_MODELS = [ ('OrganizationType', _(u"Organization type")), + ('TitleType', _(u"Title")), ('SourceType', _(u"Source type")), ('AuthorType', _(u"Author type")), ('Format', _(u"Format")), @@ -2222,6 +2223,13 @@ class PersonType(GeneralType): ordering = ('label',) +class TitleType(GeneralType): + class Meta: + verbose_name = _(u"Title type") + verbose_name_plural = _(u"Title types") + ordering = ('label',) + + class Person(Address, Merge, OwnPerms, ValueGetter): _prefix = 'person_' TYPE = ( @@ -2235,8 +2243,10 @@ class Person(Address, Merge, OwnPerms, ValueGetter): 'attached_to') SHOW_URL = 'show-person' MODIFY_URL = 'person_modify' - title = models.CharField(_(u"Title"), max_length=100, choices=TYPE, - blank=True, null=True) + old_title = models.CharField(_(u"Title"), max_length=100, choices=TYPE, + blank=True, null=True) + title = models.ForeignKey(TitleType, verbose_name=_(u"Title"), + blank=True, null=True) surname = models.CharField(_(u"Surname"), max_length=50, blank=True, null=True) name = models.CharField(_(u"Name"), max_length=200, blank=True, @@ -2283,11 +2293,6 @@ class Person(Address, Merge, OwnPerms, ValueGetter): def get_values(self, prefix=''): values = super(Person, self).get_values(prefix=prefix) - title = '' - TYPES = dict(self.TYPE) - if self.title in TYPES: - title = dict(self.TYPE)[self.title] - values[prefix + 'title'] = title if not self.attached_to: values.update( Person.get_empty_values(prefix=prefix + 'attached_to_')) @@ -2354,7 +2359,7 @@ class Person(Address, Merge, OwnPerms, ValueGetter): def full_label(self): values = [] if self.title: - values = [unicode(_(self.title))] + values = [self.title.label] values += [unicode(getattr(self, attr)) for attr in ('surname', 'name') if getattr(self, attr)] if not values and self.raw_name: @@ -2425,7 +2430,7 @@ class IshtarUser(User): else: person_type, created = PersonType.objects.get_or_create( txt_idx='public_access') - person = Person.objects.create(title='Mr', surname=surname, + person = Person.objects.create(surname=surname, name=name, email=email, history_modifier=user) person.person_types.add(person_type) diff --git a/ishtar_common/ooo_translation.py b/ishtar_common/ooo_translation.py index a93a916ae..5a3d4cb84 100644 --- a/ishtar_common/ooo_translation.py +++ b/ishtar_common/ooo_translation.py @@ -1,6 +1,6 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -# Copyright (C) 2013-2015 Étienne Loks +# Copyright (C) 2013-2016 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -19,9 +19,10 @@ from django.conf import settings from django.utils import translation -from django.utils.translation import pgettext_lazy +# from django.utils.translation import pgettext_lazy + +# [('study', pgettext_lazy('ooo key', u'study')),] -# [('study', pgettext_lazy('ooo key', u'study')),] TRANSLATION_STRINGS = [] ooo_translation = {} diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 3c46ee6b2..565fdce2b 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -176,12 +176,14 @@ class MergeTest(TestCase): self.author_1_pk = models.Author.objects.create( person=self.person_1, author_type=self.author_types[0]).pk + self.title = models.TitleType.objects.create(label='Test') + self.company_2 = models.Organization.objects.create( history_modifier=self.user, name='Goscinny Corp.', organization_type=self.organisation_types[1]) self.person_2 = models.Person.objects.create( name='Bill', history_modifier=self.user, surname='Peyo', - title='Mr', attached_to=self.company_2) + title=self.title, attached_to=self.company_2) self.person_2.person_types.add(self.person_types[1]) self.author_2_pk = models.Author.objects.create( person=self.person_2, author_type=self.author_types[1]).pk @@ -194,7 +196,7 @@ class MergeTest(TestCase): # preserve existing fields self.assertEqual(self.person_1.name, 'Boule') # fill missing fields - self.assertEqual(self.person_1.title, 'Mr') + self.assertEqual(self.person_1.title, self.title) # string field with only spaces is an empty field self.assertEqual(self.person_1.surname, 'Peyo') # preserve existing foreign key diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 1ac28d640..a42e2d8b5 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -113,10 +113,10 @@ def _check_right(step, condition=True): class Wizard(NamedUrlWizardView): model = None label = '' + translated_keys = [] modification = None # True when the wizard modify an item storage_name = \ 'django.contrib.formtools.wizard.storage.session.SessionStorage' - translated_keys = ['title'] wizard_done_template = 'ishtar/wizard/wizard_done.html' wizard_done_window = '' wizard_confirm = 'ishtar/wizard/confirm_wizard.html' -- cgit v1.2.3 From 86a6641073739918e83d6b99441cf61bd86bdd4a Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 1 Sep 2016 12:43:18 +0200 Subject: Organization, Person sheets: add link to files --- ishtar_common/templates/ishtar/sheet_organization.html | 14 ++++++++++++-- ishtar_common/templates/ishtar/sheet_person.html | 13 +++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/ishtar_common/templates/ishtar/sheet_organization.html b/ishtar_common/templates/ishtar/sheet_organization.html index 2ece97a8b..8a47c35f5 100644 --- a/ishtar_common/templates/ishtar/sheet_organization.html +++ b/ishtar_common/templates/ishtar/sheet_organization.html @@ -1,5 +1,5 @@ {% extends "ishtar/sheet.html" %} -{% load i18n window_header %} +{% load i18n window_header window_tables %} {% block head_title %}{% trans "Organization" %}{% endblock %} @@ -15,7 +15,7 @@ {% if item.mobile_phone %}

{{item.mobile_phone}}

{% endif %} - +
@@ -35,4 +35,14 @@ {% endfor %}
{%trans "Person in the organization"%}
{% trans "Name" %}
+{% trans "General contractor organization of archaelogical files" as af %} +{% if item.general_contractor_files.count %} +{% dynamic_table_document af 'files' 'corporation_general_contractor' item.pk '' output %} +{% endif %} + +{% trans "Town planning service of archaelogical files" as af %} +{% if item.planning_service_files.count %} +{% dynamic_table_document af 'files' 'planning_service' item.pk '' output %} +{% endif %} + {% endblock %} diff --git a/ishtar_common/templates/ishtar/sheet_person.html b/ishtar_common/templates/ishtar/sheet_person.html index f5c42c11a..8fc2d9211 100644 --- a/ishtar_common/templates/ishtar/sheet_person.html +++ b/ishtar_common/templates/ishtar/sheet_person.html @@ -76,12 +76,21 @@ {% dynamic_table_document ao 'operations' 'in_charge' item.pk '' output %} {% endif %} - -{% trans "Associated archaelogical files" as af %} +{% trans "In charge of archaelogical files" as af %} {% if item.file_responsability.count %} {% dynamic_table_document af 'files' 'in_charge' item.pk '' output %} {% endif %} +{% trans "General contractor of archaelogical files" as af %} +{% if item.general_contractor_files.count %} +{% dynamic_table_document af 'files' 'general_contractor' item.pk '' output %} +{% endif %} + +{% trans "Responsible for town planning service of archaelogical files" as af %} +{% if item.responsible_town_planning_service_files.count %} +{% dynamic_table_document af 'files' 'responsible_town_planning_service' item.pk '' output %} +{% endif %} + {% if item.operation_docs_q.count %} {% trans "Documents associated to operations" as operation_docs %} {% dynamic_table_document operation_docs 'operation_docs' 'person' item.pk '' output %} -- cgit v1.2.3 From c170779b752fbcf94d962be7a33a9f200d4f8ca9 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 1 Sep 2016 15:09:13 +0200 Subject: Account modify: fix bad initialization of the form --- ishtar_common/forms_common.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index cb75e4026..2859ed4e5 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -459,8 +459,10 @@ class AccountForm(forms.Form): try: person = models.Person.objects.get(pk=kwargs['initial']['pk']) account = models.IshtarUser.objects.get(person=person) - kwargs['initial'].update({'username': account.username, - 'email': account.email}) + if not kwargs['initial'].get('username'): + kwargs['initial']['username'] = account.username + if not kwargs['initial'].get('email'): + kwargs['initial']['email'] = account.email except ObjectDoesNotExist: pass return super(AccountForm, self).__init__(*args, **kwargs) -- cgit v1.2.3 From 952bf485126d9f0e3c2357288a31c10d99c9966f Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 1 Sep 2016 16:24:09 +0200 Subject: Archive item to exclude them from merge detection mechanism --- ishtar_common/admin.py | 6 +- .../0059_rename_exc_from_merge_to_archived.py | 419 +++++++++++++++++ .../migrations/0060_auto__add_historicalperson.py | 498 +++++++++++++++++++++ ishtar_common/models.py | 19 +- ishtar_common/tests.py | 12 + 5 files changed, 945 insertions(+), 9 deletions(-) create mode 100644 ishtar_common/migrations/0059_rename_exc_from_merge_to_archived.py create mode 100644 ishtar_common/migrations/0060_auto__add_historicalperson.py diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 675d85ec5..fb0ab1170 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -112,8 +112,7 @@ class OrganizationAdmin(HistorizedObjectAdmin): list_display = ('pk', 'name', 'organization_type') list_filter = ("organization_type",) search_fields = ('name',) - exclude = ('merge_key', 'merge_exclusion', 'merge_candidate', - 'exclude_from_merge') + exclude = ('merge_key', 'merge_exclusion', 'merge_candidate', ) model = models.Organization admin.site.register(models.Organization, OrganizationAdmin) @@ -123,8 +122,7 @@ class PersonAdmin(HistorizedObjectAdmin): list_display = ('pk', 'name', 'surname', 'raw_name', 'email') list_filter = ("person_types",) search_fields = ('name', 'surname', 'email', 'raw_name') - exclude = ('merge_key', 'merge_exclusion', 'merge_candidate', - 'exclude_from_merge') + exclude = ('merge_key', 'merge_exclusion', 'merge_candidate', ) model = models.Person admin.site.register(models.Person, PersonAdmin) diff --git a/ishtar_common/migrations/0059_rename_exc_from_merge_to_archived.py b/ishtar_common/migrations/0059_rename_exc_from_merge_to_archived.py new file mode 100644 index 000000000..c329b76e2 --- /dev/null +++ b/ishtar_common/migrations/0059_rename_exc_from_merge_to_archived.py @@ -0,0 +1,419 @@ +# -*- 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): + db.rename_column('ishtar_common_person', 'exclude_from_merge', 'archived') + db.rename_column('ishtar_common_organization', 'exclude_from_merge', 'archived') + db.rename_column('ishtar_common_historicalorganization', 'exclude_from_merge', 'archived') + + def backwards(self, orm): + db.rename_column('ishtar_common_person', 'archived', 'exclude_from_merge') + db.rename_column('ishtar_common_organization', 'archived', 'exclude_from_merge') + db.rename_column('ishtar_common_historicalorganization', 'archived', 'exclude_from_merge') + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.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': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + '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'}), + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + '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'}), + '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'}) + }, + 'ishtar_common.arrondissement': { + 'Meta': {'object_name': 'Arrondissement'}, + 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.author': { + 'Meta': {'object_name': 'Author'}, + 'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) + }, + 'ishtar_common.authortype': { + 'Meta': {'object_name': 'AuthorType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.canton': { + 'Meta': {'object_name': 'Canton'}, + 'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.department': { + 'Meta': {'ordering': "['number']", 'object_name': 'Department'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), + 'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.documenttemplate': { + 'Meta': {'ordering': "['associated_object_name', 'name']", 'object_name': 'DocumentTemplate'}, + 'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) + }, + 'ishtar_common.format': { + 'Meta': {'object_name': 'Format'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.formatertype': { + 'Meta': {'ordering': "('formater_type', 'options')", 'unique_together': "(('formater_type', 'options', 'many_split'),)", 'object_name': 'FormaterType'}, + 'formater_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'many_split': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'options': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.globalvar': { + 'Meta': {'ordering': "['slug']", 'object_name': 'GlobalVar'}, + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.historicalorganization': { + 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOrganization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), + 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.import': { + 'Meta': {'object_name': 'Import'}, + 'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), + 'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), + 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), + 'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) + }, + 'ishtar_common.importercolumn': { + 'Meta': {'ordering': "('importer_type', 'col_number')", 'unique_together': "(('importer_type', 'col_number'),)", 'object_name': 'ImporterColumn'}, + 'col_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'columns'", 'to': "orm['ishtar_common.ImporterType']"}), + 'regexp_pre_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.importerdefault': { + 'Meta': {'object_name': 'ImporterDefault'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'defaults'", 'to': "orm['ishtar_common.ImporterType']"}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerdefaultvalues': { + 'Meta': {'object_name': 'ImporterDefaultValues'}, + 'default_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_values'", 'to': "orm['ishtar_common.ImporterDefault']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerduplicatefield': { + 'Meta': {'object_name': 'ImporterDuplicateField'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'duplicate_fields'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'field_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + 'ishtar_common.importertype': { + 'Meta': {'object_name': 'ImporterType'}, + 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.importtarget': { + 'Meta': {'object_name': 'ImportTarget'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'targets'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'formater_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.FormaterType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'regexp_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.ishtarsiteprofile': { + 'Meta': {'ordering': "['label']", 'object_name': 'IshtarSiteProfile'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'base_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}), + 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'context_record_external_id': ('django.db.models.fields.TextField', [], {'default': "'{parcel__external_id}-{label}'"}), + 'currency': ('django.db.models.fields.CharField', [], {'default': "u'\\u20ac'", 'max_length': "'5'"}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'file_external_id': ('django.db.models.fields.TextField', [], {'default': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}), + 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}), + 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.TextField', [], {}), + 'parcel_external_id': ('django.db.models.fields.TextField', [], {'default': "'{associated_file__external_id}{operation__code_patriarche}-{town__numero_insee}-{section}{parcel_number}'"}), + 'person_raw_name': ('django.db.models.fields.TextField', [], {'default': "'{name|upper} {surname}'"}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'warehouse': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.ishtaruser': { + 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), + 'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'ishtar_common.itemkey': { + 'Meta': {'object_name': 'ItemKey'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}) + }, + 'ishtar_common.operationtype': { + 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.organization': { + 'Meta': {'object_name': 'Organization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_organization'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.organizationtype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.person': { + 'Meta': {'object_name': 'Person'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'contact_type': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_person'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'old_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_name': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.TitleType']", 'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.persontype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.regexp': { + 'Meta': {'object_name': 'Regexp'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'regexp': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.sourcetype': { + 'Meta': {'object_name': 'SourceType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.state': { + 'Meta': {'ordering': "['number']", 'object_name': 'State'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}) + }, + 'ishtar_common.supporttype': { + 'Meta': {'object_name': 'SupportType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.targetkey': { + 'Meta': {'unique_together': "(('target', 'key', 'associated_user', 'associated_import'),)", 'object_name': 'TargetKey'}, + 'associated_import': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'associated_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_set': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'key': ('django.db.models.fields.TextField', [], {}), + 'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'keys'", 'to': "orm['ishtar_common.ImportTarget']"}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.titletype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'TitleType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.town': { + 'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'}, + 'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}), + 'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}), + 'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_town'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), + 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['ishtar_common'] diff --git a/ishtar_common/migrations/0060_auto__add_historicalperson.py b/ishtar_common/migrations/0060_auto__add_historicalperson.py new file mode 100644 index 000000000..a1db55c37 --- /dev/null +++ b/ishtar_common/migrations/0060_auto__add_historicalperson.py @@ -0,0 +1,498 @@ +# -*- 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 'HistoricalPerson' + db.create_table('ishtar_common_historicalperson', ( + ('id', self.gf('django.db.models.fields.IntegerField')(db_index=True, blank=True)), + ('history_modifier_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)), + ('history_creator_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)), + ('address', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), + ('address_complement', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), + ('postal_code', self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True)), + ('town', self.gf('django.db.models.fields.CharField')(max_length=70, null=True, blank=True)), + ('country', self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True)), + ('alt_address', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), + ('alt_address_complement', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), + ('alt_postal_code', self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True)), + ('alt_town', self.gf('django.db.models.fields.CharField')(max_length=70, null=True, blank=True)), + ('alt_country', self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True)), + ('phone', self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True)), + ('phone_desc', self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True)), + ('phone2', self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True)), + ('phone_desc2', self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True)), + ('phone3', self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True)), + ('phone_desc3', self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True)), + ('raw_phone', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), + ('mobile_phone', self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True)), + ('email', self.gf('django.db.models.fields.EmailField')(max_length=300, null=True, blank=True)), + ('alt_address_is_prefered', self.gf('django.db.models.fields.BooleanField')(default=False)), + ('merge_key', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), + ('archived', self.gf('django.db.models.fields.NullBooleanField')(default=False, null=True, blank=True)), + ('old_title', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)), + ('title_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)), + ('surname', self.gf('django.db.models.fields.CharField')(max_length=50, null=True, blank=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)), + ('raw_name', self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True)), + ('contact_type', self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True)), + ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), + ('attached_to_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)), + ('history_id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('history_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)), + ('history_user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True)), + ('history_type', self.gf('django.db.models.fields.CharField')(max_length=1)), + )) + db.send_create_signal('ishtar_common', ['HistoricalPerson']) + + + def backwards(self, orm): + # Deleting model 'HistoricalPerson' + db.delete_table('ishtar_common_historicalperson') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.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': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + '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'}), + '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': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + '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'}), + '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'}) + }, + 'ishtar_common.arrondissement': { + 'Meta': {'object_name': 'Arrondissement'}, + 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.author': { + 'Meta': {'object_name': 'Author'}, + 'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) + }, + 'ishtar_common.authortype': { + 'Meta': {'object_name': 'AuthorType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.canton': { + 'Meta': {'object_name': 'Canton'}, + 'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.department': { + 'Meta': {'ordering': "['number']", 'object_name': 'Department'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), + 'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.documenttemplate': { + 'Meta': {'ordering': "['associated_object_name', 'name']", 'object_name': 'DocumentTemplate'}, + 'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) + }, + 'ishtar_common.format': { + 'Meta': {'object_name': 'Format'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.formatertype': { + 'Meta': {'ordering': "('formater_type', 'options')", 'unique_together': "(('formater_type', 'options', 'many_split'),)", 'object_name': 'FormaterType'}, + 'formater_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'many_split': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'options': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.globalvar': { + 'Meta': {'ordering': "['slug']", 'object_name': 'GlobalVar'}, + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.historicalorganization': { + 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOrganization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), + 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.historicalperson': { + 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalPerson'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'attached_to_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'contact_type': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), + 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'old_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_name': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'title_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.import': { + 'Meta': {'object_name': 'Import'}, + 'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), + 'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), + 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), + 'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) + }, + 'ishtar_common.importercolumn': { + 'Meta': {'ordering': "('importer_type', 'col_number')", 'unique_together': "(('importer_type', 'col_number'),)", 'object_name': 'ImporterColumn'}, + 'col_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'columns'", 'to': "orm['ishtar_common.ImporterType']"}), + 'regexp_pre_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.importerdefault': { + 'Meta': {'object_name': 'ImporterDefault'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'defaults'", 'to': "orm['ishtar_common.ImporterType']"}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerdefaultvalues': { + 'Meta': {'object_name': 'ImporterDefaultValues'}, + 'default_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_values'", 'to': "orm['ishtar_common.ImporterDefault']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerduplicatefield': { + 'Meta': {'object_name': 'ImporterDuplicateField'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'duplicate_fields'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'field_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + 'ishtar_common.importertype': { + 'Meta': {'object_name': 'ImporterType'}, + 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.importtarget': { + 'Meta': {'object_name': 'ImportTarget'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'targets'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'formater_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.FormaterType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'regexp_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.ishtarsiteprofile': { + 'Meta': {'ordering': "['label']", 'object_name': 'IshtarSiteProfile'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'base_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}), + 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'context_record_external_id': ('django.db.models.fields.TextField', [], {'default': "'{parcel__external_id}-{label}'"}), + 'currency': ('django.db.models.fields.CharField', [], {'default': "u'\\u20ac'", 'max_length': "'5'"}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'file_external_id': ('django.db.models.fields.TextField', [], {'default': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}), + 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}), + 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.TextField', [], {}), + 'parcel_external_id': ('django.db.models.fields.TextField', [], {'default': "'{associated_file__external_id}{operation__code_patriarche}-{town__numero_insee}-{section}{parcel_number}'"}), + 'person_raw_name': ('django.db.models.fields.TextField', [], {'default': "'{name|upper} {surname}'"}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'warehouse': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.ishtaruser': { + 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), + 'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'ishtar_common.itemkey': { + 'Meta': {'object_name': 'ItemKey'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}) + }, + 'ishtar_common.operationtype': { + 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.organization': { + 'Meta': {'object_name': 'Organization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_organization'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.organizationtype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.person': { + 'Meta': {'object_name': 'Person'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'contact_type': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_person'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'old_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_name': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.TitleType']", 'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.persontype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.regexp': { + 'Meta': {'object_name': 'Regexp'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'regexp': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.sourcetype': { + 'Meta': {'object_name': 'SourceType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.state': { + 'Meta': {'ordering': "['number']", 'object_name': 'State'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}) + }, + 'ishtar_common.supporttype': { + 'Meta': {'object_name': 'SupportType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.targetkey': { + 'Meta': {'unique_together': "(('target', 'key', 'associated_user', 'associated_import'),)", 'object_name': 'TargetKey'}, + 'associated_import': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'associated_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_set': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'key': ('django.db.models.fields.TextField', [], {}), + 'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'keys'", 'to': "orm['ishtar_common.ImportTarget']"}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.titletype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'TitleType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.town': { + 'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'}, + 'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}), + 'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}), + 'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_town'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), + 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['ishtar_common'] \ No newline at end of file diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 47f2017f2..e2142ef0c 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1384,8 +1384,8 @@ class Merge(models.Model): blank=True, null=True) merge_exclusion = models.ManyToManyField("self", blank=True, null=True) - exclude_from_merge = models.NullBooleanField(default=False, - blank=True, null=True) + archived = models.NullBooleanField(default=False, + blank=True, null=True) # 1 for one word similarity, 2 for two word similarity, etc. MERGE_CLEMENCY = None EMPTY_MERGE_KEY = '--' @@ -1394,7 +1394,7 @@ class Merge(models.Model): abstract = True def generate_merge_key(self): - if self.exclude_from_merge: + if self.archived: return self.merge_key = slugify(self.name if self.name else '') if not self.merge_key: @@ -1402,7 +1402,7 @@ class Merge(models.Model): self.merge_key = self.merge_key def generate_merge_candidate(self): - if self.exclude_from_merge: + if self.archived: return if not self.merge_key: self.generate_merge_key() @@ -1413,7 +1413,7 @@ class Merge(models.Model): .exclude(pk=self.pk)\ .exclude(merge_exclusion=self)\ .exclude(merge_candidate=self)\ - .exclude(exclude_from_merge=True) + .exclude(archived=True) if not self.MERGE_CLEMENCY: q = q.filter(merge_key=self.merge_key) else: @@ -1432,6 +1432,14 @@ class Merge(models.Model): self.generate_merge_candidate() return item + def archive(self): + self.archived = True + self.save() + for m in self.merge_candidate.all(): + m.delete() + for m in self.merge_exclusion.all(): + m.delete() + def merge(self, item): merge_model_objects(self, item) self.generate_merge_candidate() @@ -2260,6 +2268,7 @@ class Person(Address, Merge, OwnPerms, ValueGetter): attached_to = models.ForeignKey( 'Organization', related_name='members', on_delete=models.SET_NULL, verbose_name=_(u"Is attached to"), blank=True, null=True) + history = HistoricalRecords() class Meta: verbose_name = _(u"Person") diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 565fdce2b..8c918b5a9 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -218,6 +218,18 @@ class MergeTest(TestCase): self.assertTrue(self.person_types[1] in self.person_3.person_types.all()) + def testPersonMergeCandidate(self): + init_mc = self.person_1.merge_candidate.count() + person = models.Person.objects.create( + name=self.person_1.name, + surname=self.person_1.surname, history_modifier=self.user, + attached_to=self.person_1.attached_to) + self.assertEqual(self.person_1.merge_candidate.count(), + init_mc + 1) + person.archive() + self.assertEqual(self.person_1.merge_candidate.count(), + init_mc) + class ImportTest(TestCase): def testDeleteRelated(self): -- cgit v1.2.3 From 80e315e2e69ecfe5e2a976d7a28ef46ec36aa885 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 1 Sep 2016 18:49:14 +0200 Subject: Non-available types display on old item modification (refs #3179) --- archaeological_context_records/forms.py | 29 +++++++++++++++--------- archaeological_files/forms.py | 30 ++++++++++++++++--------- archaeological_files_pdl/forms.py | 18 ++++++++------- archaeological_finds/forms.py | 40 +++++++++++++++++++++------------ archaeological_operations/forms.py | 35 +++++++++++++++++++---------- archaeological_warehouse/forms.py | 12 +++++----- ishtar_common/forms.py | 31 +++++++++++++++++++++++++ ishtar_common/forms_common.py | 27 +++++++++++++--------- ishtar_common/models.py | 23 ++++++++++++++++++- 9 files changed, 174 insertions(+), 71 deletions(-) diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py index f3bbb1b65..4f10014de 100644 --- a/archaeological_context_records/forms.py +++ b/archaeological_context_records/forms.py @@ -36,7 +36,7 @@ import models from ishtar_common import widgets from archaeological_operations.widgets import OAWidget from ishtar_common.forms import FinalForm, FormSet, \ - reverse_lazy, get_form_selection, TableSelect + reverse_lazy, get_form_selection, TableSelect, ManageOldType from ishtar_common.forms_common import get_town_field, SourceSelect from archaeological_operations.forms import OperationSelect, ParcelField,\ RecordRelationsForm as OpeRecordRelationsForm @@ -114,7 +114,7 @@ class RecordFormSelection(forms.Form): return cleaned_data -class RecordFormGeneral(forms.Form): +class RecordFormGeneral(ManageOldType, forms.Form): form_label = _("General") associated_models = {'parcel': Parcel, 'unit': models.Unit} pk = forms.IntegerField(required=False, widget=forms.HiddenInput) @@ -162,7 +162,8 @@ class RecordFormGeneral(forms.Form): (" - ".join([k for k in key if k]), [(parcel.pk, parcel.short_label) for parcel in gparcels]) ) - self.fields['unit'].choices = models.Unit.get_types() + self.fields['unit'].choices = models.Unit.get_types( + initial=self.init_data.get('unit')) self.fields['unit'].help_text = models.Unit.get_help() def clean(self): @@ -180,7 +181,7 @@ class RecordFormGeneral(forms.Form): return cleaned_data -class DatingForm(forms.Form): +class DatingForm(ManageOldType, forms.Form): form_label = _("Dating") base_model = 'dating' associated_models = {'dating_type': models.DatingType, @@ -195,11 +196,14 @@ class DatingForm(forms.Form): def __init__(self, *args, **kwargs): super(DatingForm, self).__init__(*args, **kwargs) - self.fields['dating_type'].choices = models.DatingType.get_types() + self.fields['dating_type'].choices = models.DatingType.get_types( + initial=self.init_data.get('dating_type')) self.fields['dating_type'].help_text = models.DatingType.get_help() - self.fields['quality'].choices = models.DatingQuality.get_types() + self.fields['quality'].choices = models.DatingQuality.get_types( + initial=self.init_data.get('quality')) self.fields['quality'].help_text = models.DatingQuality.get_help() - self.fields['period'].choices = Period.get_types() + self.fields['period'].choices = Period.get_types( + initial=self.init_data.get('period')) self.fields['period'].help_text = Period.get_help() @@ -229,7 +233,8 @@ class RecordRelationsForm(OpeRecordRelationsForm): kwargs.pop('files') super(RecordRelationsForm, self).__init__(*args, **kwargs) self.fields['relation_type'].choices = \ - models.RelationType.get_types() + models.RelationType.get_types( + initial=self.init_data.get('relation_type')) if crs: self.fields['right_record'].choices = [('', '-' * 2)] + crs @@ -237,7 +242,7 @@ RecordRelationsFormSet = formset_factory(RecordRelationsForm, can_delete=True) RecordRelationsFormSet.form_label = _(u"Relations") -class RecordFormInterpretation(forms.Form): +class RecordFormInterpretation(ManageOldType, forms.Form): form_label = _("Interpretation") associated_models = {'activity': models.ActivityType, 'identification': models.IdentificationType} @@ -263,10 +268,12 @@ class RecordFormInterpretation(forms.Form): def __init__(self, *args, **kwargs): super(RecordFormInterpretation, self).__init__(*args, **kwargs) - self.fields['activity'].choices = models.ActivityType.get_types() + self.fields['activity'].choices = models.ActivityType.get_types( + initial=self.init_data.get('activity')) self.fields['activity'].help_text = models.ActivityType.get_help() self.fields['identification'].choices = \ - models.IdentificationType.get_types() + models.IdentificationType.get_types( + initial=self.init_data.get('identification')) self.fields['identification'].help_text = \ models.IdentificationType.get_help() diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index 369ffdaf0..26b839940 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -33,7 +33,8 @@ from ishtar_common.models import Person, PersonType, Organization, \ from archaeological_operations.models import ActType, AdministrativeAct, \ OperationType import models -from ishtar_common.forms import FinalForm, get_now, reverse_lazy, TableSelect +from ishtar_common.forms import FinalForm, get_now, reverse_lazy, TableSelect, \ + ManageOldType from ishtar_common.forms_common import get_town_field from archaeological_operations.forms import AdministrativeActOpeForm, \ AdministrativeActOpeFormSelection, \ @@ -103,7 +104,8 @@ class FileSelect(TableSelect): def __init__(self, *args, **kwargs): super(FileSelect, self).__init__(*args, **kwargs) - self.fields['saisine_type'].choices = models.SaisineType.get_types() + self.fields['saisine_type'].choices = \ + models.SaisineType.get_types() self.fields['saisine_type'].help_text = models.SaisineType.get_help() self.fields['permit_type'].choices = models.PermitType.get_types() self.fields['permit_type'].help_text = models.PermitType.get_help() @@ -195,7 +197,7 @@ class DashboardForm(forms.Form): return fltr -class FileFormGeneral(forms.Form): +class FileFormGeneral(ManageOldType, forms.Form): form_label = _("General") associated_models = {'in_charge': Person, 'related_file': models.File, @@ -237,7 +239,8 @@ class FileFormGeneral(forms.Form): def __init__(self, *args, **kwargs): super(FileFormGeneral, self).__init__(*args, **kwargs) - self.fields['file_type'].choices = models.FileType.get_types() + self.fields['file_type'].choices = models.FileType.get_types( + initial=self.init_data.get('file_type')) self.fields['file_type'].help_text = models.FileType.get_help() q = models.File.objects\ .filter(internal_reference__isnull=False)\ @@ -276,7 +279,7 @@ RESPONSIBLE_PLANNING_SERVICE_ORGA, created = \ OrganizationType.objects.get_or_create(txt_idx='planning_service') -class FileFormPreventive(forms.Form): +class FileFormPreventive(ManageOldType, forms.Form): form_label = _(u"Preventive informations") associated_models = {'general_contractor': Person, 'saisine_type': models.SaisineType, @@ -322,14 +325,18 @@ class FileFormPreventive(forms.Form): def __init__(self, *args, **kwargs): super(FileFormPreventive, self).__init__(*args, **kwargs) - self.fields['saisine_type'].choices = models.SaisineType.get_types() - self.fields['saisine_type'].help_text = models.SaisineType.get_help() + if 'saisine_type' in self.fields: + self.fields['saisine_type'].choices = \ + models.SaisineType.get_types( + initial=self.init_data.get('saisine_type')) + self.fields['saisine_type'].help_text = \ + models.SaisineType.get_help() self.fields['permit_type'].choices = models.PermitType.get_types( - default='NP') + initial=self.init_data.get('permit_type'), default='NP') self.fields['permit_type'].help_text = models.PermitType.get_help() -class FileFormResearch(forms.Form): +class FileFormResearch(ManageOldType, forms.Form): form_label = _("Research archaeology") base_model = 'department' associated_models = {'scientist': Person, @@ -376,7 +383,9 @@ class FileFormResearch(forms.Form): def __init__(self, *args, **kwargs): super(FileFormResearch, self).__init__(*args, **kwargs) self.fields['requested_operation_type'].choices = \ - OperationType.get_types(dct={"preventive": False}) + OperationType.get_types( + dct={"preventive": False}, + initial=self.init_data.get('requested_operation_type')) self.fields['requested_operation_type'].help_text = \ OperationType.get_help() @@ -535,6 +544,7 @@ class AdministrativeActFileForm(AdministrativeActOpeForm): def __init__(self, *args, **kwargs): super(AdministrativeActFileForm, self).__init__(*args, **kwargs) self.fields['act_type'].choices = ActType.get_types( + initial=self.init_data.get('act_type'), dct={'intented_to': 'F'}) self.fields['act_type'].help_text = ActType.get_help( dct={'intented_to': 'F'}) diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py index a182d0f0e..99dc97137 100644 --- a/archaeological_files_pdl/forms.py +++ b/archaeological_files_pdl/forms.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2014-2015 Étienne Loks +# Copyright (C) 2014-2016 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -27,7 +27,7 @@ from django.utils.translation import ugettext_lazy as _ from ishtar_common.models import Person, Town, Department, valid_id from archaeological_files import models -from ishtar_common.forms import get_now, reverse_lazy +from ishtar_common.forms import get_now, reverse_lazy, ManageOldType from archaeological_files.forms import GENERAL_CONTRACTOR, \ GENERAL_CONTRACTOR_ORGA, RESPONSIBLE_PLANNING_SERVICE, \ RESPONSIBLE_PLANNING_SERVICE_ORGA @@ -37,7 +37,7 @@ from archaeological_operations.forms import SRA_AGENT from ishtar_common import widgets -class FileFormGeneral(forms.Form): +class FileFormGeneral(ManageOldType, forms.Form): form_label = _("General") associated_models = {'file_type': models.FileType} file_type = forms.ChoiceField(label=_("File type"), choices=[]) @@ -52,7 +52,8 @@ class FileFormGeneral(forms.Form): def __init__(self, *args, **kwargs): super(FileFormGeneral, self).__init__(*args, **kwargs) - self.fields['file_type'].choices = models.FileType.get_types() + self.fields['file_type'].choices = models.FileType.get_types( + initial=self.init_data.get('file_type')) self.fields['file_type'].help_text = models.FileType.get_help() def clean_reception_date(self): @@ -63,7 +64,7 @@ class FileFormGeneral(forms.Form): return value -class FileFormPreventiveType(forms.Form): +class FileFormPreventiveType(ManageOldType, forms.Form): form_label = u"Saisine" associated_models = {'saisine_type': models.SaisineType, 'permit_type': models.PermitType} @@ -74,10 +75,11 @@ class FileFormPreventiveType(forms.Form): def __init__(self, *args, **kwargs): super(FileFormPreventiveType, self).__init__(*args, **kwargs) - self.fields['saisine_type'].choices = models.SaisineType.get_types() + self.fields['saisine_type'].choices = models.SaisineType.get_types( + initial=self.init_data.get('saisine_type')) self.fields['saisine_type'].help_text = models.SaisineType.get_help() - self.fields['permit_type'].choices = \ - models.PermitType.get_types(default='NP') + self.fields['permit_type'].choices = models.PermitType.get_types( + default='NP', initial=self.init_data.get('permit_type')) self.fields['permit_type'].help_text = models.PermitType.get_help() diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 1ca359cce..6c6f41457 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -41,7 +41,8 @@ import models from ishtar_common import widgets from archaeological_operations.widgets import OAWidget from ishtar_common.forms import FormSet, FloatField, \ - get_form_selection, reverse_lazy, TableSelect, get_now, FinalForm + get_form_selection, reverse_lazy, TableSelect, get_now, FinalForm, \ + ManageOldType from ishtar_common.forms_common import get_town_field, SourceSelect @@ -77,7 +78,7 @@ class RecordFormSelection(forms.Form): cr.operation.pk) -class FindForm(forms.Form): +class FindForm(ManageOldType, forms.Form): file_upload = True form_label = _("Find") base_models = ['get_first_base_find', 'object_type', 'material_type', @@ -147,22 +148,28 @@ class FindForm(forms.Form): def __init__(self, *args, **kwargs): super(FindForm, self).__init__(*args, **kwargs) self.fields['checked'].choices = models.CHECK_CHOICES - self.fields['material_type'].choices = models.MaterialType.get_types() self.fields['material_type'].help_text = models.MaterialType.get_help() self.fields['conservatory_state'].choices = \ - models.ConservatoryState.get_types() + models.ConservatoryState.get_types( + initial=self.init_data.get('conservatory_state')) self.fields['conservatory_state'].help_text = \ models.ConservatoryState.get_help() self.fields['preservation_to_consider'].choices = \ - models.PreservationType.get_types(empty_first=False) + models.PreservationType.get_types( + empty_first=False, + initial=self.init_data.get('preservation_to_consider')) self.fields['preservation_to_consider'].help_text = \ models.PreservationType.get_help() self.fields['integritie'].choices = \ - models.IntegrityType.get_types(empty_first=False) + models.IntegrityType.get_types( + empty_first=False, + initial=self.init_data.get('integritie')) self.fields['integritie'].help_text = \ models.IntegrityType.get_help() self.fields['remarkabilitie'].choices = \ - models.RemarkabilityType.get_types(empty_first=False) + models.RemarkabilityType.get_types( + empty_first=False, + initial=self.init_data.get('remarkabilitie')) self.fields['remarkabilitie'].help_text = \ models.RemarkabilityType.get_help() self.fields['estimated_value'].label = u"{} ({})".format( @@ -170,7 +177,7 @@ class FindForm(forms.Form): get_current_profile().currency) -class DateForm(forms.Form): +class DateForm(ManageOldType, forms.Form): form_label = _("Dating") base_model = 'dating' associated_models = {'dating_type': DatingType, @@ -189,11 +196,14 @@ class DateForm(forms.Form): def __init__(self, *args, **kwargs): super(DateForm, self).__init__(*args, **kwargs) - self.fields['dating_type'].choices = DatingType.get_types() + self.fields['dating_type'].choices = DatingType.get_types( + initial=self.init_data.get('dating_type')) self.fields['dating_type'].help_text = DatingType.get_help() - self.fields['period'].choices = Period.get_types() + self.fields['period'].choices = Period.get_types( + initial=self.init_data.get('period')) self.fields['period'].help_text = Period.get_help() - self.fields['quality'].choices = DatingQuality.get_types() + self.fields['quality'].choices = DatingQuality.get_types( + initial=self.init_data.get('quality')) self.fields['quality'].help_text = DatingQuality.get_help() @@ -405,7 +415,7 @@ def check_treatment(form_name, type_key, type_list=[], not_type_list=[]): return func -class ResultFindForm(forms.Form): +class ResultFindForm(ManageOldType, forms.Form): form_label = _(u"Resulting find") associated_models = {'material_type': models.MaterialType} label = forms.CharField( @@ -420,7 +430,8 @@ class ResultFindForm(forms.Form): def __init__(self, *args, **kwargs): super(ResultFindForm, self).__init__(*args, **kwargs) - self.fields['material_type'].choices = models.MaterialType.get_types() + self.fields['material_type'].choices = models.MaterialType.get_types( + initial=self.init_data.get('material_type')) self.fields['material_type'].help_text = models.MaterialType.get_help() ResultFindFormSet = formset_factory(ResultFindForm, can_delete=True, @@ -555,7 +566,7 @@ class FindBasketAddItemForm(forms.Form): return basket -class BaseTreatmentForm(SelectFindBasketForm): +class BaseTreatmentForm(ManageOldType, SelectFindBasketForm): form_label = _(u"Base treatment") associated_models = {'treatment_type': models.TreatmentType, 'person': Person, @@ -584,6 +595,7 @@ class BaseTreatmentForm(SelectFindBasketForm): def __init__(self, *args, **kwargs): super(BaseTreatmentForm, self).__init__(*args, **kwargs) self.fields['treatment_type'].choices = models.TreatmentType.get_types( + initial=self.init_data.get('treatment_type'), exclude=['packaging']) self.fields['treatment_type'].help_text = \ models.TreatmentType.get_help(exclude=['packaging']) diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index d524fdbc5..247dcc20a 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -45,7 +45,8 @@ from widgets import ParcelWidget, SelectParcelWidget, OAWidget from ishtar_common import widgets from ishtar_common.forms import FinalForm, FormSet, get_now, \ - reverse_lazy, get_form_selection, TableSelect, get_data_from_formset + reverse_lazy, get_form_selection, TableSelect, get_data_from_formset, \ + ManageOldType from ishtar_common.forms_common import TownFormSet, SourceForm, SourceSelect, \ get_town_field @@ -368,7 +369,7 @@ ParcelFormSet = formset_factory(ParcelForm, can_delete=True, ParcelFormSet.form_label = _(u"Parcels") -class RecordRelationsForm(forms.Form): +class RecordRelationsForm(ManageOldType, forms.Form): base_model = 'right_relation' current_model = models.RelationType current_related_model = models.Operation @@ -386,7 +387,8 @@ class RecordRelationsForm(forms.Form): def __init__(self, *args, **kwargs): super(RecordRelationsForm, self).__init__(*args, **kwargs) self.fields['relation_type'].choices = \ - models.RelationType.get_types() + models.RelationType.get_types( + initial=self.init_data.get('relation_type')) @classmethod def _format_lst(cls, current): @@ -709,7 +711,7 @@ class DashboardForm(forms.Form): return fltr -class OperationFormGeneral(forms.Form): +class OperationFormGeneral(ManageOldType, forms.Form): form_label = _(u"General") base_model = 'archaeological_site' associated_models = {'scientist': Person, @@ -804,11 +806,13 @@ class OperationFormGeneral(forms.Form): def __init__(self, *args, **kwargs): super(OperationFormGeneral, self).__init__(*args, **kwargs) self.fields['operation_type'].choices = \ - models.OperationType.get_types() + models.OperationType.get_types( + initial=self.init_data.get('operation_type')) self.fields['operation_type'].help_text = \ models.OperationType.get_help() self.fields['report_processing'].choices = \ - models.ReportState.get_types() + models.ReportState.get_types( + initial=self.init_data.get('report_processing')) self.fields['report_processing'].help_text = \ models.ReportState.get_help() self.fields['record_quality'].choices = \ @@ -1003,7 +1007,7 @@ class SelectedParcelFormSet(forms.Form): """ -class RemainForm(forms.Form): +class RemainForm(ManageOldType, forms.Form): form_label = _("Remain types") base_model = 'remain' associated_models = {'remain': models.RemainType} @@ -1014,11 +1018,12 @@ class RemainForm(forms.Form): def __init__(self, *args, **kwargs): super(RemainForm, self).__init__(*args, **kwargs) self.fields['remain'].choices = models.RemainType.get_types( + initial=self.init_data.get('remain'), empty_first=False) self.fields['remain'].help_text = models.RemainType.get_help() -class PeriodForm(forms.Form): +class PeriodForm(ManageOldType, forms.Form): form_label = _("Periods") base_model = 'period' associated_models = {'period': models.Period} @@ -1029,11 +1034,12 @@ class PeriodForm(forms.Form): def __init__(self, *args, **kwargs): super(PeriodForm, self).__init__(*args, **kwargs) self.fields['period'].choices = models.Period.get_types( + initial=self.init_data.get('period'), empty_first=False) self.fields['period'].help_text = models.Period.get_help() -class ArchaeologicalSiteForm(forms.Form): +class ArchaeologicalSiteForm(ManageOldType, forms.Form): reference = forms.CharField(label=_(u"Reference"), max_length=20) name = forms.CharField(label=_(u"Name"), max_length=200, required=False) periods = forms.MultipleChoiceField( @@ -1049,10 +1055,14 @@ class ArchaeologicalSiteForm(forms.Form): kwargs.pop('limits') super(ArchaeologicalSiteForm, self).__init__(*args, **kwargs) self.fields['periods'].choices = \ - models.Period.get_types(empty_first=False) + models.Period.get_types( + empty_first=False, + initial=self.init_data.get('periods')) self.fields['periods'].help_text = models.Period.get_help() self.fields['remains'].choices = \ - models.RemainType.get_types(empty_first=False) + models.RemainType.get_types( + initial=self.init_data.get('remains'), + empty_first=False) self.fields['remains'].help_text = models.RemainType.get_help() def clean_reference(self): @@ -1260,7 +1270,7 @@ class AdministrativeActOpeFormSelection(forms.Form): return cleaned_data -class AdministrativeActOpeForm(forms.Form): +class AdministrativeActOpeForm(ManageOldType, forms.Form): form_label = _("General") associated_models = {'act_type': models.ActType, } # 'signatory':Person} @@ -1280,6 +1290,7 @@ class AdministrativeActOpeForm(forms.Form): def __init__(self, *args, **kwargs): super(AdministrativeActOpeForm, self).__init__(*args, **kwargs) self.fields['act_type'].choices = models.ActType.get_types( + initial=self.init_data.get('act_type'), dct={'intented_to': 'O'}) self.fields['act_type'].help_text = models.ActType.get_help( dct={'intented_to': 'O'}) diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py index d56df8139..b34be3ab3 100644 --- a/archaeological_warehouse/forms.py +++ b/archaeological_warehouse/forms.py @@ -26,7 +26,7 @@ from archaeological_finds.models import TreatmentType, FindBasket import models from ishtar_common import widgets from ishtar_common.forms import name_validator, reverse_lazy, \ - get_form_selection, TableSelect + get_form_selection, TableSelect, ManageOldType from archaeological_finds.forms import FindMultipleFormSelection, \ SelectFindBasketForm @@ -39,7 +39,7 @@ def get_warehouse_field(label=_(u"Warehouse"), required=True): validators=[valid_id(models.Warehouse)]) -class WarehouseForm(forms.Form): +class WarehouseForm(ManageOldType, forms.Form): name = forms.CharField(label=_(u"Name"), max_length=40, validators=[name_validator]) warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"), @@ -71,7 +71,8 @@ class WarehouseForm(forms.Form): kwargs.pop('limits') super(WarehouseForm, self).__init__(*args, **kwargs) self.fields['warehouse_type'].choices = \ - models.WarehouseType.get_types() + models.WarehouseType.get_types( + initial=self.init_data.get('warehouse_type')) self.fields['warehouse_type'].help_text = \ models.WarehouseType.get_help() @@ -88,7 +89,7 @@ class WarehouseForm(forms.Form): return new_item -class ContainerForm(forms.Form): +class ContainerForm(ManageOldType, forms.Form): form_label = _(u"Container") reference = forms.CharField(label=_(u"Ref.")) container_type = forms.ChoiceField(label=_(u"Container type"), choices=[]) @@ -106,7 +107,8 @@ class ContainerForm(forms.Form): kwargs.pop('limits') super(ContainerForm, self).__init__(*args, **kwargs) self.fields['container_type'].choices = \ - models.ContainerType.get_types() + models.ContainerType.get_types( + initial=self.init_data.get('container_type')) self.fields['container_type'].help_text = \ models.ContainerType.get_help() diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 89df1b1a5..79ca2c360 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -194,6 +194,37 @@ def get_data_from_formset(data): return values +class ManageOldType(object): + def __init__(self, *args, **kwargs): + """ + init_data is used to manage deactivated items in list when editing + old data + """ + prefix = kwargs.get('prefix') or '' + self.init_data = {} + if 'data' in kwargs and kwargs['data']: + for k in kwargs['data']: + if prefix not in k: + continue + new_k = k[len(prefix) + 1:] + for val in kwargs['data'].getlist(k): + if not val: + continue + if new_k not in self.init_data: + self.init_data[new_k] = [] + self.init_data[new_k].append(val) + if 'initial' in kwargs and kwargs['initial']: + for k in kwargs['initial']: + if k not in self.init_data or not self.init_data[k]: + for val in kwargs['initial'].getlist(k): + if not val: + continue + if k not in self.init_data: + self.init_data[k] = [] + self.init_data[k].append(val) + super(ManageOldType, self).__init__(*args, **kwargs) + + class DocumentGenerationForm(forms.Form): """ Form to generate document by choosing the template diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 2859ed4e5..f6889ae1f 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -33,7 +33,8 @@ from django.utils.translation import ugettext_lazy as _ import models import widgets -from forms import FinalForm, FormSet, reverse_lazy, name_validator, TableSelect +from forms import FinalForm, FormSet, reverse_lazy, name_validator, \ + TableSelect, ManageOldType def get_town_field(label=_(u"Town"), required=True): @@ -154,7 +155,7 @@ class TargetKeyForm(forms.ModelForm): self.instance.save() -class OrganizationForm(NewItemForm): +class OrganizationForm(ManageOldType, NewItemForm): form_label = _(u"Organization") associated_models = {'organization_type': models.OrganizationType} name = forms.CharField( @@ -178,7 +179,8 @@ class OrganizationForm(NewItemForm): def __init__(self, *args, **kwargs): super(OrganizationForm, self).__init__(*args, **kwargs) self.fields['organization_type'].choices = \ - models.OrganizationType.get_types() + models.OrganizationType.get_types( + initial=self.init_data.get('organization_type')) self.fields['organization_type'].help_text = \ models.OrganizationType.get_help() self.limit_fields() @@ -254,7 +256,7 @@ class PersonFormSelection(forms.Form): validators=[models.valid_id(models.Person)]) -class SimplePersonForm(NewItemForm): +class SimplePersonForm(ManageOldType, NewItemForm): form_label = _("Identity") associated_models = {'attached_to': models.Organization, 'title': models.TitleType} @@ -309,7 +311,8 @@ class SimplePersonForm(NewItemForm): def __init__(self, *args, **kwargs): super(SimplePersonForm, self).__init__(*args, **kwargs) self.fields['raw_name'].widget.attrs['readonly'] = True - self.fields['title'].choices = models.TitleType.get_types() + self.fields['title'].choices = models.TitleType.get_types( + initial=self.init_data.get('title')) class PersonUserSelect(PersonSelect): @@ -400,6 +403,7 @@ class PersonForm(SimplePersonForm): def __init__(self, *args, **kwargs): super(PersonForm, self).__init__(*args, **kwargs) self.fields['person_types'].choices = models.PersonType.get_types( + initial=self.init_data.get('person_types'), empty_first=False) self.fields['person_types'].help_text = models.PersonType.get_help() self.limit_fields() @@ -423,7 +427,7 @@ class NoOrgaPersonForm(PersonForm): self.fields.pop('attached_to') -class PersonTypeForm(forms.Form): +class PersonTypeForm(ManageOldType, forms.Form): form_label = _("Person type") base_model = 'person_type' associated_models = {'person_type': models.PersonType} @@ -434,6 +438,7 @@ class PersonTypeForm(forms.Form): def __init__(self, *args, **kwargs): super(PersonTypeForm, self).__init__(*args, **kwargs) self.fields['person_type'].choices = models.PersonType.get_types( + initial=self.init_data.get('person_type'), empty_first=False) self.fields['person_type'].help_text = models.PersonType.get_help() @@ -642,7 +647,7 @@ class MergeOrganizationForm(MergeForm): ###################### # Sources management # ###################### -class SourceForm(forms.Form): +class SourceForm(ManageOldType, forms.Form): form_label = _(u"Documentation informations") associated_models = {'source_type': models.SourceType} title = forms.CharField(label=_(u"Title"), @@ -675,7 +680,8 @@ class SourceForm(forms.Form): def __init__(self, *args, **kwargs): super(SourceForm, self).__init__(*args, **kwargs) - self.fields['source_type'].choices = models.SourceType.get_types() + self.fields['source_type'].choices = models.SourceType.get_types( + initial=self.init_data.get('source_type')) class SourceSelect(TableSelect): @@ -711,7 +717,7 @@ class SourceDeletionForm(FinalForm): ###################### -class AuthorForm(NewItemForm): +class AuthorForm(ManageOldType, NewItemForm): form_label = _(u"Author") associated_models = {'person': models.Person, 'author_type': models.AuthorType} @@ -724,7 +730,8 @@ class AuthorForm(NewItemForm): def __init__(self, *args, **kwargs): super(AuthorForm, self).__init__(*args, **kwargs) - self.fields['author_type'].choices = models.AuthorType.get_types() + self.fields['author_type'].choices = models.AuthorType.get_types( + initial=self.init_data.get('author_type')) self.limit_fields() def save(self, user): diff --git a/ishtar_common/models.py b/ishtar_common/models.py index e2142ef0c..04077b240 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -330,7 +330,28 @@ class GeneralType(Cached, models.Model): @classmethod def get_types(cls, dct={}, instances=False, exclude=[], empty_first=True, - default=None): + default=None, initial=None): + types = cls.pre_get_types(dct, instances, exclude, empty_first, + default) + if not initial: + return types + for value in initial: + try: + pk = int(value) + except ValueError: + continue + if pk in [idx for idx, lbl in types]: + continue + try: + extra_type = cls.objects.get(pk=pk) + types.append((extra_type.pk, unicode(extra_type))) + except cls.DoesNotExist: + continue + return types + + @classmethod + def pre_get_types(cls, dct={}, instances=False, exclude=[], + empty_first=True, default=None): # cache cache_key = None if not instances: -- cgit v1.2.3 From 4011f48a32a4dc9ebdfbe68a0894f89a0bd42038 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 2 Sep 2016 10:03:15 +0200 Subject: Fix get_types for operation_types (refs #3179) --- ishtar_common/models.py | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 04077b240..c536b64ae 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -329,29 +329,36 @@ class GeneralType(Cached, models.Model): return u"" @classmethod - def get_types(cls, dct={}, instances=False, exclude=[], empty_first=True, - default=None, initial=None): - types = cls.pre_get_types(dct, instances, exclude, empty_first, - default) - if not initial: - return types + def _get_initial_types(cls, initial, type_pks): + new_vals = [] for value in initial: try: pk = int(value) except ValueError: continue - if pk in [idx for idx, lbl in types]: + if pk in type_pks: continue try: extra_type = cls.objects.get(pk=pk) - types.append((extra_type.pk, unicode(extra_type))) + new_vals.append((extra_type.pk, unicode(extra_type))) except cls.DoesNotExist: continue + return new_vals + + @classmethod + def get_types(cls, dct={}, instances=False, exclude=[], empty_first=True, + default=None, initial=None): + types = cls._pre_get_types(dct, instances, exclude, empty_first, + default) + if not initial: + return types + new_vals = cls._get_initial_types(initial, [idx for idx, lbl in types]) + types += new_vals return types @classmethod - def pre_get_types(cls, dct={}, instances=False, exclude=[], - empty_first=True, default=None): + def _pre_get_types(cls, dct={}, instances=False, exclude=[], + empty_first=True, default=None): # cache cache_key = None if not instances: @@ -2637,7 +2644,7 @@ class OperationType(GeneralType): @classmethod def get_types(cls, dct={}, instances=False, exclude=[], empty_first=True, - default=None): + default=None, initial=[]): tuples = [] dct['available'] = True if not instances and empty_first and not default: @@ -2654,7 +2661,10 @@ class OperationType(GeneralType): if exclude: items = items.exclude(txt_idx__in=exclude) current_preventive, current_lst = None, None - for item in items.order_by(*cls._meta.ordering).all(): + item_list = list(items.order_by(*cls._meta.ordering).all()) + new_vals = cls._get_initial_types(initial, [i.pk for i in item_list]) + item_list += new_vals + for item in item_list: if not current_lst or item.preventive != current_preventive: if current_lst: tuples.append(current_lst) -- cgit v1.2.3 From 76ce831772dd02e416ee2c3e5c5ca6987ffcfae5 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 2 Sep 2016 10:04:34 +0200 Subject: Update french translation --- archaeological_context_records/locale/django.pot | 62 +-- archaeological_files/locale/django.pot | 118 ++--- archaeological_files_pdl/locale/django.pot | 48 +- archaeological_finds/locale/django.pot | 144 +++--- archaeological_operations/locale/django.pot | 238 ++++----- archaeological_warehouse/locale/django.pot | 24 +- ishtar_common/locale/django.pot | 568 +++++++++++---------- translations/de/ishtar_common.po | 570 +++++++++++---------- translations/fr/archaeological_context_records.po | 64 +-- translations/fr/archaeological_files.po | 120 ++--- translations/fr/archaeological_files_pdl.po | 50 +- translations/fr/archaeological_finds.po | 146 +++--- translations/fr/archaeological_operations.po | 240 ++++----- translations/fr/archaeological_warehouse.po | 26 +- translations/fr/ishtar_common.po | 574 +++++++++++----------- 15 files changed, 1532 insertions(+), 1460 deletions(-) diff --git a/archaeological_context_records/locale/django.pot b/archaeological_context_records/locale/django.pot index 8daef7bec..3f3ab428e 100644 --- a/archaeological_context_records/locale/django.pot +++ b/archaeological_context_records/locale/django.pot @@ -32,7 +32,7 @@ msgstr "" msgid "Search within operation relations" msgstr "" -#: forms.py:64 forms.py:189 models.py:48 +#: forms.py:64 forms.py:190 models.py:48 msgid "Period" msgstr "" @@ -48,7 +48,7 @@ msgstr "" msgid "Search within relations" msgstr "" -#: forms.py:98 forms.py:288 views.py:118 +#: forms.py:98 forms.py:295 views.py:118 msgid "Context record search" msgstr "" @@ -94,120 +94,120 @@ msgstr "" msgid "Location" msgstr "" -#: forms.py:178 +#: forms.py:179 msgid "This ID already exists for this operation." msgstr "" -#: forms.py:184 forms.py:208 models.py:59 +#: forms.py:185 forms.py:212 models.py:59 msgid "Dating" msgstr "" -#: forms.py:190 models.py:49 +#: forms.py:191 models.py:49 msgid "Start date" msgstr "" -#: forms.py:191 models.py:50 models.py:135 +#: forms.py:192 models.py:50 models.py:135 msgid "End date" msgstr "" -#: forms.py:192 models.py:53 +#: forms.py:193 models.py:53 msgid "Quality" msgstr "" -#: forms.py:193 models.py:35 models.py:51 +#: forms.py:194 models.py:35 models.py:51 msgid "Dating type" msgstr "" -#: forms.py:217 ishtar_menu.py:29 models.py:354 +#: forms.py:221 ishtar_menu.py:29 models.py:354 msgid "Context record" msgstr "" -#: forms.py:237 +#: forms.py:242 msgid "Relations" msgstr "" -#: forms.py:241 forms.py:251 models.py:153 +#: forms.py:246 forms.py:256 models.py:153 #: templates/ishtar/sheet_contextrecord.html:37 msgid "Interpretation" msgstr "" -#: forms.py:245 +#: forms.py:250 msgid "Comments on dating" msgstr "" -#: forms.py:247 models.py:150 +#: forms.py:252 models.py:150 msgid "Has furniture?" msgstr "" -#: forms.py:249 models.py:152 +#: forms.py:254 models.py:152 msgid "Filling" msgstr "" -#: forms.py:253 models.py:173 +#: forms.py:258 models.py:173 msgid "Activity" msgstr "" -#: forms.py:255 models.py:171 +#: forms.py:260 models.py:171 msgid "Identification" msgstr "" -#: forms.py:257 models.py:156 +#: forms.py:262 models.py:156 msgid "TAQ" msgstr "" -#: forms.py:258 models.py:160 +#: forms.py:263 models.py:160 msgid "Estimated TAQ" msgstr "" -#: forms.py:260 models.py:163 +#: forms.py:265 models.py:163 msgid "TPQ" msgstr "" -#: forms.py:261 models.py:167 +#: forms.py:266 models.py:167 msgid "Estimated TPQ" msgstr "" -#: forms.py:274 +#: forms.py:281 msgid "Operation search" msgstr "" -#: forms.py:276 +#: forms.py:283 msgid "You should select an operation." msgstr "" -#: forms.py:281 +#: forms.py:288 msgid "Would you like to delete this context record?" msgstr "" -#: forms.py:290 +#: forms.py:297 msgid "You should select a context record." msgstr "" -#: forms.py:295 +#: forms.py:302 msgid "Year of the operation" msgstr "" -#: forms.py:297 +#: forms.py:304 msgid "Numeric reference" msgstr "" -#: forms.py:303 +#: forms.py:310 msgid "Town of the operation" msgstr "" -#: forms.py:305 +#: forms.py:312 msgid "Period of the context record" msgstr "" -#: forms.py:307 +#: forms.py:314 msgid "Unit type of the context record" msgstr "" -#: forms.py:320 +#: forms.py:327 msgid "Documentation search" msgstr "" -#: forms.py:322 +#: forms.py:329 msgid "You should select a document." msgstr "" diff --git a/archaeological_files/locale/django.pot b/archaeological_files/locale/django.pot index d1d5e5820..b8146add8 100644 --- a/archaeological_files/locale/django.pot +++ b/archaeological_files/locale/django.pot @@ -8,243 +8,243 @@ msgid "" msgstr "" -#: forms.py:51 forms.py:210 forms.py:254 forms.py:395 forms.py:422 +#: forms.py:52 forms.py:212 forms.py:257 forms.py:404 forms.py:431 #: models.py:76 templates/ishtar/sheet_file.html:139 msgid "Year" msgstr "" -#: forms.py:52 forms.py:215 forms.py:256 models.py:79 +#: forms.py:53 forms.py:217 forms.py:259 models.py:79 msgid "Numeric reference" msgstr "" -#: forms.py:54 forms.py:217 +#: forms.py:55 forms.py:219 msgid "Other reference" msgstr "" -#: forms.py:56 forms.py:430 +#: forms.py:57 forms.py:439 msgid "Parcel (section/number/public domain)" msgstr "" -#: forms.py:59 forms.py:406 forms.py:433 models.py:512 +#: forms.py:60 forms.py:415 forms.py:442 models.py:512 msgid "Department" msgstr "" -#: forms.py:60 forms.py:442 +#: forms.py:61 forms.py:451 msgid "File name" msgstr "" -#: forms.py:61 forms.py:156 forms.py:221 models.py:87 +#: forms.py:62 forms.py:158 forms.py:223 models.py:87 msgid "File type" msgstr "" -#: forms.py:62 +#: forms.py:63 msgid "Is active?" msgstr "" -#: forms.py:63 forms.py:158 forms.py:318 +#: forms.py:64 forms.py:160 forms.py:321 msgid "Saisine type" msgstr "" -#: forms.py:64 forms.py:308 models.py:58 models.py:118 +#: forms.py:65 forms.py:311 models.py:58 models.py:118 msgid "Permit type" msgstr "" -#: forms.py:66 forms.py:311 models.py:119 +#: forms.py:67 forms.py:314 models.py:119 msgid "Permit reference" msgstr "" -#: forms.py:67 forms.py:227 forms.py:365 models.py:148 +#: forms.py:68 forms.py:229 forms.py:372 models.py:148 #: templates/ishtar/sheet_file.html:94 msgid "Comment" msgstr "" -#: forms.py:69 templates/ishtar/sheet_file.html:112 +#: forms.py:70 templates/ishtar/sheet_file.html:112 msgid "In charge" msgstr "" -#: forms.py:76 forms.py:286 forms.py:444 models.py:94 +#: forms.py:77 forms.py:289 forms.py:453 models.py:94 msgid "General contractor" msgstr "" -#: forms.py:83 forms.py:453 +#: forms.py:84 forms.py:462 msgid "Organization of general contractor" msgstr "" -#: forms.py:90 forms.py:476 +#: forms.py:91 forms.py:485 msgid "Created by" msgstr "" -#: forms.py:97 forms.py:484 +#: forms.py:98 forms.py:493 msgid "Modified by" msgstr "" -#: forms.py:127 +#: forms.py:129 msgid "Archaeological file search" msgstr "" -#: forms.py:141 +#: forms.py:143 msgid "You should select a file." msgstr "" -#: forms.py:144 forms.py:219 models.py:127 +#: forms.py:146 forms.py:221 models.py:127 msgid "Creation date" msgstr "" -#: forms.py:145 forms.py:321 models.py:129 +#: forms.py:147 forms.py:324 models.py:129 msgid "Reception date" msgstr "" -#: forms.py:150 +#: forms.py:152 msgid "Slicing" msgstr "" -#: forms.py:152 +#: forms.py:154 msgid "Department detail" msgstr "" -#: forms.py:154 +#: forms.py:156 msgid "Date get from" msgstr "" -#: forms.py:160 +#: forms.py:162 msgid "Date after" msgstr "" -#: forms.py:162 +#: forms.py:164 msgid "Date before" msgstr "" -#: forms.py:199 templates/ishtar/sheet_file.html:14 +#: forms.py:201 templates/ishtar/sheet_file.html:14 msgid "General" msgstr "" -#: forms.py:204 models.py:89 +#: forms.py:206 models.py:89 msgid "Person in charge" msgstr "" -#: forms.py:218 models.py:86 +#: forms.py:220 models.py:86 msgid "Name" msgstr "" -#: forms.py:223 models.py:131 +#: forms.py:225 models.py:131 msgid "Related file" msgstr "" -#: forms.py:231 models.py:139 +#: forms.py:233 models.py:139 msgid "Total surface (m2)" msgstr "" -#: forms.py:234 models.py:145 +#: forms.py:236 models.py:145 msgid "Main address" msgstr "" -#: forms.py:235 +#: forms.py:237 msgid "Main address - complement" msgstr "" -#: forms.py:247 +#: forms.py:250 #, python-format msgid "
(last recorded: %s)" msgstr "" -#: forms.py:269 +#: forms.py:272 msgid "Another file with this numeric id exists." msgstr "" -#: forms.py:280 +#: forms.py:283 msgid "Preventive informations" msgstr "" -#: forms.py:298 models.py:106 +#: forms.py:301 models.py:106 msgid "Responsible for town planning service" msgstr "" -#: forms.py:314 models.py:142 +#: forms.py:317 models.py:142 msgid "Total developed surface (m2)" msgstr "" -#: forms.py:333 templates/ishtar/sheet_file.html:84 +#: forms.py:340 templates/ishtar/sheet_file.html:84 #: templates/ishtar/dashboards/dashboard_file.html:45 msgid "Research archaeology" msgstr "" -#: forms.py:341 models.py:151 templates/ishtar/sheet_file.html:85 +#: forms.py:348 models.py:151 templates/ishtar/sheet_file.html:85 msgid "Departments" msgstr "" -#: forms.py:352 models.py:160 +#: forms.py:359 models.py:160 msgid "Scientist in charge" msgstr "" -#: forms.py:354 models.py:154 templates/ishtar/sheet_file.html:87 +#: forms.py:361 models.py:154 templates/ishtar/sheet_file.html:87 msgid "Requested operation type" msgstr "" -#: forms.py:356 +#: forms.py:363 msgid "Lead organization" msgstr "" -#: forms.py:372 models.py:164 templates/ishtar/sheet_file.html:92 +#: forms.py:379 models.py:164 templates/ishtar/sheet_file.html:92 msgid "Classified area" msgstr "" -#: forms.py:374 models.py:166 templates/ishtar/sheet_file.html:93 +#: forms.py:381 models.py:166 templates/ishtar/sheet_file.html:93 msgid "Protected area" msgstr "" -#: forms.py:386 +#: forms.py:395 msgid "Would you like to close this archaeological file?" msgstr "" -#: forms.py:391 +#: forms.py:400 msgid "Would you like to delete this archaelogical file ?" msgstr "" -#: forms.py:396 forms.py:423 forms.py:546 +#: forms.py:405 forms.py:432 forms.py:556 msgid "Index" msgstr "" -#: forms.py:400 forms.py:427 forms.py:533 +#: forms.py:409 forms.py:436 forms.py:542 msgid "Act type" msgstr "" -#: forms.py:401 +#: forms.py:410 msgid "Object (full text search)" msgstr "" -#: forms.py:428 +#: forms.py:437 msgid "Indexed?" msgstr "" -#: forms.py:434 +#: forms.py:443 msgid "Object" msgstr "" -#: forms.py:438 +#: forms.py:447 msgid "Signature date after" msgstr "" -#: forms.py:440 +#: forms.py:449 msgid "Signature date before" msgstr "" -#: forms.py:461 +#: forms.py:470 msgid "File numeric reference" msgstr "" -#: forms.py:462 +#: forms.py:471 msgid "File year" msgstr "" -#: forms.py:464 +#: forms.py:473 msgid "File other reference" msgstr "" -#: forms.py:466 +#: forms.py:475 msgid "File in charge" msgstr "" -#: forms.py:474 +#: forms.py:483 msgid "File permit reference" msgstr "" diff --git a/archaeological_files_pdl/locale/django.pot b/archaeological_files_pdl/locale/django.pot index a4f73fea5..5c3d03a37 100644 --- a/archaeological_files_pdl/locale/django.pot +++ b/archaeological_files_pdl/locale/django.pot @@ -15,7 +15,7 @@ msgstr "" msgid "File type" msgstr "" -#: forms.py:44 forms.py:401 +#: forms.py:44 forms.py:403 msgid "Year" msgstr "" @@ -27,97 +27,97 @@ msgstr "" msgid "Reception date" msgstr "" -#: forms.py:62 +#: forms.py:63 msgid "Reception date cannot be after today." msgstr "" -#: forms.py:70 +#: forms.py:71 msgid "Permit type" msgstr "" -#: forms.py:72 +#: forms.py:73 msgid "Saisine type" msgstr "" -#: forms.py:85 +#: forms.py:87 msgid "Planning" msgstr "" -#: forms.py:88 +#: forms.py:90 msgid "Planning name" msgstr "" -#: forms.py:91 forms.py:121 +#: forms.py:93 forms.py:123 #: templates/ishtar/wizard/wizard_preventiveplanning.html:31 msgid "Towns" msgstr "" -#: forms.py:93 forms.py:123 +#: forms.py:95 forms.py:125 #: templates/ishtar/wizard/wizard_preventiveplanning.html:41 msgid "Departments" msgstr "" -#: forms.py:94 forms.py:124 +#: forms.py:96 forms.py:126 msgid "Locality" msgstr "" -#: forms.py:97 forms.py:127 +#: forms.py:99 forms.py:129 msgid "Address (number/street)" msgstr "" -#: forms.py:98 forms.py:128 +#: forms.py:100 forms.py:130 msgid "Number/street" msgstr "" -#: forms.py:100 forms.py:130 +#: forms.py:102 forms.py:132 msgid "Postal code" msgstr "" -#: forms.py:105 +#: forms.py:107 msgid "Total surface (m2)" msgstr "" -#: forms.py:110 +#: forms.py:112 msgid "Total developed surface (m2)" msgstr "" -#: forms.py:117 +#: forms.py:119 msgid "Address" msgstr "" -#: forms.py:231 forms.py:235 forms.py:265 forms.py:268 +#: forms.py:233 forms.py:237 forms.py:267 forms.py:270 msgid "General contractor" msgstr "" -#: forms.py:250 forms.py:362 +#: forms.py:252 forms.py:364 msgid "In charge" msgstr "" -#: forms.py:340 +#: forms.py:342 msgid "Town planning service" msgstr "" -#: forms.py:344 +#: forms.py:346 msgid "File reference" msgstr "" -#: forms.py:347 +#: forms.py:349 msgid "Planning service" msgstr "" -#: forms.py:381 +#: forms.py:383 msgid "Person in charge" msgstr "" -#: forms.py:393 +#: forms.py:395 msgid "Related file" msgstr "" -#: forms.py:397 +#: forms.py:399 msgid "Comment" msgstr "" -#: forms.py:404 +#: forms.py:406 msgid "Numeric reference" msgstr "" diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot index 19327cda6..ba5742288 100644 --- a/archaeological_finds/locale/django.pot +++ b/archaeological_finds/locale/django.pot @@ -8,299 +8,299 @@ msgid "" msgstr "" -#: forms.py:49 forms.py:53 wizards.py:62 +#: forms.py:50 forms.py:54 wizards.py:62 msgid "Context record" msgstr "" -#: forms.py:82 ishtar_menu.py:31 models.py:384 models.py:649 models.py:747 +#: forms.py:83 ishtar_menu.py:31 models.py:384 models.py:649 models.py:747 #: models.py:891 templates/ishtar/sheet_find.html:5 msgid "Find" msgstr "" -#: forms.py:93 forms.py:208 forms.py:412 models.py:113 models.py:317 +#: forms.py:94 forms.py:218 forms.py:422 models.py:113 models.py:317 msgid "Free ID" msgstr "" -#: forms.py:95 models.py:365 +#: forms.py:96 models.py:365 msgid "Previous ID" msgstr "" -#: forms.py:96 forms.py:237 forms.py:577 models.py:117 models.py:318 +#: forms.py:97 forms.py:247 forms.py:588 models.py:117 models.py:318 #: models.py:681 msgid "Description" msgstr "" -#: forms.py:99 forms.py:239 models.py:128 +#: forms.py:100 forms.py:249 models.py:128 msgid "Batch/object" msgstr "" -#: forms.py:101 models.py:346 +#: forms.py:102 models.py:346 msgid "Is complete?" msgstr "" -#: forms.py:104 forms.py:228 forms.py:416 models.py:48 +#: forms.py:105 forms.py:238 forms.py:426 models.py:48 msgid "Material type" msgstr "" -#: forms.py:105 forms.py:232 models.py:58 models.py:322 +#: forms.py:106 forms.py:242 models.py:58 models.py:322 msgid "Conservatory state" msgstr "" -#: forms.py:108 models.py:324 +#: forms.py:109 models.py:324 msgid "Conservatory comment" msgstr "" -#: forms.py:111 models.py:90 models.py:349 +#: forms.py:112 models.py:90 models.py:349 msgid "Object types" msgstr "" -#: forms.py:113 forms.py:231 models.py:65 +#: forms.py:114 forms.py:241 models.py:65 msgid "Preservation type" msgstr "" -#: forms.py:116 forms.py:234 models.py:351 +#: forms.py:117 forms.py:244 models.py:351 msgid "Integrity" msgstr "" -#: forms.py:119 forms.py:235 models.py:353 +#: forms.py:120 forms.py:245 models.py:353 msgid "Remarkability" msgstr "" -#: forms.py:121 models.py:355 +#: forms.py:122 models.py:355 msgid "Length (cm)" msgstr "" -#: forms.py:122 models.py:356 +#: forms.py:123 models.py:356 msgid "Width (cm)" msgstr "" -#: forms.py:123 models.py:357 +#: forms.py:124 models.py:357 msgid "Height (cm)" msgstr "" -#: forms.py:124 models.py:358 +#: forms.py:125 models.py:358 msgid "Diameter (cm)" msgstr "" -#: forms.py:125 forms.py:417 models.py:329 +#: forms.py:126 forms.py:427 models.py:329 msgid "Volume (l)" msgstr "" -#: forms.py:126 forms.py:418 models.py:330 +#: forms.py:127 forms.py:428 models.py:330 msgid "Weight (g)" msgstr "" -#: forms.py:128 models.py:359 +#: forms.py:129 models.py:359 msgid "Dimensions comment" msgstr "" -#: forms.py:129 forms.py:419 models.py:333 +#: forms.py:130 forms.py:429 models.py:333 msgid "Find number" msgstr "" -#: forms.py:130 models.py:361 +#: forms.py:131 models.py:361 msgid "Mark" msgstr "" -#: forms.py:131 forms.py:241 models.py:367 +#: forms.py:132 forms.py:251 models.py:367 msgid "Check" msgstr "" -#: forms.py:133 models.py:369 +#: forms.py:134 models.py:369 msgid "Check date" msgstr "" -#: forms.py:134 models.py:118 models.py:362 models.py:682 +#: forms.py:135 models.py:118 models.py:362 models.py:682 msgid "Comment" msgstr "" -#: forms.py:137 models.py:363 +#: forms.py:138 models.py:363 msgid "Comment on dating" msgstr "" -#: forms.py:138 models.py:371 +#: forms.py:139 models.py:371 msgid "Estimated value" msgstr "" -#: forms.py:140 +#: forms.py:141 msgid "Image" msgstr "" -#: forms.py:141 +#: forms.py:142 #, python-format msgid "" "

Heavy images are resized to: %(width)dx%(height)d (ratio is preserved)." msgstr "" -#: forms.py:174 forms.py:202 models.py:341 +#: forms.py:181 forms.py:212 models.py:341 msgid "Dating" msgstr "" -#: forms.py:179 forms.py:226 +#: forms.py:186 forms.py:236 msgid "Period" msgstr "" -#: forms.py:180 forms.py:579 models.py:695 models.py:760 models.py:896 +#: forms.py:187 forms.py:590 models.py:695 models.py:760 models.py:896 #: templates/ishtar/sheet_find.html:81 templates/ishtar/sheet_find.html:110 msgid "Start date" msgstr "" -#: forms.py:182 forms.py:581 models.py:696 models.py:761 models.py:897 +#: forms.py:189 forms.py:592 models.py:696 models.py:761 models.py:897 #: templates/ishtar/sheet_find.html:82 templates/ishtar/sheet_find.html:111 msgid "End date" msgstr "" -#: forms.py:183 +#: forms.py:190 msgid "Quality" msgstr "" -#: forms.py:185 +#: forms.py:192 msgid "Dating type" msgstr "" -#: forms.py:187 +#: forms.py:194 msgid "Precise dating" msgstr "" -#: forms.py:206 models.py:136 +#: forms.py:216 models.py:136 msgid "Short ID" msgstr "" -#: forms.py:207 models.py:139 +#: forms.py:217 models.py:139 msgid "Complete ID" msgstr "" -#: forms.py:211 +#: forms.py:221 msgid "Year" msgstr "" -#: forms.py:214 +#: forms.py:224 msgid "Code PATRIARCHE" msgstr "" -#: forms.py:218 +#: forms.py:228 msgid "Archaelogical site" msgstr "" -#: forms.py:224 +#: forms.py:234 msgid "Search within operation relations" msgstr "" -#: forms.py:229 models.py:89 +#: forms.py:239 models.py:89 msgid "Object type" msgstr "" -#: forms.py:242 +#: forms.py:252 msgid "Has an image?" msgstr "" -#: forms.py:284 forms.py:297 views.py:120 +#: forms.py:294 forms.py:307 views.py:120 msgid "Find search" msgstr "" -#: forms.py:311 +#: forms.py:321 msgid "Upstream finds" msgstr "" -#: forms.py:313 models.py:385 +#: forms.py:323 models.py:385 msgid "Finds" msgstr "" -#: forms.py:323 +#: forms.py:333 msgid "You should at least select one archaeological find." msgstr "" -#: forms.py:409 +#: forms.py:419 msgid "Resulting find" msgstr "" -#: forms.py:414 +#: forms.py:424 msgid "Precise description" msgstr "" -#: forms.py:428 +#: forms.py:439 msgid "Resulting finds" msgstr "" -#: forms.py:433 +#: forms.py:444 msgid "Would you like to delete this find?" msgstr "" -#: forms.py:437 +#: forms.py:448 msgid "Upstream find" msgstr "" -#: forms.py:448 +#: forms.py:459 msgid "Archaeological find search" msgstr "" -#: forms.py:450 +#: forms.py:461 msgid "You should select an archaeological find." msgstr "" -#: forms.py:455 +#: forms.py:466 msgid "Year of the operation" msgstr "" -#: forms.py:457 +#: forms.py:468 msgid "Numeric reference" msgstr "" -#: forms.py:464 +#: forms.py:475 msgid "Period of the archaelogical find" msgstr "" -#: forms.py:466 +#: forms.py:477 msgid "Material type of the archaelogical find" msgstr "" -#: forms.py:468 +#: forms.py:479 msgid "Description of the archaelogical find" msgstr "" -#: forms.py:480 +#: forms.py:491 msgid "Documentation search" msgstr "" -#: forms.py:482 +#: forms.py:493 msgid "You should select a document." msgstr "" -#: forms.py:499 +#: forms.py:510 msgid "Another basket already exist with this name." msgstr "" -#: forms.py:509 ishtar_menu.py:60 +#: forms.py:520 ishtar_menu.py:60 msgid "Basket" msgstr "" -#: forms.py:559 +#: forms.py:570 msgid "Base treatment" msgstr "" -#: forms.py:564 models.py:671 models.py:684 models.py:759 +#: forms.py:575 models.py:671 models.py:684 models.py:759 msgid "Treatment type" msgstr "" -#: forms.py:566 models.py:693 models.py:764 +#: forms.py:577 models.py:693 models.py:764 #: templates/ishtar/sheet_find.html:79 templates/ishtar/sheet_find.html:108 msgid "Doer" msgstr "" -#: forms.py:572 models.py:686 models.py:762 +#: forms.py:583 models.py:686 models.py:762 msgid "Location" msgstr "" -#: forms.py:592 +#: forms.py:604 msgid "Leave it blank if you want to select a single item" msgstr "" -#: forms.py:599 +#: forms.py:611 msgid "This treatment type is not available." msgstr "" -#: forms.py:603 +#: forms.py:615 msgid "This treatment needs a basket." msgstr "" diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot index 7c2ea0d62..5a84d8c91 100644 --- a/archaeological_operations/locale/django.pot +++ b/archaeological_operations/locale/django.pot @@ -8,12 +8,12 @@ msgid "" msgstr "" -#: forms.py:66 forms.py:368 forms.py:952 forms.py:974 forms.py:978 +#: forms.py:67 forms.py:369 forms.py:956 forms.py:978 forms.py:982 #: models.py:815 templates/ishtar/blocks/window_tables/parcels.html:10 msgid "Parcels" msgstr "" -#: forms.py:69 forms.py:202 forms.py:928 models.py:801 +#: forms.py:70 forms.py:203 forms.py:932 models.py:801 #: templates/ishtar/blocks/window_tables/parcels.html:7 #: templates/ishtar/dashboards/dashboard_operation.html:432 #: templates/ishtar/dashboards/dashboard_operation.html:446 @@ -22,92 +22,92 @@ msgstr "" msgid "Town" msgstr "" -#: forms.py:71 forms.py:457 forms.py:731 forms.py:1192 models.py:194 +#: forms.py:72 forms.py:459 forms.py:733 forms.py:1202 models.py:194 #: models.py:618 models.py:799 #: templates/ishtar/blocks/window_tables/parcels.html:8 msgid "Year" msgstr "" -#: forms.py:74 models.py:802 +#: forms.py:75 models.py:802 #: templates/ishtar/blocks/window_tables/parcels.html:9 msgid "Section" msgstr "" -#: forms.py:77 models.py:804 +#: forms.py:78 models.py:804 msgid "Parcel number" msgstr "" -#: forms.py:79 models.py:806 models.py:823 models.py:872 +#: forms.py:80 models.py:806 models.py:823 models.py:872 msgid "Public domain" msgstr "" -#: forms.py:123 +#: forms.py:124 msgid "Town section is required." msgstr "" -#: forms.py:167 +#: forms.py:168 msgid "Current parcels" msgstr "" -#: forms.py:169 +#: forms.py:170 msgid "Deleted parcels" msgstr "" -#: forms.py:205 +#: forms.py:206 msgid "Full text input" msgstr "" -#: forms.py:207 +#: forms.py:208 msgid "example: \"2013: XD:1 to 13,24,33 to 39, YD:24\" or \"AB:24,AC:42\"" msgstr "" -#: forms.py:362 +#: forms.py:363 msgid "There are identical parcels." msgstr "" -#: forms.py:377 +#: forms.py:378 msgid "Relation type" msgstr "" -#: forms.py:380 ishtar_menu.py:30 models.py:276 models.py:518 models.py:543 +#: forms.py:381 ishtar_menu.py:30 models.py:276 models.py:518 models.py:543 #: models.py:559 models.py:610 models.py:798 wizards.py:338 wizards.py:349 #: templates/ishtar/sheet_operation.html:4 msgid "Operation" msgstr "" -#: forms.py:399 +#: forms.py:401 msgid ":" msgstr "" -#: forms.py:407 forms.py:585 forms.py:1157 +#: forms.py:409 forms.py:587 forms.py:1167 msgid "You should select an operation." msgstr "" -#: forms.py:411 +#: forms.py:413 msgid "You should select a relation type." msgstr "" -#: forms.py:441 +#: forms.py:443 msgid "Current relations" msgstr "" -#: forms.py:443 +#: forms.py:445 msgid "Deleted relations" msgstr "" -#: forms.py:447 templates/ishtar/sheet_operation.html:114 +#: forms.py:449 templates/ishtar/sheet_operation.html:114 msgid "Relations" msgstr "" -#: forms.py:458 forms.py:1163 +#: forms.py:460 forms.py:1173 msgid "Numeric reference" msgstr "" -#: forms.py:464 forms.py:1203 +#: forms.py:466 forms.py:1213 msgid "Parcel (section/number/public domain)" msgstr "" -#: forms.py:467 forms.py:1206 models.py:519 +#: forms.py:469 forms.py:1216 models.py:519 #: templates/ishtar/dashboards/dashboard_operation.html:390 #: templates/ishtar/dashboards/dashboard_operation.html:411 #: templates/ishtar/dashboards/dashboard_operation.html:643 @@ -115,404 +115,404 @@ msgstr "" msgid "Department" msgstr "" -#: forms.py:468 forms.py:1038 models.py:78 +#: forms.py:470 forms.py:1044 models.py:78 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8 msgid "Name" msgstr "" -#: forms.py:470 forms.py:652 forms.py:729 forms.py:1169 models.py:202 +#: forms.py:472 forms.py:654 forms.py:731 forms.py:1179 models.py:202 msgid "Operation type" msgstr "" -#: forms.py:472 +#: forms.py:474 msgid "Is open?" msgstr "" -#: forms.py:481 forms.py:758 models.py:191 +#: forms.py:483 forms.py:760 models.py:191 msgid "In charge" msgstr "" -#: forms.py:488 models.py:604 +#: forms.py:490 models.py:604 msgid "Scientist in charge" msgstr "" -#: forms.py:490 forms.py:654 forms.py:749 models.py:189 +#: forms.py:492 forms.py:656 forms.py:751 models.py:189 msgid "Operator" msgstr "" -#: forms.py:497 forms.py:1043 models.py:82 models.py:204 +#: forms.py:499 forms.py:1049 models.py:82 models.py:204 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:10 msgid "Remains" msgstr "" -#: forms.py:498 forms.py:1022 forms.py:1040 models.py:80 models.py:209 +#: forms.py:500 forms.py:1027 forms.py:1046 models.py:80 models.py:209 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9 msgid "Periods" msgstr "" -#: forms.py:499 +#: forms.py:501 msgid "Started before" msgstr "" -#: forms.py:501 +#: forms.py:503 msgid "Started after" msgstr "" -#: forms.py:503 +#: forms.py:505 msgid "Ended before" msgstr "" -#: forms.py:505 +#: forms.py:507 msgid "Ended after" msgstr "" -#: forms.py:508 +#: forms.py:510 msgid "Search within relations" msgstr "" -#: forms.py:510 forms.py:797 models.py:255 +#: forms.py:512 forms.py:799 models.py:255 msgid "Comment" msgstr "" -#: forms.py:511 +#: forms.py:513 msgid "Abstract (full text search)" msgstr "" -#: forms.py:512 forms.py:799 models.py:267 +#: forms.py:514 forms.py:801 models.py:267 msgid "Record quality" msgstr "" -#: forms.py:513 forms.py:781 models.py:221 +#: forms.py:515 forms.py:783 models.py:221 msgid "Report processing" msgstr "" -#: forms.py:515 forms.py:802 models.py:262 +#: forms.py:517 forms.py:804 models.py:262 msgid "Virtual operation" msgstr "" -#: forms.py:517 forms.py:1083 +#: forms.py:519 forms.py:1093 msgid "Archaelogical site" msgstr "" -#: forms.py:523 forms.py:1210 +#: forms.py:525 forms.py:1220 msgid "Created by" msgstr "" -#: forms.py:529 forms.py:1216 +#: forms.py:531 forms.py:1226 msgid "Modified by" msgstr "" -#: forms.py:572 forms.py:1155 views.py:247 +#: forms.py:574 forms.py:1165 views.py:247 msgid "Operation search" msgstr "" -#: forms.py:616 +#: forms.py:618 msgid "Associated file" msgstr "" -#: forms.py:620 forms.py:876 models.py:615 wizards.py:76 +#: forms.py:622 forms.py:880 models.py:615 wizards.py:76 msgid "Archaelogical file" msgstr "" -#: forms.py:627 forms.py:629 models.py:269 +#: forms.py:629 forms.py:631 models.py:269 msgid "Abstract" msgstr "" -#: forms.py:632 +#: forms.py:634 msgid "months" msgstr "" -#: forms.py:632 +#: forms.py:634 msgid "years" msgstr "" -#: forms.py:634 models.py:175 +#: forms.py:636 models.py:175 msgid "Creation date" msgstr "" -#: forms.py:635 +#: forms.py:637 msgid "Start of field work" msgstr "" -#: forms.py:637 +#: forms.py:639 msgid "All" msgstr "" -#: forms.py:638 +#: forms.py:640 msgid "Preventive" msgstr "" -#: forms.py:639 +#: forms.py:641 msgid "Research" msgstr "" -#: forms.py:643 +#: forms.py:645 msgid "Slicing" msgstr "" -#: forms.py:646 +#: forms.py:648 msgid "Department detail" msgstr "" -#: forms.py:648 +#: forms.py:650 msgid "Date get from" msgstr "" -#: forms.py:650 +#: forms.py:652 msgid "Preventive/Research" msgstr "" -#: forms.py:656 +#: forms.py:658 msgid "Date after" msgstr "" -#: forms.py:658 +#: forms.py:660 msgid "Date before" msgstr "" -#: forms.py:660 +#: forms.py:662 msgid "With reports" msgstr "" -#: forms.py:661 +#: forms.py:663 msgid "With finds" msgstr "" -#: forms.py:713 forms.py:1264 templates/ishtar/sheet_administrativeact.html:13 +#: forms.py:715 forms.py:1274 templates/ishtar/sheet_administrativeact.html:13 #: templates/ishtar/sheet_operation.html:30 msgid "General" msgstr "" -#: forms.py:727 models.py:254 +#: forms.py:729 models.py:254 msgid "Generic name" msgstr "" -#: forms.py:736 models.py:223 +#: forms.py:738 models.py:223 msgid "Old code" msgstr "" -#: forms.py:739 +#: forms.py:741 msgid "Head scientist" msgstr "" -#: forms.py:755 models.py:253 +#: forms.py:757 models.py:253 msgid "Operator reference" msgstr "" -#: forms.py:767 +#: forms.py:769 msgid "Total surface (m2)" msgstr "" -#: forms.py:774 models.py:50 models.py:178 models.py:988 +#: forms.py:776 models.py:50 models.py:178 models.py:988 msgid "Start date" msgstr "" -#: forms.py:776 models.py:180 +#: forms.py:778 models.py:180 msgid "Excavation end date" msgstr "" -#: forms.py:779 models.py:181 +#: forms.py:781 models.py:181 msgid "Report delivery date" msgstr "" -#: forms.py:829 +#: forms.py:833 msgid "" "If you want to set an excavation end date you have to provide a start date." msgstr "" -#: forms.py:834 +#: forms.py:838 msgid "The excavation end date cannot be before the start date." msgstr "" -#: forms.py:862 +#: forms.py:866 #, python-format msgid "" "Operation code already exist for year: %(year)d - use a value bigger than " "%(last_val)d" msgstr "" -#: forms.py:866 +#: forms.py:870 msgid "Bad operation code" msgstr "" -#: forms.py:872 models.py:195 models.py:405 +#: forms.py:876 models.py:195 models.py:405 msgid "Operation code" msgstr "" -#: forms.py:898 +#: forms.py:902 msgid "Preventive informations - excavation" msgstr "" -#: forms.py:899 models.py:207 +#: forms.py:903 models.py:207 #: templates/ishtar/dashboards/dashboard_operation.html:699 msgid "Cost (euros)" msgstr "" -#: forms.py:900 models.py:212 +#: forms.py:904 models.py:212 msgid "Scheduled man-days" msgstr "" -#: forms.py:902 models.py:215 +#: forms.py:906 models.py:215 msgid "Optional man-days" msgstr "" -#: forms.py:904 models.py:218 +#: forms.py:908 models.py:218 msgid "Effective man-days" msgstr "" -#: forms.py:914 +#: forms.py:918 msgid "Preventive informations - diagnostic" msgstr "" -#: forms.py:917 models.py:237 +#: forms.py:921 models.py:237 msgid "Prescription on zoning" msgstr "" -#: forms.py:919 models.py:240 +#: forms.py:923 models.py:240 msgid "Prescription on large area" msgstr "" -#: forms.py:922 models.py:242 +#: forms.py:926 models.py:242 msgid "Prescription on geoarchaeological context" msgstr "" -#: forms.py:926 forms.py:948 models.py:206 models.py:628 +#: forms.py:930 forms.py:952 models.py:206 models.py:628 msgid "Towns" msgstr "" -#: forms.py:955 models.py:814 models.py:986 +#: forms.py:959 models.py:814 models.py:986 msgid "Parcel" msgstr "" -#: forms.py:1007 models.py:44 +#: forms.py:1011 models.py:44 msgid "Remain types" msgstr "" -#: forms.py:1011 models.py:43 +#: forms.py:1015 models.py:43 msgid "Remain type" msgstr "" -#: forms.py:1026 +#: forms.py:1031 msgid "Period" msgstr "" -#: forms.py:1037 models.py:77 +#: forms.py:1043 models.py:77 msgid "Reference" msgstr "" -#: forms.py:1062 +#: forms.py:1072 msgid "This reference already exists." msgstr "" -#: forms.py:1079 models.py:86 +#: forms.py:1089 models.py:86 msgid "Archaeological site" msgstr "" -#: forms.py:1094 models.py:87 models.py:259 +#: forms.py:1104 models.py:87 models.py:259 #: templates/ishtar/sheet_operation.html:125 msgid "Archaeological sites" msgstr "" -#: forms.py:1098 +#: forms.py:1108 msgid "Associated archaelogical sites" msgstr "" -#: forms.py:1104 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92 +#: forms.py:1114 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92 msgid "Search" msgstr "" -#: forms.py:1109 +#: forms.py:1119 msgid "Would you like to close this operation?" msgstr "" -#: forms.py:1114 +#: forms.py:1124 msgid "Would you like to delete this operation?" msgstr "" -#: forms.py:1123 forms.py:1193 forms.py:1328 models.py:545 models.py:595 +#: forms.py:1133 forms.py:1203 forms.py:1339 models.py:545 models.py:595 msgid "Index" msgstr "" -#: forms.py:1149 +#: forms.py:1159 #, python-format msgid "" "Index already exists for operation: %(operation)s - use a value bigger than " "%(last_val)d" msgstr "" -#: forms.py:1161 +#: forms.py:1171 msgid "Operation's year" msgstr "" -#: forms.py:1168 +#: forms.py:1178 msgid "Operation's town" msgstr "" -#: forms.py:1181 +#: forms.py:1191 msgid "Documentation search" msgstr "" -#: forms.py:1183 +#: forms.py:1193 msgid "You should select a document." msgstr "" -#: forms.py:1200 forms.py:1267 models.py:570 models.py:589 +#: forms.py:1210 forms.py:1277 models.py:570 models.py:589 msgid "Act type" msgstr "" -#: forms.py:1201 forms.py:1398 +#: forms.py:1211 forms.py:1409 msgid "Indexed?" msgstr "" -#: forms.py:1207 forms.py:1272 models.py:619 +#: forms.py:1217 forms.py:1282 models.py:619 #: templates/ishtar/blocks/window_tables/administrativacts.html:10 msgid "Object" msgstr "" -#: forms.py:1244 views.py:403 +#: forms.py:1254 views.py:403 msgid "Administrative act search" msgstr "" -#: forms.py:1259 forms.py:1356 forms.py:1423 +#: forms.py:1269 forms.py:1367 forms.py:1434 msgid "You should select an administrative act." msgstr "" -#: forms.py:1275 models.py:616 +#: forms.py:1285 models.py:616 msgid "Signature date" msgstr "" -#: forms.py:1316 +#: forms.py:1327 #, python-format msgid "" "This index already exist for year: %(year)d - use a value bigger than " "%(last_val)d" msgstr "" -#: forms.py:1320 +#: forms.py:1331 msgid "Bad index" msgstr "" -#: forms.py:1333 +#: forms.py:1344 msgid "Would you like to delete this administrative act?" msgstr "" -#: forms.py:1338 +#: forms.py:1349 msgid "Template" msgstr "" -#: forms.py:1362 forms.py:1366 +#: forms.py:1373 forms.py:1377 msgid "This document is not intended for this type of act." msgstr "" -#: forms.py:1384 +#: forms.py:1395 msgid "Doc generation" msgstr "" -#: forms.py:1386 +#: forms.py:1397 msgid "Generate the associated doc?" msgstr "" -#: forms.py:1407 ishtar_menu.py:121 views.py:456 +#: forms.py:1418 ishtar_menu.py:121 views.py:456 msgctxt "admin act register" msgid "Register" msgstr "" diff --git a/archaeological_warehouse/locale/django.pot b/archaeological_warehouse/locale/django.pot index 264ef3791..c00e26082 100644 --- a/archaeological_warehouse/locale/django.pot +++ b/archaeological_warehouse/locale/django.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" -#: forms.py:34 forms.py:96 models.py:44 models.py:73 +#: forms.py:34 forms.py:97 models.py:44 models.py:73 msgid "Warehouse" msgstr "" @@ -22,7 +22,7 @@ msgstr "" msgid "Person in charge" msgstr "" -#: forms.py:54 forms.py:101 models.py:41 models.py:77 +#: forms.py:54 forms.py:102 models.py:41 models.py:77 msgid "Comment" msgstr "" @@ -50,43 +50,43 @@ msgstr "" msgid "Phone" msgstr "" -#: forms.py:92 models.py:80 +#: forms.py:93 models.py:80 msgid "Container" msgstr "" -#: forms.py:93 forms.py:127 models.py:63 +#: forms.py:94 forms.py:129 models.py:63 msgid "Ref." msgstr "" -#: forms.py:94 forms.py:126 models.py:66 models.py:75 +#: forms.py:95 forms.py:128 models.py:66 models.py:75 msgid "Container type" msgstr "" -#: forms.py:137 +#: forms.py:139 msgid "Container search" msgstr "" -#: forms.py:139 +#: forms.py:141 msgid "You should select a container." msgstr "" -#: forms.py:140 +#: forms.py:142 msgid "Add a new container" msgstr "" -#: forms.py:144 ishtar_menu.py:33 views.py:94 +#: forms.py:146 ishtar_menu.py:33 views.py:94 msgid "Packaging" msgstr "" -#: forms.py:151 +#: forms.py:153 msgid "Packager" msgstr "" -#: forms.py:157 +#: forms.py:159 msgid "Date" msgstr "" -#: forms.py:166 +#: forms.py:168 msgid "Packaged finds" msgstr "" diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot index 79a65ce86..a8a0a8682 100644 --- a/ishtar_common/locale/django.pot +++ b/ishtar_common/locale/django.pot @@ -24,7 +24,7 @@ msgstr "" msgid "Archaeological file" msgstr "" -#: context_processors.py:39 models.py:1457 +#: context_processors.py:39 models.py:1486 msgid "Operation" msgstr "" @@ -147,7 +147,7 @@ msgstr "" msgid "Enter a valid name consisting of letters, spaces and hyphens." msgstr "" -#: forms.py:71 forms_common.py:490 +#: forms.py:71 forms_common.py:499 msgid "Confirm" msgstr "" @@ -171,18 +171,18 @@ msgstr "" msgid "Add a new item" msgstr "" -#: forms.py:204 models.py:1234 +#: forms.py:235 models.py:1255 msgid "Template" msgstr "" -#: forms_common.py:39 forms_common.py:57 forms_common.py:170 -#: forms_common.py:293 models.py:1300 models.py:2583 +#: forms_common.py:40 forms_common.py:58 forms_common.py:171 +#: forms_common.py:296 models.py:1321 models.py:2618 #: templates/blocks/JQueryAdvancedTown.html:19 #: templates/ishtar/sheet_organization.html:13 msgid "Town" msgstr "" -#: forms_common.py:41 +#: forms_common.py:42 msgid "" "

Type name, department code and/or postal code of the town you would like " "to select. The search is insensitive to case.

\n" @@ -192,70 +192,70 @@ msgid "" "french town Saint-Denis in the Seine-Saint-Denis department.

" msgstr "" -#: forms_common.py:66 forms_common.py:718 ishtar_menu.py:47 models.py:1455 -#: models.py:2255 models.py:2407 models.py:2464 +#: forms_common.py:67 forms_common.py:728 ishtar_menu.py:47 models.py:1484 +#: models.py:2295 models.py:2442 models.py:2499 #: templates/ishtar/sheet_person.html:4 msgid "Person" msgstr "" -#: forms_common.py:158 forms_common.py:234 forms_common.py:336 -#: ishtar_menu.py:71 models.py:1456 models.py:2172 +#: forms_common.py:159 forms_common.py:236 forms_common.py:341 +#: ishtar_menu.py:71 models.py:1485 models.py:2202 #: templates/ishtar/sheet_organization.html:4 msgid "Organization" msgstr "" -#: forms_common.py:161 forms_common.py:197 forms_common.py:229 -#: forms_common.py:263 forms_common.py:331 models.py:902 models.py:1233 -#: models.py:1501 models.py:1719 models.py:2166 models.py:2242 models.py:2569 +#: forms_common.py:162 forms_common.py:199 forms_common.py:231 +#: forms_common.py:266 forms_common.py:336 models.py:923 models.py:1254 +#: models.py:1530 models.py:1748 models.py:2196 models.py:2281 models.py:2604 #: templates/ishtar/sheet_organization.html:8 #: templates/ishtar/sheet_organization.html:21 msgid "Name" msgstr "" -#: forms_common.py:162 models.py:1442 models.py:1850 +#: forms_common.py:163 models.py:1471 models.py:1879 msgid "Organization type" msgstr "" -#: forms_common.py:164 forms_common.py:287 models.py:1295 +#: forms_common.py:165 forms_common.py:290 models.py:1316 #: templates/ishtar/sheet_organization.html:10 msgid "Address" msgstr "" -#: forms_common.py:166 forms_common.py:290 models.py:1296 +#: forms_common.py:167 forms_common.py:293 models.py:1317 #: templates/ishtar/sheet_organization.html:11 msgid "Address complement" msgstr "" -#: forms_common.py:168 forms_common.py:291 models.py:1298 +#: forms_common.py:169 forms_common.py:294 models.py:1319 #: templates/ishtar/sheet_organization.html:12 msgid "Postal code" msgstr "" -#: forms_common.py:171 forms_common.py:294 models.py:1301 +#: forms_common.py:172 forms_common.py:297 models.py:1322 msgid "Country" msgstr "" -#: forms_common.py:173 forms_common.py:231 forms_common.py:267 -#: forms_common.py:333 forms_common.py:446 models.py:1328 +#: forms_common.py:174 forms_common.py:233 forms_common.py:270 +#: forms_common.py:338 forms_common.py:453 models.py:1349 msgid "Email" msgstr "" -#: forms_common.py:174 forms_common.py:270 models.py:1313 +#: forms_common.py:175 forms_common.py:273 models.py:1334 #: templates/ishtar/sheet_organization.html:14 #: templates/ishtar/sheet_person.html:18 #: templates/ishtar/wizard/wizard_person.html:17 msgid "Phone" msgstr "" -#: forms_common.py:175 forms_common.py:279 models.py:1325 +#: forms_common.py:176 forms_common.py:282 models.py:1346 #: templates/ishtar/sheet_organization.html:15 #: templates/ishtar/sheet_person.html:36 #: templates/ishtar/wizard/wizard_person.html:35 msgid "Mobile phone" msgstr "" -#: forms_common.py:198 forms_common.py:232 forms_common.py:334 models.py:1877 -#: models.py:2168 models.py:2505 templates/sheet_ope.html:85 +#: forms_common.py:200 forms_common.py:234 forms_common.py:339 models.py:1907 +#: models.py:2198 models.py:2540 templates/sheet_ope.html:85 #: templates/sheet_ope.html.py:105 templates/sheet_ope.html:126 #: templates/ishtar/import_list.html:13 #: templates/ishtar/sheet_organization.html:23 @@ -263,210 +263,210 @@ msgstr "" msgid "Type" msgstr "" -#: forms_common.py:207 views.py:130 +#: forms_common.py:209 views.py:130 msgid "Organization search" msgstr "" -#: forms_common.py:230 forms_common.py:261 forms_common.py:332 models.py:2240 +#: forms_common.py:232 forms_common.py:264 forms_common.py:337 models.py:2279 #: templates/ishtar/sheet_organization.html:22 msgid "Surname" msgstr "" -#: forms_common.py:246 forms_common.py:319 views.py:95 +#: forms_common.py:248 forms_common.py:324 views.py:95 msgid "Person search" msgstr "" -#: forms_common.py:258 templates/ishtar/sheet_person.html:7 +#: forms_common.py:260 templates/ishtar/sheet_person.html:7 #: templates/ishtar/wizard/wizard_person.html:6 msgid "Identity" msgstr "" -#: forms_common.py:260 forms_common.py:644 forms_common.py:685 models.py:2238 -#: models.py:2502 templates/sheet_ope.html:104 +#: forms_common.py:263 forms_common.py:653 forms_common.py:695 models.py:1880 +#: models.py:2275 models.py:2277 models.py:2537 templates/sheet_ope.html:104 #: templates/ishtar/blocks/window_tables/documents.html:7 msgid "Title" msgstr "" -#: forms_common.py:265 models.py:2244 +#: forms_common.py:268 models.py:2283 msgid "Raw name" msgstr "" -#: forms_common.py:268 models.py:1314 +#: forms_common.py:271 models.py:1335 msgid "Phone description" msgstr "" -#: forms_common.py:271 models.py:1316 models.py:1318 +#: forms_common.py:274 models.py:1337 models.py:1339 msgid "Phone description 2" msgstr "" -#: forms_common.py:273 +#: forms_common.py:276 msgid "Phone 2" msgstr "" -#: forms_common.py:275 models.py:1322 +#: forms_common.py:278 models.py:1343 msgid "Phone description 3" msgstr "" -#: forms_common.py:277 models.py:1320 +#: forms_common.py:280 models.py:1341 msgid "Phone 3" msgstr "" -#: forms_common.py:282 +#: forms_common.py:285 msgid "Current organization" msgstr "" -#: forms_common.py:296 models.py:1303 +#: forms_common.py:299 models.py:1324 msgid "Other address: address" msgstr "" -#: forms_common.py:299 models.py:1306 +#: forms_common.py:302 models.py:1327 msgid "Other address: address complement" msgstr "" -#: forms_common.py:301 models.py:1307 +#: forms_common.py:304 models.py:1328 msgid "Other address: postal code" msgstr "" -#: forms_common.py:303 models.py:1309 +#: forms_common.py:306 models.py:1330 msgid "Other address: town" msgstr "" -#: forms_common.py:305 models.py:1311 +#: forms_common.py:308 models.py:1332 msgid "Other address: country" msgstr "" -#: forms_common.py:315 +#: forms_common.py:320 msgid "Already has an account" msgstr "" -#: forms_common.py:330 +#: forms_common.py:335 msgid "Username" msgstr "" -#: forms_common.py:348 +#: forms_common.py:353 msgid "Account search" msgstr "" -#: forms_common.py:395 forms_common.py:425 forms_common.py:429 models.py:2220 +#: forms_common.py:400 forms_common.py:431 forms_common.py:435 models.py:2250 msgid "Person type" msgstr "" -#: forms_common.py:440 forms_common.py:445 ishtar_menu.py:32 +#: forms_common.py:447 forms_common.py:452 ishtar_menu.py:32 msgid "Account" msgstr "" -#: forms_common.py:449 wizards.py:1170 +#: forms_common.py:456 wizards.py:1170 msgid "New password" msgstr "" -#: forms_common.py:452 +#: forms_common.py:459 msgid "New password (confirmation)" msgstr "" -#: forms_common.py:471 +#: forms_common.py:480 msgid "Your password and confirmation password do not match." msgstr "" -#: forms_common.py:476 +#: forms_common.py:485 msgid "You must provide a correct password." msgstr "" -#: forms_common.py:484 +#: forms_common.py:493 msgid "This username already exists." msgstr "" -#: forms_common.py:491 +#: forms_common.py:500 msgid "Send the new password by email?" msgstr "" -#: forms_common.py:500 forms_common.py:513 models.py:2584 +#: forms_common.py:509 forms_common.py:522 models.py:2619 msgid "Towns" msgstr "" -#: forms_common.py:510 +#: forms_common.py:519 msgid "There are identical towns." msgstr "" -#: forms_common.py:594 +#: forms_common.py:603 msgid "Only one choice can be checked." msgstr "" -#: forms_common.py:642 +#: forms_common.py:651 msgid "Documentation informations" msgstr "" -#: forms_common.py:646 forms_common.py:686 models.py:1851 models.py:2485 +#: forms_common.py:655 forms_common.py:696 models.py:1881 models.py:2520 msgid "Source type" msgstr "" -#: forms_common.py:648 forms_common.py:687 templates/sheet_ope.html:84 +#: forms_common.py:657 forms_common.py:697 templates/sheet_ope.html:84 msgid "Reference" msgstr "" -#: forms_common.py:651 forms_common.py:688 +#: forms_common.py:660 forms_common.py:698 msgid "Internal reference" msgstr "" -#: forms_common.py:654 models.py:2516 +#: forms_common.py:663 models.py:2551 msgid "Numerical ressource (web address)" msgstr "" -#: forms_common.py:655 models.py:2518 +#: forms_common.py:664 models.py:2553 msgid "Receipt date" msgstr "" -#: forms_common.py:657 models.py:2004 models.py:2520 +#: forms_common.py:666 models.py:2034 models.py:2555 msgid "Creation date" msgstr "" -#: forms_common.py:660 models.py:2523 +#: forms_common.py:669 models.py:2558 msgid "Receipt date in documentation" msgstr "" -#: forms_common.py:662 forms_common.py:690 models.py:287 models.py:516 -#: models.py:1746 models.py:2248 models.py:2530 +#: forms_common.py:671 forms_common.py:700 models.py:287 models.py:537 +#: models.py:1775 models.py:2287 models.py:2565 msgid "Comment" msgstr "" -#: forms_common.py:664 forms_common.py:689 models.py:904 models.py:1505 -#: models.py:1678 models.py:1720 models.py:2529 templates/sheet_ope.html:128 +#: forms_common.py:673 forms_common.py:699 models.py:925 models.py:1534 +#: models.py:1707 models.py:1749 models.py:2564 templates/sheet_ope.html:128 msgid "Description" msgstr "" -#: forms_common.py:667 models.py:2531 +#: forms_common.py:676 models.py:2566 msgid "Additional information" msgstr "" -#: forms_common.py:669 forms_common.py:693 models.py:2533 +#: forms_common.py:678 forms_common.py:703 models.py:2568 msgid "Has a duplicate" msgstr "" -#: forms_common.py:682 forms_common.py:711 forms_common.py:744 models.py:2469 +#: forms_common.py:692 forms_common.py:721 forms_common.py:755 models.py:2504 #: templates/ishtar/wizard/wizard_person_deletion.html:124 msgid "Author" msgstr "" -#: forms_common.py:692 +#: forms_common.py:702 msgid "Additional informations" msgstr "" -#: forms_common.py:703 +#: forms_common.py:713 msgid "Would you like to delete this documentation?" msgstr "" -#: forms_common.py:719 models.py:1852 models.py:2459 models.py:2466 +#: forms_common.py:729 models.py:1882 models.py:2494 models.py:2501 msgid "Author type" msgstr "" -#: forms_common.py:737 +#: forms_common.py:748 msgid "Author selection" msgstr "" -#: forms_common.py:751 +#: forms_common.py:762 msgid "There are identical authors." msgstr "" -#: forms_common.py:755 models.py:2470 models.py:2512 +#: forms_common.py:766 models.py:2505 models.py:2547 #: templates/sheet_ope.html:106 #: templates/ishtar/blocks/window_tables/documents.html:9 msgid "Authors" @@ -484,7 +484,7 @@ msgstr "" msgid "Deletion" msgstr "" -#: ishtar_menu.py:39 models.py:1029 views.py:1232 +#: ishtar_menu.py:39 models.py:1050 views.py:1232 msgid "Global variables" msgstr "" @@ -508,12 +508,12 @@ msgstr "" msgid "Merge" msgstr "" -#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2041 widgets.py:110 +#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2071 widgets.py:110 #: templates/ishtar/form_delete.html:11 msgid "Delete" msgstr "" -#: ishtar_menu.py:101 models.py:2015 +#: ishtar_menu.py:101 models.py:2045 msgid "Imports" msgstr "" @@ -541,7 +541,7 @@ msgstr "" msgid "This item already exists." msgstr "" -#: models.py:283 models.py:515 models.py:1268 models.py:1280 +#: models.py:283 models.py:536 models.py:1289 models.py:1301 msgid "Label" msgstr "" @@ -549,191 +549,191 @@ msgstr "" msgid "Textual ID" msgstr "" -#: models.py:288 models.py:518 models.py:1237 +#: models.py:288 models.py:539 models.py:1258 msgid "Available" msgstr "" -#: models.py:537 models.py:1792 +#: models.py:558 models.py:1821 msgid "Key" msgstr "" -#: models.py:543 +#: models.py:564 msgid "Specific key to an import" msgstr "" -#: models.py:623 +#: models.py:644 msgid "Last editor" msgstr "" -#: models.py:626 +#: models.py:647 msgid "Creator" msgstr "" -#: models.py:766 models.py:2595 +#: models.py:787 models.py:2630 msgid "Order" msgstr "" -#: models.py:767 +#: models.py:788 msgid "Symmetrical" msgstr "" -#: models.py:768 +#: models.py:789 msgid "Tiny label" msgstr "" -#: models.py:782 +#: models.py:803 msgid "Cannot have symmetrical and an inverse_relation" msgstr "" -#: models.py:896 +#: models.py:917 msgid "Euro" msgstr "" -#: models.py:897 +#: models.py:918 msgid "US dollar" msgstr "" -#: models.py:903 models.py:1503 +#: models.py:924 models.py:1532 msgid "Slug" msgstr "" -#: models.py:905 +#: models.py:926 msgid "Files module" msgstr "" -#: models.py:906 +#: models.py:927 msgid "Context records module" msgstr "" -#: models.py:908 +#: models.py:929 msgid "Finds module" msgstr "" -#: models.py:909 +#: models.py:930 msgid "Need context records module" msgstr "" -#: models.py:911 +#: models.py:932 msgid "Warehouses module" msgstr "" -#: models.py:912 +#: models.py:933 msgid "Need finds module" msgstr "" -#: models.py:914 +#: models.py:935 msgid "Home page" msgstr "" -#: models.py:915 +#: models.py:936 msgid "" "Homepage of Ishtar - if not defined a default homepage will appear. Use the " "markdown syntax." msgstr "" -#: models.py:918 +#: models.py:939 msgid "File external id" msgstr "" -#: models.py:920 +#: models.py:941 msgid "" "Formula to manage file external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:925 +#: models.py:946 msgid "Parcel external id" msgstr "" -#: models.py:928 +#: models.py:949 msgid "" "Formula to manage parcel external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:933 +#: models.py:954 msgid "Context record external id" msgstr "" -#: models.py:935 +#: models.py:956 msgid "" "Formula to manage context record external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:940 +#: models.py:961 msgid "Base find external id" msgstr "" -#: models.py:942 +#: models.py:963 msgid "" "Formula to manage base find external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:947 +#: models.py:968 msgid "Find external id" msgstr "" -#: models.py:949 +#: models.py:970 msgid "" "Formula to manage find external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:954 +#: models.py:975 msgid "Raw name for person" msgstr "" -#: models.py:956 +#: models.py:977 msgid "" "Formula to manage person raw_name. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:960 +#: models.py:981 msgid "Current active" msgstr "" -#: models.py:961 +#: models.py:982 msgid "Currency" msgstr "" -#: models.py:965 +#: models.py:986 msgid "Ishtar site profile" msgstr "" -#: models.py:966 +#: models.py:987 msgid "Ishtar site profiles" msgstr "" -#: models.py:1022 +#: models.py:1043 msgid "Variable name" msgstr "" -#: models.py:1023 +#: models.py:1044 msgid "Description of the variable" msgstr "" -#: models.py:1025 models.py:1793 +#: models.py:1046 models.py:1822 msgid "Value" msgstr "" -#: models.py:1028 +#: models.py:1049 msgid "Global variable" msgstr "" -#: models.py:1138 models.py:1168 +#: models.py:1159 models.py:1189 msgid "Total" msgstr "" -#: models.py:1145 models.py:1269 models.py:1281 +#: models.py:1166 models.py:1290 models.py:1302 #: templates/ishtar/sheet_person.html:21 #: templates/ishtar/dashboards/dashboard_main_detail.html:141 #: templates/ishtar/dashboards/dashboard_main_detail_users.html:26 @@ -741,581 +741,589 @@ msgstr "" msgid "Number" msgstr "" -#: models.py:1232 +#: models.py:1253 msgid "Administrative Act" msgstr "" -#: models.py:1236 +#: models.py:1257 msgid "Associated object" msgstr "" -#: models.py:1240 +#: models.py:1261 msgid "Document template" msgstr "" -#: models.py:1241 +#: models.py:1262 msgid "Document templates" msgstr "" -#: models.py:1272 models.py:1282 models.py:1999 +#: models.py:1293 models.py:1303 models.py:2029 msgid "State" msgstr "" -#: models.py:1286 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:1307 templates/blocks/JQueryAdvancedTown.html:12 msgid "Department" msgstr "" -#: models.py:1287 +#: models.py:1308 msgid "Departments" msgstr "" -#: models.py:1324 +#: models.py:1345 msgid "Raw phone" msgstr "" -#: models.py:1330 +#: models.py:1351 msgid "Alternative address is prefered" msgstr "" -#: models.py:1369 +#: models.py:1390 msgid "Tel: " msgstr "" -#: models.py:1373 +#: models.py:1394 msgid "Mobile: " msgstr "" -#: models.py:1377 +#: models.py:1398 msgid "Email: " msgstr "" -#: models.py:1382 +#: models.py:1403 msgid "Merge key" msgstr "" -#: models.py:1443 +#: models.py:1472 msgid "Organization types" msgstr "" -#: models.py:1459 +#: models.py:1488 msgid "Archaeological site" msgstr "" -#: models.py:1460 +#: models.py:1489 msgid "Parcels" msgstr "" -#: models.py:1462 +#: models.py:1491 msgid "Operation source" msgstr "" -#: models.py:1465 views.py:1057 views.py:1108 +#: models.py:1494 views.py:1057 views.py:1108 msgid "Archaeological files" msgstr "" -#: models.py:1467 views.py:1060 views.py:1116 +#: models.py:1496 views.py:1060 views.py:1116 msgid "Context records" msgstr "" -#: models.py:1469 +#: models.py:1498 msgid "Context record relations" msgstr "" -#: models.py:1471 views.py:1062 views.py:1119 +#: models.py:1500 views.py:1062 views.py:1119 msgid "Finds" msgstr "" -#: models.py:1507 templates/ishtar/dashboards/dashboard_main.html:25 +#: models.py:1536 templates/ishtar/dashboards/dashboard_main.html:25 msgid "Users" msgstr "" -#: models.py:1509 +#: models.py:1538 msgid "Associated model" msgstr "" -#: models.py:1512 +#: models.py:1541 msgid "Is template" msgstr "" -#: models.py:1513 +#: models.py:1542 msgid "Unicity keys (separator \";\")" msgstr "" -#: models.py:1517 +#: models.py:1546 msgid "Importer - Type" msgstr "" -#: models.py:1518 +#: models.py:1547 msgid "Importer - Types" msgstr "" -#: models.py:1608 +#: models.py:1637 msgid "Importer - Default" msgstr "" -#: models.py:1609 +#: models.py:1638 msgid "Importer - Defaults" msgstr "" -#: models.py:1644 +#: models.py:1673 msgid "Importer - Default value" msgstr "" -#: models.py:1645 +#: models.py:1674 msgid "Importer - Default values" msgstr "" -#: models.py:1677 +#: models.py:1706 msgid "Column number" msgstr "" -#: models.py:1680 +#: models.py:1709 msgid "Required" msgstr "" -#: models.py:1683 +#: models.py:1712 msgid "Importer - Column" msgstr "" -#: models.py:1684 +#: models.py:1713 msgid "Importer - Columns" msgstr "" -#: models.py:1704 +#: models.py:1733 msgid "Field name" msgstr "" -#: models.py:1706 models.py:1740 +#: models.py:1735 models.py:1769 msgid "Force creation of new items" msgstr "" -#: models.py:1708 models.py:1742 +#: models.py:1737 models.py:1771 msgid "Concatenate with existing" msgstr "" -#: models.py:1710 models.py:1744 +#: models.py:1739 models.py:1773 msgid "Concatenate character" msgstr "" -#: models.py:1714 +#: models.py:1743 msgid "Importer - Duplicate field" msgstr "" -#: models.py:1715 +#: models.py:1744 msgid "Importer - Duplicate fields" msgstr "" -#: models.py:1722 +#: models.py:1751 msgid "Regular expression" msgstr "" -#: models.py:1725 +#: models.py:1754 msgid "Importer - Regular expression" msgstr "" -#: models.py:1726 +#: models.py:1755 msgid "Importer - Regular expressions" msgstr "" -#: models.py:1749 +#: models.py:1778 msgid "Importer - Target" msgstr "" -#: models.py:1750 +#: models.py:1779 msgid "Importer - Targets" msgstr "" -#: models.py:1774 views.py:343 +#: models.py:1803 views.py:343 msgid "True" msgstr "" -#: models.py:1775 views.py:345 +#: models.py:1804 views.py:345 msgid "False" msgstr "" -#: models.py:1794 +#: models.py:1823 msgid "Is set" msgstr "" -#: models.py:1801 +#: models.py:1830 msgid "Importer - Target key" msgstr "" -#: models.py:1802 +#: models.py:1831 msgid "Importer - Targets keys" msgstr "" -#: models.py:1853 models.py:2497 models.py:2508 +#: models.py:1883 models.py:2532 models.py:2543 msgid "Format" msgstr "" -#: models.py:1854 models.py:2599 +#: models.py:1884 models.py:2634 msgid "Operation type" msgstr "" -#: models.py:1855 +#: models.py:1885 msgid "Period" msgstr "" -#: models.py:1856 +#: models.py:1886 msgid "Report state" msgstr "" -#: models.py:1857 +#: models.py:1887 msgid "Unit" msgstr "" -#: models.py:1858 +#: models.py:1888 msgid "Material" msgstr "" -#: models.py:1860 +#: models.py:1890 msgid "Conservatory state" msgstr "" -#: models.py:1861 +#: models.py:1891 msgid "Preservation type" msgstr "" -#: models.py:1862 +#: models.py:1892 msgid "Object type" msgstr "" -#: models.py:1864 +#: models.py:1894 msgid "Identification type" msgstr "" -#: models.py:1866 +#: models.py:1896 msgid "Context record relation type" msgstr "" -#: models.py:1867 models.py:2491 +#: models.py:1897 models.py:2526 msgid "Support type" msgstr "" -#: models.py:1873 +#: models.py:1903 msgid "Integer" msgstr "" -#: models.py:1874 +#: models.py:1904 msgid "Float" msgstr "" -#: models.py:1875 +#: models.py:1905 msgid "String" msgstr "" -#: models.py:1876 templates/sheet_ope.html:86 +#: models.py:1906 templates/sheet_ope.html:86 msgid "Date" msgstr "" -#: models.py:1878 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 +#: models.py:1908 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 #: templates/ishtar/dashboards/dashboard_main_detail.html:126 msgid "Year" msgstr "" -#: models.py:1879 +#: models.py:1909 msgid "String to boolean" msgstr "" -#: models.py:1880 +#: models.py:1910 msgctxt "filesystem" msgid "File" msgstr "" -#: models.py:1881 +#: models.py:1911 msgid "Unknow type" msgstr "" -#: models.py:1897 +#: models.py:1927 msgid "4 digit year. e.g.: \"2015\"" msgstr "" -#: models.py:1898 +#: models.py:1928 msgid "4 digit year/month/day. e.g.: \"2015/02/04\"" msgstr "" -#: models.py:1899 +#: models.py:1929 msgid "Day/month/4 digit year. e.g.: \"04/02/2015\"" msgstr "" -#: models.py:1909 +#: models.py:1939 msgid "Options" msgstr "" -#: models.py:1911 +#: models.py:1941 msgid "Split character(s)" msgstr "" -#: models.py:1915 +#: models.py:1945 msgid "Importer - Formater type" msgstr "" -#: models.py:1916 +#: models.py:1946 msgid "Importer - Formater types" msgstr "" -#: models.py:1963 templates/ishtar/dashboards/dashboard_main_detail.html:63 +#: models.py:1993 templates/ishtar/dashboards/dashboard_main_detail.html:63 msgid "Created" msgstr "" -#: models.py:1964 +#: models.py:1994 msgid "Analyse in progress" msgstr "" -#: models.py:1965 +#: models.py:1995 msgid "Analysed" msgstr "" -#: models.py:1966 +#: models.py:1996 msgid "Import pending" msgstr "" -#: models.py:1967 +#: models.py:1997 msgid "Import in progress" msgstr "" -#: models.py:1968 +#: models.py:1998 msgid "Finished with errors" msgstr "" -#: models.py:1969 +#: models.py:1999 msgid "Finished" msgstr "" -#: models.py:1970 +#: models.py:2000 msgid "Archived" msgstr "" -#: models.py:1982 +#: models.py:2012 msgid "Imported file" msgstr "" -#: models.py:1985 +#: models.py:2015 msgid "Associated images (zip file)" msgstr "" -#: models.py:1987 +#: models.py:2017 msgid "Encoding" msgstr "" -#: models.py:1989 +#: models.py:2019 msgid "Skip lines" msgstr "" -#: models.py:1990 templates/ishtar/import_list.html:47 +#: models.py:2020 templates/ishtar/import_list.html:47 msgid "Error file" msgstr "" -#: models.py:1993 +#: models.py:2023 msgid "Result file" msgstr "" -#: models.py:1996 templates/ishtar/import_list.html:53 +#: models.py:2026 templates/ishtar/import_list.html:53 msgid "Match file" msgstr "" -#: models.py:2002 +#: models.py:2032 msgid "Conservative import" msgstr "" -#: models.py:2007 +#: models.py:2037 msgid "End date" msgstr "" -#: models.py:2009 +#: models.py:2039 msgid "Remaining seconds" msgstr "" -#: models.py:2014 +#: models.py:2044 msgid "Import" msgstr "" -#: models.py:2031 +#: models.py:2061 msgid "Analyse" msgstr "" -#: models.py:2033 models.py:2036 +#: models.py:2063 models.py:2066 msgid "Re-analyse" msgstr "" -#: models.py:2034 +#: models.py:2064 msgid "Launch import" msgstr "" -#: models.py:2037 +#: models.py:2067 msgid "Re-import" msgstr "" -#: models.py:2038 +#: models.py:2068 msgid "Archive" msgstr "" -#: models.py:2040 +#: models.py:2070 msgid "Unarchive" msgstr "" -#: models.py:2173 +#: models.py:2203 msgid "Organizations" msgstr "" -#: models.py:2175 +#: models.py:2205 msgid "Can view all Organizations" msgstr "" -#: models.py:2176 +#: models.py:2206 msgid "Can view own Organization" msgstr "" -#: models.py:2177 +#: models.py:2207 msgid "Can add own Organization" msgstr "" -#: models.py:2179 +#: models.py:2209 msgid "Can change own Organization" msgstr "" -#: models.py:2181 +#: models.py:2211 msgid "Can delete own Organization" msgstr "" -#: models.py:2216 +#: models.py:2246 msgid "Groups" msgstr "" -#: models.py:2221 +#: models.py:2251 msgid "Person types" msgstr "" -#: models.py:2228 +#: models.py:2257 +msgid "Title type" +msgstr "" + +#: models.py:2258 +msgid "Title types" +msgstr "" + +#: models.py:2265 msgid "Mr" msgstr "" -#: models.py:2229 +#: models.py:2266 msgid "Miss" msgstr "" -#: models.py:2230 +#: models.py:2267 msgid "Mr and Mrs" msgstr "" -#: models.py:2231 +#: models.py:2268 msgid "Mrs" msgstr "" -#: models.py:2232 +#: models.py:2269 msgid "Doctor" msgstr "" -#: models.py:2246 +#: models.py:2285 msgid "Contact type" msgstr "" -#: models.py:2249 models.py:2296 +#: models.py:2288 models.py:2331 msgid "Types" msgstr "" -#: models.py:2252 +#: models.py:2291 msgid "Is attached to" msgstr "" -#: models.py:2256 +#: models.py:2296 msgid "Persons" msgstr "" -#: models.py:2258 +#: models.py:2298 msgid "Can view all Persons" msgstr "" -#: models.py:2259 +#: models.py:2299 msgid "Can view own Person" msgstr "" -#: models.py:2260 +#: models.py:2300 msgid "Can add own Person" msgstr "" -#: models.py:2261 +#: models.py:2301 msgid "Can change own Person" msgstr "" -#: models.py:2262 +#: models.py:2302 msgid "Can delete own Person" msgstr "" -#: models.py:2411 +#: models.py:2446 msgid "Ishtar user" msgstr "" -#: models.py:2412 +#: models.py:2447 msgid "Ishtar users" msgstr "" -#: models.py:2454 +#: models.py:2489 msgid "To modify the password use the form in Auth > User" msgstr "" -#: models.py:2460 +#: models.py:2495 msgid "Author types" msgstr "" -#: models.py:2486 +#: models.py:2521 msgid "Source types" msgstr "" -#: models.py:2492 +#: models.py:2527 msgid "Support types" msgstr "" -#: models.py:2498 +#: models.py:2533 msgid "Formats" msgstr "" -#: models.py:2503 +#: models.py:2538 msgid "External ID" msgstr "" -#: models.py:2506 +#: models.py:2541 msgid "Support" msgstr "" -#: models.py:2510 +#: models.py:2545 msgid "Scale" msgstr "" -#: models.py:2524 +#: models.py:2559 msgid "Item number" msgstr "" -#: models.py:2525 +#: models.py:2560 msgid "Ref." msgstr "" -#: models.py:2528 +#: models.py:2563 msgid "Internal ref." msgstr "" -#: models.py:2570 +#: models.py:2605 msgid "Surface (m2)" msgstr "" -#: models.py:2571 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 +#: models.py:2606 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 msgid "Localisation" msgstr "" -#: models.py:2596 +#: models.py:2631 msgid "Is preventive" msgstr "" -#: models.py:2600 +#: models.py:2635 msgid "Operation types" msgstr "" -#: models.py:2626 +#: models.py:2661 msgid "Preventive" msgstr "" -#: models.py:2627 +#: models.py:2662 msgid "Research" msgstr "" @@ -1983,6 +1991,14 @@ msgstr "" msgid "No person in this organization" msgstr "" +#: templates/ishtar/sheet_organization.html:38 +msgid "General contractor organization of archaelogical files" +msgstr "" + +#: templates/ishtar/sheet_organization.html:43 +msgid "Town planning service of archaelogical files" +msgstr "" + #: templates/ishtar/sheet_person.html:20 #: templates/ishtar/wizard/wizard_person.html:19 msgid "Phone type" @@ -2010,19 +2026,27 @@ msgstr "" msgid "Associated operations as responsible" msgstr "" -#: templates/ishtar/sheet_person.html:80 -msgid "Associated archaelogical files" +#: templates/ishtar/sheet_person.html:79 +msgid "In charge of archaelogical files" +msgstr "" + +#: templates/ishtar/sheet_person.html:84 +msgid "General contractor of archaelogical files" +msgstr "" + +#: templates/ishtar/sheet_person.html:89 +msgid "Responsible for town planning service of archaelogical files" msgstr "" -#: templates/ishtar/sheet_person.html:86 +#: templates/ishtar/sheet_person.html:95 msgid "Documents associated to operations" msgstr "" -#: templates/ishtar/sheet_person.html:91 +#: templates/ishtar/sheet_person.html:100 msgid "Documents associated to context records" msgstr "" -#: templates/ishtar/sheet_person.html:96 +#: templates/ishtar/sheet_person.html:105 msgid "Documents associated to finds" msgstr "" diff --git a/translations/de/ishtar_common.po b/translations/de/ishtar_common.po index 32f5c3109..94c3ec5cd 100644 --- a/translations/de/ishtar_common.po +++ b/translations/de/ishtar_common.po @@ -8,7 +8,7 @@ msgstr "" "Last-Translator: Valérie-Emma Leroux \n" "Language-Team: German (Germany)\n" "Language: de-DE\n" -"X-Generator: Zanata 3.9.3\n" +"X-Generator: Zanata 3.9.5\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: __init__.py:8 @@ -27,7 +27,7 @@ msgstr "" msgid "Archaeological file" msgstr "" -#: context_processors.py:39 models.py:1457 +#: context_processors.py:39 models.py:1486 msgid "Operation" msgstr "" @@ -150,7 +150,7 @@ msgstr "" msgid "Enter a valid name consisting of letters, spaces and hyphens." msgstr "" -#: forms.py:71 forms_common.py:490 +#: forms.py:71 forms_common.py:499 msgid "Confirm" msgstr "" @@ -174,18 +174,18 @@ msgstr "" msgid "Add a new item" msgstr "" -#: forms.py:204 models.py:1234 +#: forms.py:235 models.py:1255 msgid "Template" msgstr "" -#: forms_common.py:39 forms_common.py:57 forms_common.py:170 -#: forms_common.py:293 models.py:1300 models.py:2583 +#: forms_common.py:40 forms_common.py:58 forms_common.py:171 +#: forms_common.py:296 models.py:1321 models.py:2618 #: templates/blocks/JQueryAdvancedTown.html:19 #: templates/ishtar/sheet_organization.html:13 msgid "Town" msgstr "" -#: forms_common.py:41 +#: forms_common.py:42 msgid "" "

Type name, department code and/or postal code of the town you would like " "to select. The search is insensitive to case.

\n" @@ -195,70 +195,70 @@ msgid "" "french town Saint-Denis in the Seine-Saint-Denis department.

" msgstr "" -#: forms_common.py:66 forms_common.py:718 ishtar_menu.py:47 models.py:1455 -#: models.py:2255 models.py:2407 models.py:2464 +#: forms_common.py:67 forms_common.py:728 ishtar_menu.py:47 models.py:1484 +#: models.py:2295 models.py:2442 models.py:2499 #: templates/ishtar/sheet_person.html:4 msgid "Person" msgstr "" -#: forms_common.py:158 forms_common.py:234 forms_common.py:336 -#: ishtar_menu.py:71 models.py:1456 models.py:2172 +#: forms_common.py:159 forms_common.py:236 forms_common.py:341 +#: ishtar_menu.py:71 models.py:1485 models.py:2202 #: templates/ishtar/sheet_organization.html:4 msgid "Organization" msgstr "" -#: forms_common.py:161 forms_common.py:197 forms_common.py:229 -#: forms_common.py:263 forms_common.py:331 models.py:902 models.py:1233 -#: models.py:1501 models.py:1719 models.py:2166 models.py:2242 models.py:2569 +#: forms_common.py:162 forms_common.py:199 forms_common.py:231 +#: forms_common.py:266 forms_common.py:336 models.py:923 models.py:1254 +#: models.py:1530 models.py:1748 models.py:2196 models.py:2281 models.py:2604 #: templates/ishtar/sheet_organization.html:8 #: templates/ishtar/sheet_organization.html:21 msgid "Name" msgstr "" -#: forms_common.py:162 models.py:1442 models.py:1850 +#: forms_common.py:163 models.py:1471 models.py:1879 msgid "Organization type" msgstr "" -#: forms_common.py:164 forms_common.py:287 models.py:1295 +#: forms_common.py:165 forms_common.py:290 models.py:1316 #: templates/ishtar/sheet_organization.html:10 msgid "Address" msgstr "" -#: forms_common.py:166 forms_common.py:290 models.py:1296 +#: forms_common.py:167 forms_common.py:293 models.py:1317 #: templates/ishtar/sheet_organization.html:11 msgid "Address complement" msgstr "" -#: forms_common.py:168 forms_common.py:291 models.py:1298 +#: forms_common.py:169 forms_common.py:294 models.py:1319 #: templates/ishtar/sheet_organization.html:12 msgid "Postal code" msgstr "" -#: forms_common.py:171 forms_common.py:294 models.py:1301 +#: forms_common.py:172 forms_common.py:297 models.py:1322 msgid "Country" msgstr "" -#: forms_common.py:173 forms_common.py:231 forms_common.py:267 -#: forms_common.py:333 forms_common.py:446 models.py:1328 +#: forms_common.py:174 forms_common.py:233 forms_common.py:270 +#: forms_common.py:338 forms_common.py:453 models.py:1349 msgid "Email" msgstr "" -#: forms_common.py:174 forms_common.py:270 models.py:1313 +#: forms_common.py:175 forms_common.py:273 models.py:1334 #: templates/ishtar/sheet_organization.html:14 #: templates/ishtar/sheet_person.html:18 #: templates/ishtar/wizard/wizard_person.html:17 msgid "Phone" msgstr "" -#: forms_common.py:175 forms_common.py:279 models.py:1325 +#: forms_common.py:176 forms_common.py:282 models.py:1346 #: templates/ishtar/sheet_organization.html:15 #: templates/ishtar/sheet_person.html:36 #: templates/ishtar/wizard/wizard_person.html:35 msgid "Mobile phone" msgstr "" -#: forms_common.py:198 forms_common.py:232 forms_common.py:334 models.py:1877 -#: models.py:2168 models.py:2505 templates/sheet_ope.html:85 +#: forms_common.py:200 forms_common.py:234 forms_common.py:339 models.py:1907 +#: models.py:2198 models.py:2540 templates/sheet_ope.html:85 #: templates/sheet_ope.html.py:105 templates/sheet_ope.html:126 #: templates/ishtar/import_list.html:13 #: templates/ishtar/sheet_organization.html:23 @@ -266,210 +266,210 @@ msgstr "" msgid "Type" msgstr "" -#: forms_common.py:207 views.py:130 +#: forms_common.py:209 views.py:130 msgid "Organization search" msgstr "" -#: forms_common.py:230 forms_common.py:261 forms_common.py:332 models.py:2240 +#: forms_common.py:232 forms_common.py:264 forms_common.py:337 models.py:2279 #: templates/ishtar/sheet_organization.html:22 msgid "Surname" msgstr "" -#: forms_common.py:246 forms_common.py:319 views.py:95 +#: forms_common.py:248 forms_common.py:324 views.py:95 msgid "Person search" msgstr "" -#: forms_common.py:258 templates/ishtar/sheet_person.html:7 +#: forms_common.py:260 templates/ishtar/sheet_person.html:7 #: templates/ishtar/wizard/wizard_person.html:6 msgid "Identity" msgstr "" -#: forms_common.py:260 forms_common.py:644 forms_common.py:685 models.py:2238 -#: models.py:2502 templates/sheet_ope.html:104 +#: forms_common.py:263 forms_common.py:653 forms_common.py:695 models.py:1880 +#: models.py:2275 models.py:2277 models.py:2537 templates/sheet_ope.html:104 #: templates/ishtar/blocks/window_tables/documents.html:7 msgid "Title" msgstr "" -#: forms_common.py:265 models.py:2244 +#: forms_common.py:268 models.py:2283 msgid "Raw name" msgstr "" -#: forms_common.py:268 models.py:1314 +#: forms_common.py:271 models.py:1335 msgid "Phone description" msgstr "" -#: forms_common.py:271 models.py:1316 models.py:1318 +#: forms_common.py:274 models.py:1337 models.py:1339 msgid "Phone description 2" msgstr "" -#: forms_common.py:273 +#: forms_common.py:276 msgid "Phone 2" msgstr "" -#: forms_common.py:275 models.py:1322 +#: forms_common.py:278 models.py:1343 msgid "Phone description 3" msgstr "" -#: forms_common.py:277 models.py:1320 +#: forms_common.py:280 models.py:1341 msgid "Phone 3" msgstr "" -#: forms_common.py:282 +#: forms_common.py:285 msgid "Current organization" msgstr "" -#: forms_common.py:296 models.py:1303 +#: forms_common.py:299 models.py:1324 msgid "Other address: address" msgstr "" -#: forms_common.py:299 models.py:1306 +#: forms_common.py:302 models.py:1327 msgid "Other address: address complement" msgstr "" -#: forms_common.py:301 models.py:1307 +#: forms_common.py:304 models.py:1328 msgid "Other address: postal code" msgstr "" -#: forms_common.py:303 models.py:1309 +#: forms_common.py:306 models.py:1330 msgid "Other address: town" msgstr "" -#: forms_common.py:305 models.py:1311 +#: forms_common.py:308 models.py:1332 msgid "Other address: country" msgstr "" -#: forms_common.py:315 +#: forms_common.py:320 msgid "Already has an account" msgstr "" -#: forms_common.py:330 +#: forms_common.py:335 msgid "Username" msgstr "" -#: forms_common.py:348 +#: forms_common.py:353 msgid "Account search" msgstr "" -#: forms_common.py:395 forms_common.py:425 forms_common.py:429 models.py:2220 +#: forms_common.py:400 forms_common.py:431 forms_common.py:435 models.py:2250 msgid "Person type" msgstr "" -#: forms_common.py:440 forms_common.py:445 ishtar_menu.py:32 +#: forms_common.py:447 forms_common.py:452 ishtar_menu.py:32 msgid "Account" msgstr "" -#: forms_common.py:449 wizards.py:1170 +#: forms_common.py:456 wizards.py:1170 msgid "New password" msgstr "" -#: forms_common.py:452 +#: forms_common.py:459 msgid "New password (confirmation)" msgstr "" -#: forms_common.py:471 +#: forms_common.py:480 msgid "Your password and confirmation password do not match." msgstr "" -#: forms_common.py:476 +#: forms_common.py:485 msgid "You must provide a correct password." msgstr "" -#: forms_common.py:484 +#: forms_common.py:493 msgid "This username already exists." msgstr "" -#: forms_common.py:491 +#: forms_common.py:500 msgid "Send the new password by email?" msgstr "" -#: forms_common.py:500 forms_common.py:513 models.py:2584 +#: forms_common.py:509 forms_common.py:522 models.py:2619 msgid "Towns" msgstr "" -#: forms_common.py:510 +#: forms_common.py:519 msgid "There are identical towns." msgstr "" -#: forms_common.py:594 +#: forms_common.py:603 msgid "Only one choice can be checked." msgstr "" -#: forms_common.py:642 +#: forms_common.py:651 msgid "Documentation informations" msgstr "" -#: forms_common.py:646 forms_common.py:686 models.py:1851 models.py:2485 +#: forms_common.py:655 forms_common.py:696 models.py:1881 models.py:2520 msgid "Source type" msgstr "" -#: forms_common.py:648 forms_common.py:687 templates/sheet_ope.html:84 +#: forms_common.py:657 forms_common.py:697 templates/sheet_ope.html:84 msgid "Reference" msgstr "" -#: forms_common.py:651 forms_common.py:688 +#: forms_common.py:660 forms_common.py:698 msgid "Internal reference" msgstr "" -#: forms_common.py:654 models.py:2516 +#: forms_common.py:663 models.py:2551 msgid "Numerical ressource (web address)" msgstr "" -#: forms_common.py:655 models.py:2518 +#: forms_common.py:664 models.py:2553 msgid "Receipt date" msgstr "" -#: forms_common.py:657 models.py:2004 models.py:2520 +#: forms_common.py:666 models.py:2034 models.py:2555 msgid "Creation date" msgstr "" -#: forms_common.py:660 models.py:2523 +#: forms_common.py:669 models.py:2558 msgid "Receipt date in documentation" msgstr "" -#: forms_common.py:662 forms_common.py:690 models.py:287 models.py:516 -#: models.py:1746 models.py:2248 models.py:2530 +#: forms_common.py:671 forms_common.py:700 models.py:287 models.py:537 +#: models.py:1775 models.py:2287 models.py:2565 msgid "Comment" msgstr "" -#: forms_common.py:664 forms_common.py:689 models.py:904 models.py:1505 -#: models.py:1678 models.py:1720 models.py:2529 templates/sheet_ope.html:128 +#: forms_common.py:673 forms_common.py:699 models.py:925 models.py:1534 +#: models.py:1707 models.py:1749 models.py:2564 templates/sheet_ope.html:128 msgid "Description" msgstr "" -#: forms_common.py:667 models.py:2531 +#: forms_common.py:676 models.py:2566 msgid "Additional information" msgstr "" -#: forms_common.py:669 forms_common.py:693 models.py:2533 +#: forms_common.py:678 forms_common.py:703 models.py:2568 msgid "Has a duplicate" msgstr "" -#: forms_common.py:682 forms_common.py:711 forms_common.py:744 models.py:2469 +#: forms_common.py:692 forms_common.py:721 forms_common.py:755 models.py:2504 #: templates/ishtar/wizard/wizard_person_deletion.html:124 msgid "Author" msgstr "" -#: forms_common.py:692 +#: forms_common.py:702 msgid "Additional informations" msgstr "" -#: forms_common.py:703 +#: forms_common.py:713 msgid "Would you like to delete this documentation?" msgstr "" -#: forms_common.py:719 models.py:1852 models.py:2459 models.py:2466 +#: forms_common.py:729 models.py:1882 models.py:2494 models.py:2501 msgid "Author type" msgstr "" -#: forms_common.py:737 +#: forms_common.py:748 msgid "Author selection" msgstr "" -#: forms_common.py:751 +#: forms_common.py:762 msgid "There are identical authors." msgstr "" -#: forms_common.py:755 models.py:2470 models.py:2512 +#: forms_common.py:766 models.py:2505 models.py:2547 #: templates/sheet_ope.html:106 #: templates/ishtar/blocks/window_tables/documents.html:9 msgid "Authors" @@ -487,7 +487,7 @@ msgstr "" msgid "Deletion" msgstr "" -#: ishtar_menu.py:39 models.py:1029 views.py:1232 +#: ishtar_menu.py:39 models.py:1050 views.py:1232 msgid "Global variables" msgstr "" @@ -511,12 +511,12 @@ msgstr "" msgid "Merge" msgstr "" -#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2041 widgets.py:110 +#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2071 widgets.py:110 #: templates/ishtar/form_delete.html:11 msgid "Delete" msgstr "" -#: ishtar_menu.py:101 models.py:2015 +#: ishtar_menu.py:101 models.py:2045 msgid "Imports" msgstr "" @@ -544,7 +544,7 @@ msgstr "" msgid "This item already exists." msgstr "" -#: models.py:283 models.py:515 models.py:1268 models.py:1280 +#: models.py:283 models.py:536 models.py:1289 models.py:1301 msgid "Label" msgstr "" @@ -552,191 +552,191 @@ msgstr "" msgid "Textual ID" msgstr "" -#: models.py:288 models.py:518 models.py:1237 +#: models.py:288 models.py:539 models.py:1258 msgid "Available" msgstr "" -#: models.py:537 models.py:1792 +#: models.py:558 models.py:1821 msgid "Key" msgstr "" -#: models.py:543 +#: models.py:564 msgid "Specific key to an import" msgstr "" -#: models.py:623 +#: models.py:644 msgid "Last editor" msgstr "" -#: models.py:626 +#: models.py:647 msgid "Creator" msgstr "" -#: models.py:766 models.py:2595 +#: models.py:787 models.py:2630 msgid "Order" msgstr "" -#: models.py:767 +#: models.py:788 msgid "Symmetrical" msgstr "" -#: models.py:768 +#: models.py:789 msgid "Tiny label" msgstr "" -#: models.py:782 +#: models.py:803 msgid "Cannot have symmetrical and an inverse_relation" msgstr "" -#: models.py:896 +#: models.py:917 msgid "Euro" msgstr "" -#: models.py:897 +#: models.py:918 msgid "US dollar" msgstr "" -#: models.py:903 models.py:1503 +#: models.py:924 models.py:1532 msgid "Slug" msgstr "" -#: models.py:905 +#: models.py:926 msgid "Files module" msgstr "" -#: models.py:906 +#: models.py:927 msgid "Context records module" msgstr "" -#: models.py:908 +#: models.py:929 msgid "Finds module" msgstr "" -#: models.py:909 +#: models.py:930 msgid "Need context records module" msgstr "" -#: models.py:911 +#: models.py:932 msgid "Warehouses module" msgstr "" -#: models.py:912 +#: models.py:933 msgid "Need finds module" msgstr "" -#: models.py:914 +#: models.py:935 msgid "Home page" msgstr "" -#: models.py:915 +#: models.py:936 msgid "" "Homepage of Ishtar - if not defined a default homepage will appear. Use the " "markdown syntax." msgstr "" -#: models.py:918 +#: models.py:939 msgid "File external id" msgstr "" -#: models.py:920 +#: models.py:941 msgid "" "Formula to manage file external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:925 +#: models.py:946 msgid "Parcel external id" msgstr "" -#: models.py:928 +#: models.py:949 msgid "" "Formula to manage parcel external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:933 +#: models.py:954 msgid "Context record external id" msgstr "" -#: models.py:935 +#: models.py:956 msgid "" "Formula to manage context record external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:940 +#: models.py:961 msgid "Base find external id" msgstr "" -#: models.py:942 +#: models.py:963 msgid "" "Formula to manage base find external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:947 +#: models.py:968 msgid "Find external id" msgstr "" -#: models.py:949 +#: models.py:970 msgid "" "Formula to manage find external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:954 +#: models.py:975 msgid "Raw name for person" msgstr "" -#: models.py:956 +#: models.py:977 msgid "" "Formula to manage person raw_name. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:960 +#: models.py:981 msgid "Current active" msgstr "" -#: models.py:961 +#: models.py:982 msgid "Currency" msgstr "" -#: models.py:965 +#: models.py:986 msgid "Ishtar site profile" msgstr "" -#: models.py:966 +#: models.py:987 msgid "Ishtar site profiles" msgstr "" -#: models.py:1022 +#: models.py:1043 msgid "Variable name" msgstr "" -#: models.py:1023 +#: models.py:1044 msgid "Description of the variable" msgstr "" -#: models.py:1025 models.py:1793 +#: models.py:1046 models.py:1822 msgid "Value" msgstr "" -#: models.py:1028 +#: models.py:1049 msgid "Global variable" msgstr "" -#: models.py:1138 models.py:1168 +#: models.py:1159 models.py:1189 msgid "Total" msgstr "" -#: models.py:1145 models.py:1269 models.py:1281 +#: models.py:1166 models.py:1290 models.py:1302 #: templates/ishtar/sheet_person.html:21 #: templates/ishtar/dashboards/dashboard_main_detail.html:141 #: templates/ishtar/dashboards/dashboard_main_detail_users.html:26 @@ -744,581 +744,589 @@ msgstr "" msgid "Number" msgstr "" -#: models.py:1232 +#: models.py:1253 msgid "Administrative Act" msgstr "" -#: models.py:1236 +#: models.py:1257 msgid "Associated object" msgstr "" -#: models.py:1240 +#: models.py:1261 msgid "Document template" msgstr "" -#: models.py:1241 +#: models.py:1262 msgid "Document templates" msgstr "" -#: models.py:1272 models.py:1282 models.py:1999 +#: models.py:1293 models.py:1303 models.py:2029 msgid "State" msgstr "" -#: models.py:1286 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:1307 templates/blocks/JQueryAdvancedTown.html:12 msgid "Department" msgstr "" -#: models.py:1287 +#: models.py:1308 msgid "Departments" msgstr "" -#: models.py:1324 +#: models.py:1345 msgid "Raw phone" msgstr "" -#: models.py:1330 +#: models.py:1351 msgid "Alternative address is prefered" msgstr "" -#: models.py:1369 +#: models.py:1390 msgid "Tel: " msgstr "" -#: models.py:1373 +#: models.py:1394 msgid "Mobile: " msgstr "" -#: models.py:1377 +#: models.py:1398 msgid "Email: " msgstr "" -#: models.py:1382 +#: models.py:1403 msgid "Merge key" msgstr "" -#: models.py:1443 +#: models.py:1472 msgid "Organization types" msgstr "" -#: models.py:1459 +#: models.py:1488 msgid "Archaeological site" msgstr "" -#: models.py:1460 +#: models.py:1489 msgid "Parcels" msgstr "" -#: models.py:1462 +#: models.py:1491 msgid "Operation source" msgstr "" -#: models.py:1465 views.py:1057 views.py:1108 +#: models.py:1494 views.py:1057 views.py:1108 msgid "Archaeological files" msgstr "" -#: models.py:1467 views.py:1060 views.py:1116 +#: models.py:1496 views.py:1060 views.py:1116 msgid "Context records" msgstr "" -#: models.py:1469 +#: models.py:1498 msgid "Context record relations" msgstr "" -#: models.py:1471 views.py:1062 views.py:1119 +#: models.py:1500 views.py:1062 views.py:1119 msgid "Finds" msgstr "" -#: models.py:1507 templates/ishtar/dashboards/dashboard_main.html:25 +#: models.py:1536 templates/ishtar/dashboards/dashboard_main.html:25 msgid "Users" msgstr "" -#: models.py:1509 +#: models.py:1538 msgid "Associated model" msgstr "" -#: models.py:1512 +#: models.py:1541 msgid "Is template" msgstr "" -#: models.py:1513 +#: models.py:1542 msgid "Unicity keys (separator \";\")" msgstr "" -#: models.py:1517 +#: models.py:1546 msgid "Importer - Type" msgstr "" -#: models.py:1518 +#: models.py:1547 msgid "Importer - Types" msgstr "" -#: models.py:1608 +#: models.py:1637 msgid "Importer - Default" msgstr "" -#: models.py:1609 +#: models.py:1638 msgid "Importer - Defaults" msgstr "" -#: models.py:1644 +#: models.py:1673 msgid "Importer - Default value" msgstr "" -#: models.py:1645 +#: models.py:1674 msgid "Importer - Default values" msgstr "" -#: models.py:1677 +#: models.py:1706 msgid "Column number" msgstr "" -#: models.py:1680 +#: models.py:1709 msgid "Required" msgstr "" -#: models.py:1683 +#: models.py:1712 msgid "Importer - Column" msgstr "" -#: models.py:1684 +#: models.py:1713 msgid "Importer - Columns" msgstr "" -#: models.py:1704 +#: models.py:1733 msgid "Field name" msgstr "" -#: models.py:1706 models.py:1740 +#: models.py:1735 models.py:1769 msgid "Force creation of new items" msgstr "" -#: models.py:1708 models.py:1742 +#: models.py:1737 models.py:1771 msgid "Concatenate with existing" msgstr "" -#: models.py:1710 models.py:1744 +#: models.py:1739 models.py:1773 msgid "Concatenate character" msgstr "" -#: models.py:1714 +#: models.py:1743 msgid "Importer - Duplicate field" msgstr "" -#: models.py:1715 +#: models.py:1744 msgid "Importer - Duplicate fields" msgstr "" -#: models.py:1722 +#: models.py:1751 msgid "Regular expression" msgstr "" -#: models.py:1725 +#: models.py:1754 msgid "Importer - Regular expression" msgstr "" -#: models.py:1726 +#: models.py:1755 msgid "Importer - Regular expressions" msgstr "" -#: models.py:1749 +#: models.py:1778 msgid "Importer - Target" msgstr "" -#: models.py:1750 +#: models.py:1779 msgid "Importer - Targets" msgstr "" -#: models.py:1774 views.py:343 +#: models.py:1803 views.py:343 msgid "True" msgstr "" -#: models.py:1775 views.py:345 +#: models.py:1804 views.py:345 msgid "False" msgstr "" -#: models.py:1794 +#: models.py:1823 msgid "Is set" msgstr "" -#: models.py:1801 +#: models.py:1830 msgid "Importer - Target key" msgstr "" -#: models.py:1802 +#: models.py:1831 msgid "Importer - Targets keys" msgstr "" -#: models.py:1853 models.py:2497 models.py:2508 +#: models.py:1883 models.py:2532 models.py:2543 msgid "Format" msgstr "" -#: models.py:1854 models.py:2599 +#: models.py:1884 models.py:2634 msgid "Operation type" msgstr "" -#: models.py:1855 +#: models.py:1885 msgid "Period" msgstr "" -#: models.py:1856 +#: models.py:1886 msgid "Report state" msgstr "" -#: models.py:1857 +#: models.py:1887 msgid "Unit" msgstr "" -#: models.py:1858 +#: models.py:1888 msgid "Material" msgstr "" -#: models.py:1860 +#: models.py:1890 msgid "Conservatory state" msgstr "" -#: models.py:1861 +#: models.py:1891 msgid "Preservation type" msgstr "" -#: models.py:1862 +#: models.py:1892 msgid "Object type" msgstr "" -#: models.py:1864 +#: models.py:1894 msgid "Identification type" msgstr "" -#: models.py:1866 +#: models.py:1896 msgid "Context record relation type" msgstr "" -#: models.py:1867 models.py:2491 +#: models.py:1897 models.py:2526 msgid "Support type" msgstr "" -#: models.py:1873 +#: models.py:1903 msgid "Integer" msgstr "" -#: models.py:1874 +#: models.py:1904 msgid "Float" msgstr "" -#: models.py:1875 +#: models.py:1905 msgid "String" msgstr "" -#: models.py:1876 templates/sheet_ope.html:86 +#: models.py:1906 templates/sheet_ope.html:86 msgid "Date" msgstr "" -#: models.py:1878 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 +#: models.py:1908 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 #: templates/ishtar/dashboards/dashboard_main_detail.html:126 msgid "Year" msgstr "" -#: models.py:1879 +#: models.py:1909 msgid "String to boolean" msgstr "" -#: models.py:1880 +#: models.py:1910 msgctxt "filesystem" msgid "File" msgstr "" -#: models.py:1881 +#: models.py:1911 msgid "Unknow type" msgstr "" -#: models.py:1897 +#: models.py:1927 msgid "4 digit year. e.g.: \"2015\"" msgstr "" -#: models.py:1898 +#: models.py:1928 msgid "4 digit year/month/day. e.g.: \"2015/02/04\"" msgstr "" -#: models.py:1899 +#: models.py:1929 msgid "Day/month/4 digit year. e.g.: \"04/02/2015\"" msgstr "" -#: models.py:1909 +#: models.py:1939 msgid "Options" msgstr "" -#: models.py:1911 +#: models.py:1941 msgid "Split character(s)" msgstr "" -#: models.py:1915 +#: models.py:1945 msgid "Importer - Formater type" msgstr "" -#: models.py:1916 +#: models.py:1946 msgid "Importer - Formater types" msgstr "" -#: models.py:1963 templates/ishtar/dashboards/dashboard_main_detail.html:63 +#: models.py:1993 templates/ishtar/dashboards/dashboard_main_detail.html:63 msgid "Created" msgstr "" -#: models.py:1964 +#: models.py:1994 msgid "Analyse in progress" msgstr "" -#: models.py:1965 +#: models.py:1995 msgid "Analysed" msgstr "" -#: models.py:1966 +#: models.py:1996 msgid "Import pending" msgstr "" -#: models.py:1967 +#: models.py:1997 msgid "Import in progress" msgstr "" -#: models.py:1968 +#: models.py:1998 msgid "Finished with errors" msgstr "" -#: models.py:1969 +#: models.py:1999 msgid "Finished" msgstr "" -#: models.py:1970 +#: models.py:2000 msgid "Archived" msgstr "" -#: models.py:1982 +#: models.py:2012 msgid "Imported file" msgstr "" -#: models.py:1985 +#: models.py:2015 msgid "Associated images (zip file)" msgstr "" -#: models.py:1987 +#: models.py:2017 msgid "Encoding" msgstr "" -#: models.py:1989 +#: models.py:2019 msgid "Skip lines" msgstr "" -#: models.py:1990 templates/ishtar/import_list.html:47 +#: models.py:2020 templates/ishtar/import_list.html:47 msgid "Error file" msgstr "" -#: models.py:1993 +#: models.py:2023 msgid "Result file" msgstr "" -#: models.py:1996 templates/ishtar/import_list.html:53 +#: models.py:2026 templates/ishtar/import_list.html:53 msgid "Match file" msgstr "" -#: models.py:2002 +#: models.py:2032 msgid "Conservative import" msgstr "" -#: models.py:2007 +#: models.py:2037 msgid "End date" msgstr "" -#: models.py:2009 +#: models.py:2039 msgid "Remaining seconds" msgstr "" -#: models.py:2014 +#: models.py:2044 msgid "Import" msgstr "" -#: models.py:2031 +#: models.py:2061 msgid "Analyse" msgstr "" -#: models.py:2033 models.py:2036 +#: models.py:2063 models.py:2066 msgid "Re-analyse" msgstr "" -#: models.py:2034 +#: models.py:2064 msgid "Launch import" msgstr "" -#: models.py:2037 +#: models.py:2067 msgid "Re-import" msgstr "" -#: models.py:2038 +#: models.py:2068 msgid "Archive" msgstr "" -#: models.py:2040 +#: models.py:2070 msgid "Unarchive" msgstr "" -#: models.py:2173 +#: models.py:2203 msgid "Organizations" msgstr "" -#: models.py:2175 +#: models.py:2205 msgid "Can view all Organizations" msgstr "" -#: models.py:2176 +#: models.py:2206 msgid "Can view own Organization" msgstr "" -#: models.py:2177 +#: models.py:2207 msgid "Can add own Organization" msgstr "" -#: models.py:2179 +#: models.py:2209 msgid "Can change own Organization" msgstr "" -#: models.py:2181 +#: models.py:2211 msgid "Can delete own Organization" msgstr "" -#: models.py:2216 +#: models.py:2246 msgid "Groups" msgstr "" -#: models.py:2221 +#: models.py:2251 msgid "Person types" msgstr "" -#: models.py:2228 +#: models.py:2257 +msgid "Title type" +msgstr "" + +#: models.py:2258 +msgid "Title types" +msgstr "" + +#: models.py:2265 msgid "Mr" msgstr "" -#: models.py:2229 +#: models.py:2266 msgid "Miss" msgstr "" -#: models.py:2230 +#: models.py:2267 msgid "Mr and Mrs" msgstr "" -#: models.py:2231 +#: models.py:2268 msgid "Mrs" msgstr "" -#: models.py:2232 +#: models.py:2269 msgid "Doctor" msgstr "" -#: models.py:2246 +#: models.py:2285 msgid "Contact type" msgstr "" -#: models.py:2249 models.py:2296 +#: models.py:2288 models.py:2331 msgid "Types" msgstr "" -#: models.py:2252 +#: models.py:2291 msgid "Is attached to" msgstr "" -#: models.py:2256 +#: models.py:2296 msgid "Persons" msgstr "" -#: models.py:2258 +#: models.py:2298 msgid "Can view all Persons" msgstr "" -#: models.py:2259 +#: models.py:2299 msgid "Can view own Person" msgstr "" -#: models.py:2260 +#: models.py:2300 msgid "Can add own Person" msgstr "" -#: models.py:2261 +#: models.py:2301 msgid "Can change own Person" msgstr "" -#: models.py:2262 +#: models.py:2302 msgid "Can delete own Person" msgstr "" -#: models.py:2411 +#: models.py:2446 msgid "Ishtar user" msgstr "" -#: models.py:2412 +#: models.py:2447 msgid "Ishtar users" msgstr "" -#: models.py:2454 +#: models.py:2489 msgid "To modify the password use the form in Auth > User" msgstr "" -#: models.py:2460 +#: models.py:2495 msgid "Author types" msgstr "" -#: models.py:2486 +#: models.py:2521 msgid "Source types" msgstr "" -#: models.py:2492 +#: models.py:2527 msgid "Support types" msgstr "" -#: models.py:2498 +#: models.py:2533 msgid "Formats" msgstr "" -#: models.py:2503 +#: models.py:2538 msgid "External ID" msgstr "" -#: models.py:2506 +#: models.py:2541 msgid "Support" msgstr "" -#: models.py:2510 +#: models.py:2545 msgid "Scale" msgstr "" -#: models.py:2524 +#: models.py:2559 msgid "Item number" msgstr "" -#: models.py:2525 +#: models.py:2560 msgid "Ref." msgstr "" -#: models.py:2528 +#: models.py:2563 msgid "Internal ref." msgstr "" -#: models.py:2570 +#: models.py:2605 msgid "Surface (m2)" msgstr "" -#: models.py:2571 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 +#: models.py:2606 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 msgid "Localisation" msgstr "" -#: models.py:2596 +#: models.py:2631 msgid "Is preventive" msgstr "" -#: models.py:2600 +#: models.py:2635 msgid "Operation types" msgstr "" -#: models.py:2626 +#: models.py:2661 msgid "Preventive" msgstr "" -#: models.py:2627 +#: models.py:2662 msgid "Research" msgstr "" @@ -1986,6 +1994,14 @@ msgstr "" msgid "No person in this organization" msgstr "" +#: templates/ishtar/sheet_organization.html:38 +msgid "General contractor organization of archaelogical files" +msgstr "" + +#: templates/ishtar/sheet_organization.html:43 +msgid "Town planning service of archaelogical files" +msgstr "" + #: templates/ishtar/sheet_person.html:20 #: templates/ishtar/wizard/wizard_person.html:19 msgid "Phone type" @@ -2013,19 +2029,27 @@ msgstr "" msgid "Associated operations as responsible" msgstr "" -#: templates/ishtar/sheet_person.html:80 -msgid "Associated archaelogical files" +#: templates/ishtar/sheet_person.html:79 +msgid "In charge of archaelogical files" +msgstr "" + +#: templates/ishtar/sheet_person.html:84 +msgid "General contractor of archaelogical files" +msgstr "" + +#: templates/ishtar/sheet_person.html:89 +msgid "Responsible for town planning service of archaelogical files" msgstr "" -#: templates/ishtar/sheet_person.html:86 +#: templates/ishtar/sheet_person.html:95 msgid "Documents associated to operations" msgstr "" -#: templates/ishtar/sheet_person.html:91 +#: templates/ishtar/sheet_person.html:100 msgid "Documents associated to context records" msgstr "" -#: templates/ishtar/sheet_person.html:96 +#: templates/ishtar/sheet_person.html:105 msgid "Documents associated to finds" msgstr "" diff --git a/translations/fr/archaeological_context_records.po b/translations/fr/archaeological_context_records.po index 8091a7cb7..d763386d0 100644 --- a/translations/fr/archaeological_context_records.po +++ b/translations/fr/archaeological_context_records.po @@ -14,7 +14,7 @@ msgstr "" "Language-Team: \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=n>1;\n" -"X-Generator: Zanata 3.9.3\n" +"X-Generator: Zanata 3.9.5\n" #: forms.py:46 forms.py:123 models.py:130 #: templates/ishtar/sheet_contextrecord.html:59 @@ -41,7 +41,7 @@ msgstr "Entité Archéologique" msgid "Search within operation relations" msgstr "Rechercher parmi les opérations reliées" -#: forms.py:64 forms.py:189 models.py:48 +#: forms.py:64 forms.py:190 models.py:48 msgid "Period" msgstr "Période" @@ -57,7 +57,7 @@ msgstr "Parcelle (section/nombre/domaine public)" msgid "Search within relations" msgstr "Recherche parmi les relations" -#: forms.py:98 forms.py:288 views.py:118 +#: forms.py:98 forms.py:295 views.py:118 msgid "Context record search" msgstr "Recherche d'Unité d'Enregistrement" @@ -103,120 +103,120 @@ msgstr "Unité" msgid "Location" msgstr "Lieu" -#: forms.py:178 +#: forms.py:179 msgid "This ID already exists for this operation." msgstr "Cet identifiant existe déjà pour cette opération." -#: forms.py:184 forms.py:208 models.py:59 +#: forms.py:185 forms.py:212 models.py:59 msgid "Dating" msgstr "Datation" -#: forms.py:190 models.py:49 +#: forms.py:191 models.py:49 msgid "Start date" msgstr "Date de début" -#: forms.py:191 models.py:50 models.py:135 +#: forms.py:192 models.py:50 models.py:135 msgid "End date" msgstr "Date de fin" -#: forms.py:192 models.py:53 +#: forms.py:193 models.py:53 msgid "Quality" msgstr "Qualité" -#: forms.py:193 models.py:35 models.py:51 +#: forms.py:194 models.py:35 models.py:51 msgid "Dating type" msgstr "Type de datation" -#: forms.py:217 ishtar_menu.py:29 models.py:354 +#: forms.py:221 ishtar_menu.py:29 models.py:354 msgid "Context record" msgstr "Unité d'Enregistrement" -#: forms.py:237 +#: forms.py:242 msgid "Relations" msgstr "Relations" -#: forms.py:241 forms.py:251 models.py:153 +#: forms.py:246 forms.py:256 models.py:153 #: templates/ishtar/sheet_contextrecord.html:37 msgid "Interpretation" msgstr "Interprétation" -#: forms.py:245 +#: forms.py:250 msgid "Comments on dating" msgstr "Commentaires sur la datation" -#: forms.py:247 models.py:150 +#: forms.py:252 models.py:150 msgid "Has furniture?" msgstr "Contient du mobilier ?" -#: forms.py:249 models.py:152 +#: forms.py:254 models.py:152 msgid "Filling" msgstr "Remplissage" -#: forms.py:253 models.py:173 +#: forms.py:258 models.py:173 msgid "Activity" msgstr "Activité" -#: forms.py:255 models.py:171 +#: forms.py:260 models.py:171 msgid "Identification" msgstr "Identification" -#: forms.py:257 models.py:156 +#: forms.py:262 models.py:156 msgid "TAQ" msgstr "TAQ" -#: forms.py:258 models.py:160 +#: forms.py:263 models.py:160 msgid "Estimated TAQ" msgstr "TAQ estimé" -#: forms.py:260 models.py:163 +#: forms.py:265 models.py:163 msgid "TPQ" msgstr "TPQ" -#: forms.py:261 models.py:167 +#: forms.py:266 models.py:167 msgid "Estimated TPQ" msgstr "TPQ estimé" -#: forms.py:274 +#: forms.py:281 msgid "Operation search" msgstr "Recherche d'Opérations" -#: forms.py:276 +#: forms.py:283 msgid "You should select an operation." msgstr "Vous devez sélectionner une Opération." -#: forms.py:281 +#: forms.py:288 msgid "Would you like to delete this context record?" msgstr "Voulez-vous supprimer cette Unité d'Enregistrement ?" -#: forms.py:290 +#: forms.py:297 msgid "You should select a context record." msgstr "Vous devez sélectionner une Unité d'Enregistrement." -#: forms.py:295 +#: forms.py:302 msgid "Year of the operation" msgstr "Année de l'opération" -#: forms.py:297 +#: forms.py:304 msgid "Numeric reference" msgstr "Référence numérique" -#: forms.py:303 +#: forms.py:310 msgid "Town of the operation" msgstr "Commune de l'opération" -#: forms.py:305 +#: forms.py:312 msgid "Period of the context record" msgstr "Période de l'Unité d'Enregistrement" -#: forms.py:307 +#: forms.py:314 msgid "Unit type of the context record" msgstr "Type d'unité de l'Unité d'Enregistrement" -#: forms.py:320 +#: forms.py:327 msgid "Documentation search" msgstr "Recherche de documents" -#: forms.py:322 +#: forms.py:329 msgid "You should select a document." msgstr "Vous devez sélectionner un document." diff --git a/translations/fr/archaeological_files.po b/translations/fr/archaeological_files.po index 33f9ee0fa..ab6a53867 100644 --- a/translations/fr/archaeological_files.po +++ b/translations/fr/archaeological_files.po @@ -15,245 +15,245 @@ msgstr "" "Language-Team: \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=n>1;\n" -"X-Generator: Zanata 3.9.3\n" +"X-Generator: Zanata 3.9.5\n" -#: forms.py:51 forms.py:210 forms.py:254 forms.py:395 forms.py:422 +#: forms.py:52 forms.py:212 forms.py:257 forms.py:404 forms.py:431 #: models.py:76 templates/ishtar/sheet_file.html:139 msgid "Year" msgstr "Année" -#: forms.py:52 forms.py:215 forms.py:256 models.py:79 +#: forms.py:53 forms.py:217 forms.py:259 models.py:79 msgid "Numeric reference" msgstr "Référence numérique" -#: forms.py:54 forms.py:217 +#: forms.py:55 forms.py:219 msgid "Other reference" msgstr "Autre référence" -#: forms.py:56 forms.py:430 +#: forms.py:57 forms.py:439 msgid "Parcel (section/number/public domain)" msgstr "Parcelle (section/nombre/domaine public)" -#: forms.py:59 forms.py:406 forms.py:433 models.py:512 +#: forms.py:60 forms.py:415 forms.py:442 models.py:512 msgid "Department" msgstr "Département" -#: forms.py:60 forms.py:442 +#: forms.py:61 forms.py:451 msgid "File name" msgstr "Nom du dossier" -#: forms.py:61 forms.py:156 forms.py:221 models.py:87 +#: forms.py:62 forms.py:158 forms.py:223 models.py:87 msgid "File type" msgstr "Type de dossier" -#: forms.py:62 +#: forms.py:63 msgid "Is active?" msgstr "Est actif ?" -#: forms.py:63 forms.py:158 forms.py:318 +#: forms.py:64 forms.py:160 forms.py:321 msgid "Saisine type" msgstr "Type de saisine" -#: forms.py:64 forms.py:308 models.py:58 models.py:118 +#: forms.py:65 forms.py:311 models.py:58 models.py:118 msgid "Permit type" msgstr "Type de permis" -#: forms.py:66 forms.py:311 models.py:119 +#: forms.py:67 forms.py:314 models.py:119 msgid "Permit reference" msgstr "Référence du permis" -#: forms.py:67 forms.py:227 forms.py:365 models.py:148 +#: forms.py:68 forms.py:229 forms.py:372 models.py:148 #: templates/ishtar/sheet_file.html:94 msgid "Comment" msgstr "Commentaire" -#: forms.py:69 templates/ishtar/sheet_file.html:112 +#: forms.py:70 templates/ishtar/sheet_file.html:112 msgid "In charge" msgstr "Responsable" -#: forms.py:76 forms.py:286 forms.py:444 models.py:94 +#: forms.py:77 forms.py:289 forms.py:453 models.py:94 msgid "General contractor" msgstr "Aménageur" -#: forms.py:83 forms.py:453 +#: forms.py:84 forms.py:462 msgid "Organization of general contractor" msgstr "Organisation de l'aménageur" -#: forms.py:90 forms.py:476 +#: forms.py:91 forms.py:485 msgid "Created by" msgstr "Créé par" -#: forms.py:97 forms.py:484 +#: forms.py:98 forms.py:493 msgid "Modified by" msgstr "Modifié par" -#: forms.py:127 +#: forms.py:129 msgid "Archaeological file search" msgstr "Recherche de dossiers archéologiques" -#: forms.py:141 +#: forms.py:143 msgid "You should select a file." msgstr "Vous devez sélectionner un dossier archéologique." -#: forms.py:144 forms.py:219 models.py:127 +#: forms.py:146 forms.py:221 models.py:127 msgid "Creation date" msgstr "Date de création" -#: forms.py:145 forms.py:321 models.py:129 +#: forms.py:147 forms.py:324 models.py:129 msgid "Reception date" msgstr "Date de réception" -#: forms.py:150 +#: forms.py:152 msgid "Slicing" msgstr "Découpage" -#: forms.py:152 +#: forms.py:154 msgid "Department detail" msgstr "Détail par département" -#: forms.py:154 +#: forms.py:156 msgid "Date get from" msgstr "Date utilisée" -#: forms.py:160 +#: forms.py:162 msgid "Date after" msgstr "Date après" -#: forms.py:162 +#: forms.py:164 msgid "Date before" msgstr "Date avant" -#: forms.py:199 templates/ishtar/sheet_file.html:14 +#: forms.py:201 templates/ishtar/sheet_file.html:14 msgid "General" msgstr "Général" -#: forms.py:204 models.py:89 +#: forms.py:206 models.py:89 msgid "Person in charge" msgstr "Responsable" -#: forms.py:218 models.py:86 +#: forms.py:220 models.py:86 msgid "Name" msgstr "Nom" -#: forms.py:223 models.py:131 +#: forms.py:225 models.py:131 msgid "Related file" msgstr "Dossier associé" -#: forms.py:231 models.py:139 +#: forms.py:233 models.py:139 msgid "Total surface (m2)" msgstr "Surface totale (m2)" -#: forms.py:234 models.py:145 +#: forms.py:236 models.py:145 msgid "Main address" msgstr "Adresse des terrains" -#: forms.py:235 +#: forms.py:237 msgid "Main address - complement" msgstr "Adresse des terrains - complément" -#: forms.py:247 +#: forms.py:250 #, python-format msgid "
(last recorded: %s)" msgstr "
(dernier enregistrement : %s)" -#: forms.py:269 +#: forms.py:272 msgid "Another file with this numeric id exists." msgstr "Un autre dossier avec cet identifiant numérique existe." -#: forms.py:280 +#: forms.py:283 msgid "Preventive informations" msgstr "Information archéologie préventive" -#: forms.py:298 models.py:106 +#: forms.py:301 models.py:106 msgid "Responsible for town planning service" msgstr "Responsable au service instructeur" -#: forms.py:314 models.py:142 +#: forms.py:317 models.py:142 msgid "Total developed surface (m2)" msgstr "Surface totale aménagée (m2)" -#: forms.py:333 templates/ishtar/sheet_file.html:84 +#: forms.py:340 templates/ishtar/sheet_file.html:84 #: templates/ishtar/dashboards/dashboard_file.html:45 msgid "Research archaeology" msgstr "Archéologie programmée" -#: forms.py:341 models.py:151 templates/ishtar/sheet_file.html:85 +#: forms.py:348 models.py:151 templates/ishtar/sheet_file.html:85 msgid "Departments" msgstr "Départements" -#: forms.py:352 models.py:160 +#: forms.py:359 models.py:160 msgid "Scientist in charge" msgstr "Responsable scientifique" -#: forms.py:354 models.py:154 templates/ishtar/sheet_file.html:87 +#: forms.py:361 models.py:154 templates/ishtar/sheet_file.html:87 msgid "Requested operation type" msgstr "Type d'opération demandée" -#: forms.py:356 +#: forms.py:363 msgid "Lead organization" msgstr "Organisation porteuse du projet" -#: forms.py:372 models.py:164 templates/ishtar/sheet_file.html:92 +#: forms.py:379 models.py:164 templates/ishtar/sheet_file.html:92 msgid "Classified area" msgstr "Au sein d'un site classé" -#: forms.py:374 models.py:166 templates/ishtar/sheet_file.html:93 +#: forms.py:381 models.py:166 templates/ishtar/sheet_file.html:93 msgid "Protected area" msgstr "Au sein d'un secteur sauvegardé" -#: forms.py:386 +#: forms.py:395 msgid "Would you like to close this archaeological file?" msgstr "Voulez vous clore ce dossier archéologique ?" -#: forms.py:391 +#: forms.py:400 msgid "Would you like to delete this archaelogical file ?" msgstr "Voulez vous supprimer ce dossier archéologique ?" -#: forms.py:396 forms.py:423 forms.py:546 +#: forms.py:405 forms.py:432 forms.py:556 msgid "Index" msgstr "Index" -#: forms.py:400 forms.py:427 forms.py:533 +#: forms.py:409 forms.py:436 forms.py:542 msgid "Act type" msgstr "Type d'acte" -#: forms.py:401 +#: forms.py:410 msgid "Object (full text search)" msgstr "Objet (recherche texte intégral)" -#: forms.py:428 +#: forms.py:437 msgid "Indexed?" msgstr "Indexé ?" -#: forms.py:434 +#: forms.py:443 msgid "Object" msgstr "Objet" -#: forms.py:438 +#: forms.py:447 msgid "Signature date after" msgstr "Date de signature après" -#: forms.py:440 +#: forms.py:449 msgid "Signature date before" msgstr "Date de signature avant" -#: forms.py:461 +#: forms.py:470 msgid "File numeric reference" msgstr "Dossier : réf. numérique" -#: forms.py:462 +#: forms.py:471 msgid "File year" msgstr "Dossier : année" -#: forms.py:464 +#: forms.py:473 msgid "File other reference" msgstr "Dossier : autre référence" -#: forms.py:466 +#: forms.py:475 msgid "File in charge" msgstr "Dossier : responsable" -#: forms.py:474 +#: forms.py:483 msgid "File permit reference" msgstr "Dossier : réf. du permis" diff --git a/translations/fr/archaeological_files_pdl.po b/translations/fr/archaeological_files_pdl.po index e668bc64d..34955a35a 100644 --- a/translations/fr/archaeological_files_pdl.po +++ b/translations/fr/archaeological_files_pdl.po @@ -14,7 +14,7 @@ msgstr "" "Language-Team: \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" -"X-Generator: Zanata 3.9.3\n" +"X-Generator: Zanata 3.9.5\n" #: forms.py:41 msgid "General" @@ -24,7 +24,7 @@ msgstr "Général" msgid "File type" msgstr "Type de dossier" -#: forms.py:44 forms.py:401 +#: forms.py:44 forms.py:403 msgid "Year" msgstr "Année" @@ -36,97 +36,97 @@ msgstr "Date de création" msgid "Reception date" msgstr "Date de réception" -#: forms.py:62 +#: forms.py:63 msgid "Reception date cannot be after today." msgstr "La date de réception ne peut pas être dans le futur." -#: forms.py:70 +#: forms.py:71 msgid "Permit type" msgstr "Type de permis" -#: forms.py:72 +#: forms.py:73 msgid "Saisine type" msgstr "Type de saisine" -#: forms.py:85 +#: forms.py:87 msgid "Planning" msgstr "Aménagement" -#: forms.py:88 +#: forms.py:90 msgid "Planning name" msgstr "Nom de l'aménagement" -#: forms.py:91 forms.py:121 +#: forms.py:93 forms.py:123 #: templates/ishtar/wizard/wizard_preventiveplanning.html:31 msgid "Towns" msgstr "Communes" -#: forms.py:93 forms.py:123 +#: forms.py:95 forms.py:125 #: templates/ishtar/wizard/wizard_preventiveplanning.html:41 msgid "Departments" msgstr "Départements" -#: forms.py:94 forms.py:124 +#: forms.py:96 forms.py:126 msgid "Locality" msgstr "Lieu-dit" -#: forms.py:97 forms.py:127 +#: forms.py:99 forms.py:129 msgid "Address (number/street)" msgstr "Adresse (n° / voie)" -#: forms.py:98 forms.py:128 +#: forms.py:100 forms.py:130 msgid "Number/street" msgstr "N° / voie" -#: forms.py:100 forms.py:130 +#: forms.py:102 forms.py:132 msgid "Postal code" msgstr "Code postal" -#: forms.py:105 +#: forms.py:107 msgid "Total surface (m2)" msgstr "Surface totale des terrains (m2)" -#: forms.py:110 +#: forms.py:112 msgid "Total developed surface (m2)" msgstr "Surface totale aménagée (m2)" -#: forms.py:117 +#: forms.py:119 msgid "Address" msgstr "Adresse" -#: forms.py:231 forms.py:235 forms.py:265 forms.py:268 +#: forms.py:233 forms.py:237 forms.py:267 forms.py:270 msgid "General contractor" msgstr "Aménageur" -#: forms.py:250 forms.py:362 +#: forms.py:252 forms.py:364 msgid "In charge" msgstr "Responsable" -#: forms.py:340 +#: forms.py:342 msgid "Town planning service" msgstr "Service instructeur" -#: forms.py:344 +#: forms.py:346 msgid "File reference" msgstr "Référence du dossier" -#: forms.py:347 +#: forms.py:349 msgid "Planning service" msgstr "Service instructeur" -#: forms.py:381 +#: forms.py:383 msgid "Person in charge" msgstr "Dossier suivi par" -#: forms.py:393 +#: forms.py:395 msgid "Related file" msgstr "Dossier lié à" -#: forms.py:397 +#: forms.py:399 msgid "Comment" msgstr "Commentaires" -#: forms.py:404 +#: forms.py:406 msgid "Numeric reference" msgstr "Référence numérique" diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po index 5ad26c255..6e39f7374 100644 --- a/translations/fr/archaeological_finds.po +++ b/translations/fr/archaeological_finds.po @@ -15,127 +15,127 @@ msgstr "" "Language-Team: \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=n>1;\n" -"X-Generator: Zanata 3.9.3\n" +"X-Generator: Zanata 3.9.5\n" -#: forms.py:49 forms.py:53 wizards.py:62 +#: forms.py:50 forms.py:54 wizards.py:62 msgid "Context record" msgstr "Unité d'Enregistrement" -#: forms.py:82 ishtar_menu.py:31 models.py:384 models.py:649 models.py:747 +#: forms.py:83 ishtar_menu.py:31 models.py:384 models.py:649 models.py:747 #: models.py:891 templates/ishtar/sheet_find.html:5 msgid "Find" msgstr "Mobilier" -#: forms.py:93 forms.py:208 forms.py:412 models.py:113 models.py:317 +#: forms.py:94 forms.py:218 forms.py:422 models.py:113 models.py:317 msgid "Free ID" msgstr "ID libre" -#: forms.py:95 models.py:365 +#: forms.py:96 models.py:365 msgid "Previous ID" msgstr "Identifiant précédent" -#: forms.py:96 forms.py:237 forms.py:577 models.py:117 models.py:318 +#: forms.py:97 forms.py:247 forms.py:588 models.py:117 models.py:318 #: models.py:681 msgid "Description" msgstr "Description" -#: forms.py:99 forms.py:239 models.py:128 +#: forms.py:100 forms.py:249 models.py:128 msgid "Batch/object" msgstr "Lot/objet" -#: forms.py:101 models.py:346 +#: forms.py:102 models.py:346 msgid "Is complete?" msgstr "Est complet ?" -#: forms.py:104 forms.py:228 forms.py:416 models.py:48 +#: forms.py:105 forms.py:238 forms.py:426 models.py:48 msgid "Material type" msgstr "Type de matériau" -#: forms.py:105 forms.py:232 models.py:58 models.py:322 +#: forms.py:106 forms.py:242 models.py:58 models.py:322 msgid "Conservatory state" msgstr "État sanitaire" -#: forms.py:108 models.py:324 +#: forms.py:109 models.py:324 msgid "Conservatory comment" msgstr "Commentaire relatif à la conservation" -#: forms.py:111 models.py:90 models.py:349 +#: forms.py:112 models.py:90 models.py:349 msgid "Object types" msgstr "Types d'objet" -#: forms.py:113 forms.py:231 models.py:65 +#: forms.py:114 forms.py:241 models.py:65 msgid "Preservation type" msgstr "Type de conservation" -#: forms.py:116 forms.py:234 models.py:351 +#: forms.py:117 forms.py:244 models.py:351 msgid "Integrity" msgstr "Intégrité" -#: forms.py:119 forms.py:235 models.py:353 +#: forms.py:120 forms.py:245 models.py:353 msgid "Remarkability" msgstr "Remarquabilité" -#: forms.py:121 models.py:355 +#: forms.py:122 models.py:355 msgid "Length (cm)" msgstr "Longueur (cm)" -#: forms.py:122 models.py:356 +#: forms.py:123 models.py:356 msgid "Width (cm)" msgstr "Largeur (cm)" -#: forms.py:123 models.py:357 +#: forms.py:124 models.py:357 msgid "Height (cm)" msgstr "Hauteur (cm)" -#: forms.py:124 models.py:358 +#: forms.py:125 models.py:358 msgid "Diameter (cm)" msgstr "Diamètre (cm)" -#: forms.py:125 forms.py:417 models.py:329 +#: forms.py:126 forms.py:427 models.py:329 msgid "Volume (l)" msgstr "Volume (l)" -#: forms.py:126 forms.py:418 models.py:330 +#: forms.py:127 forms.py:428 models.py:330 msgid "Weight (g)" msgstr "Poids (g)" -#: forms.py:128 models.py:359 +#: forms.py:129 models.py:359 msgid "Dimensions comment" msgstr "Commentaire concernant les dimensions" -#: forms.py:129 forms.py:419 models.py:333 +#: forms.py:130 forms.py:429 models.py:333 msgid "Find number" msgstr "Mobilier (en nombre)" -#: forms.py:130 models.py:361 +#: forms.py:131 models.py:361 msgid "Mark" msgstr "Marque" -#: forms.py:131 forms.py:241 models.py:367 +#: forms.py:132 forms.py:251 models.py:367 msgid "Check" msgstr "Vérification" -#: forms.py:133 models.py:369 +#: forms.py:134 models.py:369 msgid "Check date" msgstr "Date de vérification" -#: forms.py:134 models.py:118 models.py:362 models.py:682 +#: forms.py:135 models.py:118 models.py:362 models.py:682 msgid "Comment" msgstr "Commentaires" -#: forms.py:137 models.py:363 +#: forms.py:138 models.py:363 msgid "Comment on dating" msgstr "Commentaire général sur les datations" -#: forms.py:138 models.py:371 +#: forms.py:139 models.py:371 msgid "Estimated value" msgstr "Valeur estimée" -#: forms.py:140 +#: forms.py:141 msgid "Image" msgstr "Image" -#: forms.py:141 +#: forms.py:142 #, python-format msgid "" "

Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).Les images trop grandes sont retaillées en : %(width)dx%(height)d (le " "ratio est conservé).

" -#: forms.py:174 forms.py:202 models.py:341 +#: forms.py:181 forms.py:212 models.py:341 msgid "Dating" msgstr "Datation" -#: forms.py:179 forms.py:226 +#: forms.py:186 forms.py:236 msgid "Period" msgstr "Période" -#: forms.py:180 forms.py:579 models.py:695 models.py:760 models.py:896 +#: forms.py:187 forms.py:590 models.py:695 models.py:760 models.py:896 #: templates/ishtar/sheet_find.html:81 templates/ishtar/sheet_find.html:110 msgid "Start date" msgstr "Date de début" -#: forms.py:182 forms.py:581 models.py:696 models.py:761 models.py:897 +#: forms.py:189 forms.py:592 models.py:696 models.py:761 models.py:897 #: templates/ishtar/sheet_find.html:82 templates/ishtar/sheet_find.html:111 msgid "End date" msgstr "Date de fin" -#: forms.py:183 +#: forms.py:190 msgid "Quality" msgstr "Qualité" -#: forms.py:185 +#: forms.py:192 msgid "Dating type" msgstr "Type de datation" -#: forms.py:187 +#: forms.py:194 msgid "Precise dating" msgstr "Datation précise" -#: forms.py:206 models.py:136 +#: forms.py:216 models.py:136 msgid "Short ID" msgstr "ID court" -#: forms.py:207 models.py:139 +#: forms.py:217 models.py:139 msgid "Complete ID" msgstr "ID complet" -#: forms.py:211 +#: forms.py:221 msgid "Year" msgstr "Année" -#: forms.py:214 +#: forms.py:224 msgid "Code PATRIARCHE" msgstr "Code PATRIARCHE" -#: forms.py:218 +#: forms.py:228 msgid "Archaelogical site" msgstr "Entité Archéologique" -#: forms.py:224 +#: forms.py:234 msgid "Search within operation relations" msgstr "Rechercher parmi les opérations reliées" -#: forms.py:229 models.py:89 +#: forms.py:239 models.py:89 msgid "Object type" msgstr "Type d'objet" -#: forms.py:242 +#: forms.py:252 msgid "Has an image?" msgstr "Dispose d'une image ?" -#: forms.py:284 forms.py:297 views.py:120 +#: forms.py:294 forms.py:307 views.py:120 msgid "Find search" msgstr "Recherche de mobilier" -#: forms.py:311 +#: forms.py:321 msgid "Upstream finds" msgstr "Mobilier amont" -#: forms.py:313 models.py:385 +#: forms.py:323 models.py:385 msgid "Finds" msgstr "Mobilier" -#: forms.py:323 +#: forms.py:333 msgid "You should at least select one archaeological find." msgstr "Vous devez sélectionner au moins un mobilier archéologique." -#: forms.py:409 +#: forms.py:419 msgid "Resulting find" msgstr "Mobilier résultant" -#: forms.py:414 +#: forms.py:424 msgid "Precise description" msgstr "Description précise" -#: forms.py:428 +#: forms.py:439 msgid "Resulting finds" msgstr "Mobiliers résultants" -#: forms.py:433 +#: forms.py:444 msgid "Would you like to delete this find?" msgstr "Souhaitez vous supprimer ce mobilier ?" -#: forms.py:437 +#: forms.py:448 msgid "Upstream find" msgstr "Mobilier amont" -#: forms.py:448 +#: forms.py:459 msgid "Archaeological find search" msgstr "Recherche de mobilier" -#: forms.py:450 +#: forms.py:461 msgid "You should select an archaeological find." msgstr "Vous devez sélectionner du mobilier." -#: forms.py:455 +#: forms.py:466 msgid "Year of the operation" msgstr "Année de l'opération" -#: forms.py:457 +#: forms.py:468 msgid "Numeric reference" msgstr "Référence numérique" -#: forms.py:464 +#: forms.py:475 msgid "Period of the archaelogical find" msgstr "Période du mobilier" -#: forms.py:466 +#: forms.py:477 msgid "Material type of the archaelogical find" msgstr "Type de matériau du mobilier" -#: forms.py:468 +#: forms.py:479 msgid "Description of the archaelogical find" msgstr "Description du mobilier" -#: forms.py:480 +#: forms.py:491 msgid "Documentation search" msgstr "Recherche de document" -#: forms.py:482 +#: forms.py:493 msgid "You should select a document." msgstr "Vous devez sélectionner un document." -#: forms.py:499 +#: forms.py:510 msgid "Another basket already exist with this name." msgstr "Un autre panier existe déjà avec ce nom." -#: forms.py:509 ishtar_menu.py:60 +#: forms.py:520 ishtar_menu.py:60 msgid "Basket" msgstr "Panier" -#: forms.py:559 +#: forms.py:570 msgid "Base treatment" msgstr "Traitement de base" -#: forms.py:564 models.py:671 models.py:684 models.py:759 +#: forms.py:575 models.py:671 models.py:684 models.py:759 msgid "Treatment type" msgstr "Type de traitement" -#: forms.py:566 models.py:693 models.py:764 +#: forms.py:577 models.py:693 models.py:764 #: templates/ishtar/sheet_find.html:79 templates/ishtar/sheet_find.html:108 msgid "Doer" msgstr "Opérateur" -#: forms.py:572 models.py:686 models.py:762 +#: forms.py:583 models.py:686 models.py:762 msgid "Location" msgstr "Lieu" -#: forms.py:592 +#: forms.py:604 msgid "Leave it blank if you want to select a single item" msgstr "Ne pas modifier si vous voulez sélectionner un seul élément" -#: forms.py:599 +#: forms.py:611 msgid "This treatment type is not available." msgstr "Ce type de traitement n'est pas disponible" -#: forms.py:603 +#: forms.py:615 msgid "This treatment needs a basket." msgstr "Ce traitement nécessite de sélectionner un panier." diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po index c709c7303..b154cdab2 100644 --- a/translations/fr/archaeological_operations.po +++ b/translations/fr/archaeological_operations.po @@ -15,14 +15,14 @@ msgstr "" "Language-Team: \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=n>1;\n" -"X-Generator: Zanata 3.9.3\n" +"X-Generator: Zanata 3.9.5\n" -#: forms.py:66 forms.py:368 forms.py:952 forms.py:974 forms.py:978 +#: forms.py:67 forms.py:369 forms.py:956 forms.py:978 forms.py:982 #: models.py:815 templates/ishtar/blocks/window_tables/parcels.html:10 msgid "Parcels" msgstr "Parcelles" -#: forms.py:69 forms.py:202 forms.py:928 models.py:801 +#: forms.py:70 forms.py:203 forms.py:932 models.py:801 #: templates/ishtar/blocks/window_tables/parcels.html:7 #: templates/ishtar/dashboards/dashboard_operation.html:432 #: templates/ishtar/dashboards/dashboard_operation.html:446 @@ -31,92 +31,92 @@ msgstr "Parcelles" msgid "Town" msgstr "Commune" -#: forms.py:71 forms.py:457 forms.py:731 forms.py:1192 models.py:194 +#: forms.py:72 forms.py:459 forms.py:733 forms.py:1202 models.py:194 #: models.py:618 models.py:799 #: templates/ishtar/blocks/window_tables/parcels.html:8 msgid "Year" msgstr "Année" -#: forms.py:74 models.py:802 +#: forms.py:75 models.py:802 #: templates/ishtar/blocks/window_tables/parcels.html:9 msgid "Section" msgstr "Section" -#: forms.py:77 models.py:804 +#: forms.py:78 models.py:804 msgid "Parcel number" msgstr "Numéro de parcelle" -#: forms.py:79 models.py:806 models.py:823 models.py:872 +#: forms.py:80 models.py:806 models.py:823 models.py:872 msgid "Public domain" msgstr "Domaine public" -#: forms.py:123 +#: forms.py:124 msgid "Town section is required." msgstr "Vous devez renseigner le secteur." -#: forms.py:167 +#: forms.py:168 msgid "Current parcels" msgstr "Parcelles actuelles" -#: forms.py:169 +#: forms.py:170 msgid "Deleted parcels" msgstr "Parcelles supprimées" -#: forms.py:205 +#: forms.py:206 msgid "Full text input" msgstr "Saisie libre" -#: forms.py:207 +#: forms.py:208 msgid "example: \"2013: XD:1 to 13,24,33 to 39, YD:24\" or \"AB:24,AC:42\"" msgstr "exemple : \"2013: XD:1 à 13,24,33 à 39, YD:24\" ou \"AB:24,AC:42\"" -#: forms.py:362 +#: forms.py:363 msgid "There are identical parcels." msgstr "Il y a des parcelles identiques." -#: forms.py:377 +#: forms.py:378 msgid "Relation type" msgstr "Type de relation" -#: forms.py:380 ishtar_menu.py:30 models.py:276 models.py:518 models.py:543 +#: forms.py:381 ishtar_menu.py:30 models.py:276 models.py:518 models.py:543 #: models.py:559 models.py:610 models.py:798 wizards.py:338 wizards.py:349 #: templates/ishtar/sheet_operation.html:4 msgid "Operation" msgstr "Opération" -#: forms.py:399 +#: forms.py:401 msgid ":" msgstr ": " -#: forms.py:407 forms.py:585 forms.py:1157 +#: forms.py:409 forms.py:587 forms.py:1167 msgid "You should select an operation." msgstr "Vous devez sélectionner une opération." -#: forms.py:411 +#: forms.py:413 msgid "You should select a relation type." msgstr "Vous devez sélectionner un type de relation." -#: forms.py:441 +#: forms.py:443 msgid "Current relations" msgstr "Relations actuelles" -#: forms.py:443 +#: forms.py:445 msgid "Deleted relations" msgstr "Relations supprimées" -#: forms.py:447 templates/ishtar/sheet_operation.html:114 +#: forms.py:449 templates/ishtar/sheet_operation.html:114 msgid "Relations" msgstr "Relations" -#: forms.py:458 forms.py:1163 +#: forms.py:460 forms.py:1173 msgid "Numeric reference" msgstr "Identifiant numérique" -#: forms.py:464 forms.py:1203 +#: forms.py:466 forms.py:1213 msgid "Parcel (section/number/public domain)" msgstr "Parcelle (section/nombre/domaine public)" -#: forms.py:467 forms.py:1206 models.py:519 +#: forms.py:469 forms.py:1216 models.py:519 #: templates/ishtar/dashboards/dashboard_operation.html:390 #: templates/ishtar/dashboards/dashboard_operation.html:411 #: templates/ishtar/dashboards/dashboard_operation.html:643 @@ -124,219 +124,219 @@ msgstr "Parcelle (section/nombre/domaine public)" msgid "Department" msgstr "Département" -#: forms.py:468 forms.py:1038 models.py:78 +#: forms.py:470 forms.py:1044 models.py:78 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8 msgid "Name" msgstr "Nom" -#: forms.py:470 forms.py:652 forms.py:729 forms.py:1169 models.py:202 +#: forms.py:472 forms.py:654 forms.py:731 forms.py:1179 models.py:202 msgid "Operation type" msgstr "Type d'opération" -#: forms.py:472 +#: forms.py:474 msgid "Is open?" msgstr "Est ouvert ?" -#: forms.py:481 forms.py:758 models.py:191 +#: forms.py:483 forms.py:760 models.py:191 msgid "In charge" msgstr "Responsable" -#: forms.py:488 models.py:604 +#: forms.py:490 models.py:604 msgid "Scientist in charge" msgstr "Responsable scientifique" -#: forms.py:490 forms.py:654 forms.py:749 models.py:189 +#: forms.py:492 forms.py:656 forms.py:751 models.py:189 msgid "Operator" msgstr "Opérateur" -#: forms.py:497 forms.py:1043 models.py:82 models.py:204 +#: forms.py:499 forms.py:1049 models.py:82 models.py:204 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:10 msgid "Remains" msgstr "Vestiges" -#: forms.py:498 forms.py:1022 forms.py:1040 models.py:80 models.py:209 +#: forms.py:500 forms.py:1027 forms.py:1046 models.py:80 models.py:209 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9 msgid "Periods" msgstr "Périodes" -#: forms.py:499 +#: forms.py:501 msgid "Started before" msgstr "Commencé avant" -#: forms.py:501 +#: forms.py:503 msgid "Started after" msgstr "Commencé après" -#: forms.py:503 +#: forms.py:505 msgid "Ended before" msgstr "Terminé avant" -#: forms.py:505 +#: forms.py:507 msgid "Ended after" msgstr "Terminé après" -#: forms.py:508 +#: forms.py:510 msgid "Search within relations" msgstr "Recherche parmi les relations" -#: forms.py:510 forms.py:797 models.py:255 +#: forms.py:512 forms.py:799 models.py:255 msgid "Comment" msgstr "Commentaire" -#: forms.py:511 +#: forms.py:513 msgid "Abstract (full text search)" msgstr "Résumé (recherche texte intégral)" -#: forms.py:512 forms.py:799 models.py:267 +#: forms.py:514 forms.py:801 models.py:267 msgid "Record quality" msgstr "Qualité d'enregistrement" -#: forms.py:513 forms.py:781 models.py:221 +#: forms.py:515 forms.py:783 models.py:221 msgid "Report processing" msgstr "Traitement du rapport" -#: forms.py:515 forms.py:802 models.py:262 +#: forms.py:517 forms.py:804 models.py:262 msgid "Virtual operation" msgstr "Opération virtuelle" -#: forms.py:517 forms.py:1083 +#: forms.py:519 forms.py:1093 msgid "Archaelogical site" msgstr "Entité Archéologique" -#: forms.py:523 forms.py:1210 +#: forms.py:525 forms.py:1220 msgid "Created by" msgstr "Créé par" -#: forms.py:529 forms.py:1216 +#: forms.py:531 forms.py:1226 msgid "Modified by" msgstr "Modifié par" -#: forms.py:572 forms.py:1155 views.py:247 +#: forms.py:574 forms.py:1165 views.py:247 msgid "Operation search" msgstr "Recherche d'opérations" -#: forms.py:616 +#: forms.py:618 msgid "Associated file" msgstr "Dossier associé" -#: forms.py:620 forms.py:876 models.py:615 wizards.py:76 +#: forms.py:622 forms.py:880 models.py:615 wizards.py:76 msgid "Archaelogical file" msgstr "Dossier" -#: forms.py:627 forms.py:629 models.py:269 +#: forms.py:629 forms.py:631 models.py:269 msgid "Abstract" msgstr "Résumé" -#: forms.py:632 +#: forms.py:634 msgid "months" msgstr "mois" -#: forms.py:632 +#: forms.py:634 msgid "years" msgstr "années" -#: forms.py:634 models.py:175 +#: forms.py:636 models.py:175 msgid "Creation date" msgstr "Date de création" -#: forms.py:635 +#: forms.py:637 msgid "Start of field work" msgstr "Début du travail de terrain" -#: forms.py:637 +#: forms.py:639 msgid "All" msgstr "Tout" -#: forms.py:638 +#: forms.py:640 msgid "Preventive" msgstr "Préventif" -#: forms.py:639 +#: forms.py:641 msgid "Research" msgstr "Programmé" -#: forms.py:643 +#: forms.py:645 msgid "Slicing" msgstr "Découpage" -#: forms.py:646 +#: forms.py:648 msgid "Department detail" msgstr "Détail par département" -#: forms.py:648 +#: forms.py:650 msgid "Date get from" msgstr "Date obtenue depuis" -#: forms.py:650 +#: forms.py:652 msgid "Preventive/Research" msgstr "Préventif/Programmé" -#: forms.py:656 +#: forms.py:658 msgid "Date after" msgstr "Date après" -#: forms.py:658 +#: forms.py:660 msgid "Date before" msgstr "Date avant" -#: forms.py:660 +#: forms.py:662 msgid "With reports" msgstr "Avec un rapport" -#: forms.py:661 +#: forms.py:663 msgid "With finds" msgstr "Avec du mobilier" -#: forms.py:713 forms.py:1264 templates/ishtar/sheet_administrativeact.html:13 +#: forms.py:715 forms.py:1274 templates/ishtar/sheet_administrativeact.html:13 #: templates/ishtar/sheet_operation.html:30 msgid "General" msgstr "Général" -#: forms.py:727 models.py:254 +#: forms.py:729 models.py:254 msgid "Generic name" msgstr "Nom générique" -#: forms.py:736 models.py:223 +#: forms.py:738 models.py:223 msgid "Old code" msgstr "Ancien code" -#: forms.py:739 +#: forms.py:741 msgid "Head scientist" msgstr "Responsable scientifique" -#: forms.py:755 models.py:253 +#: forms.py:757 models.py:253 msgid "Operator reference" msgstr "Référence de l'opérateur" -#: forms.py:767 +#: forms.py:769 msgid "Total surface (m2)" msgstr "Surface totale (m2)" -#: forms.py:774 models.py:50 models.py:178 models.py:988 +#: forms.py:776 models.py:50 models.py:178 models.py:988 msgid "Start date" msgstr "Date de début" -#: forms.py:776 models.py:180 +#: forms.py:778 models.py:180 msgid "Excavation end date" msgstr "Date de fin de chantier" -#: forms.py:779 models.py:181 +#: forms.py:781 models.py:181 msgid "Report delivery date" msgstr "Date de livraison du rapport" -#: forms.py:829 +#: forms.py:833 msgid "" "If you want to set an excavation end date you have to provide a start date." msgstr "" "Avant de renseigner la date de fin de chantier, il est nécessaire de " "renseigner une date de début." -#: forms.py:834 +#: forms.py:838 msgid "The excavation end date cannot be before the start date." msgstr "" "La date de fin de chantier ne peut être antérieure à la date de début." -#: forms.py:862 +#: forms.py:866 #, python-format msgid "" "Operation code already exist for year: %(year)d - use a value bigger than " @@ -345,109 +345,109 @@ msgstr "" "Ce code d'opération existe déjà pour l'année %(year)d - utilisez une valeur " "plus grande que %(last_val)d" -#: forms.py:866 +#: forms.py:870 msgid "Bad operation code" msgstr "Mauvais code d'opération" -#: forms.py:872 models.py:195 models.py:405 +#: forms.py:876 models.py:195 models.py:405 msgid "Operation code" msgstr "Code de l'opération" -#: forms.py:898 +#: forms.py:902 msgid "Preventive informations - excavation" msgstr "Information archéologie préventive - fouille" -#: forms.py:899 models.py:207 +#: forms.py:903 models.py:207 #: templates/ishtar/dashboards/dashboard_operation.html:699 msgid "Cost (euros)" msgstr "Coût (euros)" -#: forms.py:900 models.py:212 +#: forms.py:904 models.py:212 msgid "Scheduled man-days" msgstr "Jours-hommes prévus" -#: forms.py:902 models.py:215 +#: forms.py:906 models.py:215 msgid "Optional man-days" msgstr "Jours-hommes optionnels" -#: forms.py:904 models.py:218 +#: forms.py:908 models.py:218 msgid "Effective man-days" msgstr "Jours-hommes effectifs" -#: forms.py:914 +#: forms.py:918 msgid "Preventive informations - diagnostic" msgstr "Information archéologie préventive - diagnostic" -#: forms.py:917 models.py:237 +#: forms.py:921 models.py:237 msgid "Prescription on zoning" msgstr "Prescription sur zonage" -#: forms.py:919 models.py:240 +#: forms.py:923 models.py:240 msgid "Prescription on large area" msgstr "Prescription sur une vaste surface" -#: forms.py:922 models.py:242 +#: forms.py:926 models.py:242 msgid "Prescription on geoarchaeological context" msgstr "Prescription sur un contexte géoarchéologique" -#: forms.py:926 forms.py:948 models.py:206 models.py:628 +#: forms.py:930 forms.py:952 models.py:206 models.py:628 msgid "Towns" msgstr "Communes" -#: forms.py:955 models.py:814 models.py:986 +#: forms.py:959 models.py:814 models.py:986 msgid "Parcel" msgstr "Parcelle" -#: forms.py:1007 models.py:44 +#: forms.py:1011 models.py:44 msgid "Remain types" msgstr "Types de vestige" -#: forms.py:1011 models.py:43 +#: forms.py:1015 models.py:43 msgid "Remain type" msgstr "Type de vestige" -#: forms.py:1026 +#: forms.py:1031 msgid "Period" msgstr "Période" -#: forms.py:1037 models.py:77 +#: forms.py:1043 models.py:77 msgid "Reference" msgstr "Référence" -#: forms.py:1062 +#: forms.py:1072 msgid "This reference already exists." msgstr "Cette référence existe déjà." -#: forms.py:1079 models.py:86 +#: forms.py:1089 models.py:86 msgid "Archaeological site" msgstr "Entité archéologique" -#: forms.py:1094 models.py:87 models.py:259 +#: forms.py:1104 models.py:87 models.py:259 #: templates/ishtar/sheet_operation.html:125 msgid "Archaeological sites" msgstr "Entités archéologiques" -#: forms.py:1098 +#: forms.py:1108 msgid "Associated archaelogical sites" msgstr "Entités archéologiques associées" -#: forms.py:1104 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92 +#: forms.py:1114 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92 msgid "Search" msgstr "Recherche" -#: forms.py:1109 +#: forms.py:1119 msgid "Would you like to close this operation?" msgstr "Voulez-vous clore cette opération ?" -#: forms.py:1114 +#: forms.py:1124 msgid "Would you like to delete this operation?" msgstr "Voulez-vous supprimer cette opération ?" -#: forms.py:1123 forms.py:1193 forms.py:1328 models.py:545 models.py:595 +#: forms.py:1133 forms.py:1203 forms.py:1339 models.py:545 models.py:595 msgid "Index" msgstr "Index" -#: forms.py:1149 +#: forms.py:1159 #, python-format msgid "" "Index already exists for operation: %(operation)s - use a value bigger than " @@ -456,48 +456,48 @@ msgstr "" "Cet index existe déjà pour l'opération : %(operation)s, utilisez une valeur " "plus grande que %(last_val)d" -#: forms.py:1161 +#: forms.py:1171 msgid "Operation's year" msgstr "Année de l'opération" -#: forms.py:1168 +#: forms.py:1178 msgid "Operation's town" msgstr "Commune de l'opération" -#: forms.py:1181 +#: forms.py:1191 msgid "Documentation search" msgstr "Recherche de document" -#: forms.py:1183 +#: forms.py:1193 msgid "You should select a document." msgstr "Vous devez sélectionner un document." -#: forms.py:1200 forms.py:1267 models.py:570 models.py:589 +#: forms.py:1210 forms.py:1277 models.py:570 models.py:589 msgid "Act type" msgstr "Type d'acte" -#: forms.py:1201 forms.py:1398 +#: forms.py:1211 forms.py:1409 msgid "Indexed?" msgstr "Indexé ?" -#: forms.py:1207 forms.py:1272 models.py:619 +#: forms.py:1217 forms.py:1282 models.py:619 #: templates/ishtar/blocks/window_tables/administrativacts.html:10 msgid "Object" msgstr "Objet" -#: forms.py:1244 views.py:403 +#: forms.py:1254 views.py:403 msgid "Administrative act search" msgstr "Recherche d'actes administratifs" -#: forms.py:1259 forms.py:1356 forms.py:1423 +#: forms.py:1269 forms.py:1367 forms.py:1434 msgid "You should select an administrative act." msgstr "Vous devez sélectionner un acte administratif." -#: forms.py:1275 models.py:616 +#: forms.py:1285 models.py:616 msgid "Signature date" msgstr "Date de signature" -#: forms.py:1316 +#: forms.py:1327 #, python-format msgid "" "This index already exist for year: %(year)d - use a value bigger than " @@ -506,31 +506,31 @@ msgstr "" "Cet index existe déjà pour l'année : %(year)d, utilisez une valeur plus " "grande que %(last_val)d" -#: forms.py:1320 +#: forms.py:1331 msgid "Bad index" msgstr "Mauvais index" -#: forms.py:1333 +#: forms.py:1344 msgid "Would you like to delete this administrative act?" msgstr "Voulez-vous supprimer cet acte administratif ?" -#: forms.py:1338 +#: forms.py:1349 msgid "Template" msgstr "Patron" -#: forms.py:1362 forms.py:1366 +#: forms.py:1373 forms.py:1377 msgid "This document is not intended for this type of act." msgstr "Ce document n'est pas destiné à ce type d'acte." -#: forms.py:1384 +#: forms.py:1395 msgid "Doc generation" msgstr "Génération de document" -#: forms.py:1386 +#: forms.py:1397 msgid "Generate the associated doc?" msgstr "Générer le document associé ?" -#: forms.py:1407 ishtar_menu.py:121 views.py:456 +#: forms.py:1418 ishtar_menu.py:121 views.py:456 msgctxt "admin act register" msgid "Register" msgstr "Registre" diff --git a/translations/fr/archaeological_warehouse.po b/translations/fr/archaeological_warehouse.po index 23dde1c2c..2e7367415 100644 --- a/translations/fr/archaeological_warehouse.po +++ b/translations/fr/archaeological_warehouse.po @@ -13,9 +13,9 @@ msgstr "" "Language-Team: \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=n>1;\n" -"X-Generator: Zanata 3.9.3\n" +"X-Generator: Zanata 3.9.5\n" -#: forms.py:34 forms.py:96 models.py:44 models.py:73 +#: forms.py:34 forms.py:97 models.py:44 models.py:73 msgid "Warehouse" msgstr "Dépôt" @@ -31,7 +31,7 @@ msgstr "Type de dépôt" msgid "Person in charge" msgstr "Responsable" -#: forms.py:54 forms.py:101 models.py:41 models.py:77 +#: forms.py:54 forms.py:102 models.py:41 models.py:77 msgid "Comment" msgstr "Commentaires" @@ -59,43 +59,43 @@ msgstr "Pays" msgid "Phone" msgstr "Téléphone" -#: forms.py:92 models.py:80 +#: forms.py:93 models.py:80 msgid "Container" msgstr "Contenant" -#: forms.py:93 forms.py:127 models.py:63 +#: forms.py:94 forms.py:129 models.py:63 msgid "Ref." msgstr "Réf." -#: forms.py:94 forms.py:126 models.py:66 models.py:75 +#: forms.py:95 forms.py:128 models.py:66 models.py:75 msgid "Container type" msgstr "Type de contenant" -#: forms.py:137 +#: forms.py:139 msgid "Container search" msgstr "Recherche de contenant" -#: forms.py:139 +#: forms.py:141 msgid "You should select a container." msgstr "Vous devez sélectionner un contenant." -#: forms.py:140 +#: forms.py:142 msgid "Add a new container" msgstr "Ajouter un nouveau contenant." -#: forms.py:144 ishtar_menu.py:33 views.py:94 +#: forms.py:146 ishtar_menu.py:33 views.py:94 msgid "Packaging" msgstr "Conditionnement" -#: forms.py:151 +#: forms.py:153 msgid "Packager" msgstr "Personne assurant le conditionnement" -#: forms.py:157 +#: forms.py:159 msgid "Date" msgstr "Date" -#: forms.py:166 +#: forms.py:168 msgid "Packaged finds" msgstr "Mobilier conditionné" diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po index cc510c51c..090b141d0 100644 --- a/translations/fr/ishtar_common.po +++ b/translations/fr/ishtar_common.po @@ -10,12 +10,12 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2016-08-29 11:39-0400\n" +"PO-Revision-Date: 2016-09-02 03:42-0400\n" "Last-Translator: Étienne Loks \n" "Language-Team: \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=n>1;\n" -"X-Generator: Zanata 3.9.3\n" +"X-Generator: Zanata 3.9.5\n" #: __init__.py:8 msgid "username" @@ -33,7 +33,7 @@ msgstr "Élément associé" msgid "Archaeological file" msgstr "Dossier" -#: context_processors.py:39 models.py:1457 +#: context_processors.py:39 models.py:1486 msgid "Operation" msgstr "Opération" @@ -161,7 +161,7 @@ msgstr "\"%(value)s\" n'est pas dans %(values)s" msgid "Enter a valid name consisting of letters, spaces and hyphens." msgstr "Entrez un nom correct composé de lettres, espaces et tirets." -#: forms.py:71 forms_common.py:490 +#: forms.py:71 forms_common.py:499 msgid "Confirm" msgstr "Confirmer" @@ -185,18 +185,18 @@ msgstr "Vous devez sélectionner un élément." msgid "Add a new item" msgstr "Ajouter un nouvel élément" -#: forms.py:204 models.py:1234 +#: forms.py:235 models.py:1255 msgid "Template" msgstr "Patron" -#: forms_common.py:39 forms_common.py:57 forms_common.py:170 -#: forms_common.py:293 models.py:1300 models.py:2583 +#: forms_common.py:40 forms_common.py:58 forms_common.py:171 +#: forms_common.py:296 models.py:1321 models.py:2618 #: templates/blocks/JQueryAdvancedTown.html:19 #: templates/ishtar/sheet_organization.html:13 msgid "Town" msgstr "Commune" -#: forms_common.py:41 +#: forms_common.py:42 msgid "" "

Type name, department code and/or postal code of the town you would like " "to select. The search is insensitive to case.

\n" @@ -214,70 +214,70 @@ msgstr "" "

Par exemple tapez « saint denis 93 » pour obtenir la " "commune Saint-Denis dans le département français de Seine-Saint-Denis.

" -#: forms_common.py:66 forms_common.py:718 ishtar_menu.py:47 models.py:1455 -#: models.py:2255 models.py:2407 models.py:2464 +#: forms_common.py:67 forms_common.py:728 ishtar_menu.py:47 models.py:1484 +#: models.py:2295 models.py:2442 models.py:2499 #: templates/ishtar/sheet_person.html:4 msgid "Person" msgstr "Personne" -#: forms_common.py:158 forms_common.py:234 forms_common.py:336 -#: ishtar_menu.py:71 models.py:1456 models.py:2172 +#: forms_common.py:159 forms_common.py:236 forms_common.py:341 +#: ishtar_menu.py:71 models.py:1485 models.py:2202 #: templates/ishtar/sheet_organization.html:4 msgid "Organization" msgstr "Organisation" -#: forms_common.py:161 forms_common.py:197 forms_common.py:229 -#: forms_common.py:263 forms_common.py:331 models.py:902 models.py:1233 -#: models.py:1501 models.py:1719 models.py:2166 models.py:2242 models.py:2569 +#: forms_common.py:162 forms_common.py:199 forms_common.py:231 +#: forms_common.py:266 forms_common.py:336 models.py:923 models.py:1254 +#: models.py:1530 models.py:1748 models.py:2196 models.py:2281 models.py:2604 #: templates/ishtar/sheet_organization.html:8 #: templates/ishtar/sheet_organization.html:21 msgid "Name" msgstr "Nom" -#: forms_common.py:162 models.py:1442 models.py:1850 +#: forms_common.py:163 models.py:1471 models.py:1879 msgid "Organization type" msgstr "Type d'organisation" -#: forms_common.py:164 forms_common.py:287 models.py:1295 +#: forms_common.py:165 forms_common.py:290 models.py:1316 #: templates/ishtar/sheet_organization.html:10 msgid "Address" msgstr "Adresse" -#: forms_common.py:166 forms_common.py:290 models.py:1296 +#: forms_common.py:167 forms_common.py:293 models.py:1317 #: templates/ishtar/sheet_organization.html:11 msgid "Address complement" msgstr "Complément d'adresse" -#: forms_common.py:168 forms_common.py:291 models.py:1298 +#: forms_common.py:169 forms_common.py:294 models.py:1319 #: templates/ishtar/sheet_organization.html:12 msgid "Postal code" msgstr "Code postal" -#: forms_common.py:171 forms_common.py:294 models.py:1301 +#: forms_common.py:172 forms_common.py:297 models.py:1322 msgid "Country" msgstr "Pays" -#: forms_common.py:173 forms_common.py:231 forms_common.py:267 -#: forms_common.py:333 forms_common.py:446 models.py:1328 +#: forms_common.py:174 forms_common.py:233 forms_common.py:270 +#: forms_common.py:338 forms_common.py:453 models.py:1349 msgid "Email" msgstr "Courriel" -#: forms_common.py:174 forms_common.py:270 models.py:1313 +#: forms_common.py:175 forms_common.py:273 models.py:1334 #: templates/ishtar/sheet_organization.html:14 #: templates/ishtar/sheet_person.html:18 #: templates/ishtar/wizard/wizard_person.html:17 msgid "Phone" msgstr "Téléphone" -#: forms_common.py:175 forms_common.py:279 models.py:1325 +#: forms_common.py:176 forms_common.py:282 models.py:1346 #: templates/ishtar/sheet_organization.html:15 #: templates/ishtar/sheet_person.html:36 #: templates/ishtar/wizard/wizard_person.html:35 msgid "Mobile phone" msgstr "Téléphone portable" -#: forms_common.py:198 forms_common.py:232 forms_common.py:334 models.py:1877 -#: models.py:2168 models.py:2505 templates/sheet_ope.html:85 +#: forms_common.py:200 forms_common.py:234 forms_common.py:339 models.py:1907 +#: models.py:2198 models.py:2540 templates/sheet_ope.html:85 #: templates/sheet_ope.html.py:105 templates/sheet_ope.html:126 #: templates/ishtar/import_list.html:13 #: templates/ishtar/sheet_organization.html:23 @@ -285,210 +285,210 @@ msgstr "Téléphone portable" msgid "Type" msgstr "Type" -#: forms_common.py:207 views.py:130 +#: forms_common.py:209 views.py:130 msgid "Organization search" msgstr "Recherche d'organisations" -#: forms_common.py:230 forms_common.py:261 forms_common.py:332 models.py:2240 +#: forms_common.py:232 forms_common.py:264 forms_common.py:337 models.py:2279 #: templates/ishtar/sheet_organization.html:22 msgid "Surname" msgstr "Prénom" -#: forms_common.py:246 forms_common.py:319 views.py:95 +#: forms_common.py:248 forms_common.py:324 views.py:95 msgid "Person search" msgstr "Recherche de personnes" -#: forms_common.py:258 templates/ishtar/sheet_person.html:7 +#: forms_common.py:260 templates/ishtar/sheet_person.html:7 #: templates/ishtar/wizard/wizard_person.html:6 msgid "Identity" msgstr "Identité" -#: forms_common.py:260 forms_common.py:644 forms_common.py:685 models.py:2238 -#: models.py:2502 templates/sheet_ope.html:104 +#: forms_common.py:263 forms_common.py:653 forms_common.py:695 models.py:1880 +#: models.py:2275 models.py:2277 models.py:2537 templates/sheet_ope.html:104 #: templates/ishtar/blocks/window_tables/documents.html:7 msgid "Title" msgstr "Titre" -#: forms_common.py:265 models.py:2244 +#: forms_common.py:268 models.py:2283 msgid "Raw name" msgstr "Nom brut" -#: forms_common.py:268 models.py:1314 +#: forms_common.py:271 models.py:1335 msgid "Phone description" msgstr "Type de téléphone" -#: forms_common.py:271 models.py:1316 models.py:1318 +#: forms_common.py:274 models.py:1337 models.py:1339 msgid "Phone description 2" msgstr "Type de téléphone 2" -#: forms_common.py:273 +#: forms_common.py:276 msgid "Phone 2" msgstr "Téléphone 2" -#: forms_common.py:275 models.py:1322 +#: forms_common.py:278 models.py:1343 msgid "Phone description 3" msgstr "Type de téléphone 3" -#: forms_common.py:277 models.py:1320 +#: forms_common.py:280 models.py:1341 msgid "Phone 3" msgstr "Téléphone 3" -#: forms_common.py:282 +#: forms_common.py:285 msgid "Current organization" msgstr "Organisation actuelle" -#: forms_common.py:296 models.py:1303 +#: forms_common.py:299 models.py:1324 msgid "Other address: address" msgstr "Autre adresse : adresse" -#: forms_common.py:299 models.py:1306 +#: forms_common.py:302 models.py:1327 msgid "Other address: address complement" msgstr "Autre adresse : complément d'adresse" -#: forms_common.py:301 models.py:1307 +#: forms_common.py:304 models.py:1328 msgid "Other address: postal code" msgstr "Autre adresse : code postal" -#: forms_common.py:303 models.py:1309 +#: forms_common.py:306 models.py:1330 msgid "Other address: town" msgstr "Autre adresse : ville" -#: forms_common.py:305 models.py:1311 +#: forms_common.py:308 models.py:1332 msgid "Other address: country" msgstr "Autre adresse : pays" -#: forms_common.py:315 +#: forms_common.py:320 msgid "Already has an account" msgstr "As déjà un compte" -#: forms_common.py:330 +#: forms_common.py:335 msgid "Username" msgstr "Nom d'utilisateur" -#: forms_common.py:348 +#: forms_common.py:353 msgid "Account search" msgstr "Recherche de comptes" -#: forms_common.py:395 forms_common.py:425 forms_common.py:429 models.py:2220 +#: forms_common.py:400 forms_common.py:431 forms_common.py:435 models.py:2250 msgid "Person type" msgstr "Type de personne" -#: forms_common.py:440 forms_common.py:445 ishtar_menu.py:32 +#: forms_common.py:447 forms_common.py:452 ishtar_menu.py:32 msgid "Account" msgstr "Compte" -#: forms_common.py:449 wizards.py:1170 +#: forms_common.py:456 wizards.py:1170 msgid "New password" msgstr "Nouveau mot de passe" -#: forms_common.py:452 +#: forms_common.py:459 msgid "New password (confirmation)" msgstr "Nouveau mot de passe (confirmation)" -#: forms_common.py:471 +#: forms_common.py:480 msgid "Your password and confirmation password do not match." msgstr "La vérification du mot de passe a échoué." -#: forms_common.py:476 +#: forms_common.py:485 msgid "You must provide a correct password." msgstr "Vous devez fournir un mot de passe correct." -#: forms_common.py:484 +#: forms_common.py:493 msgid "This username already exists." msgstr "Ce nom d'utilisateur existe déjà." -#: forms_common.py:491 +#: forms_common.py:500 msgid "Send the new password by email?" msgstr "Envoyer le nouveau mot de passe par courriel ?" -#: forms_common.py:500 forms_common.py:513 models.py:2584 +#: forms_common.py:509 forms_common.py:522 models.py:2619 msgid "Towns" msgstr "Communes" -#: forms_common.py:510 +#: forms_common.py:519 msgid "There are identical towns." msgstr "Il y a des communes identiques." -#: forms_common.py:594 +#: forms_common.py:603 msgid "Only one choice can be checked." msgstr "Seul un choix peut être coché." -#: forms_common.py:642 +#: forms_common.py:651 msgid "Documentation informations" msgstr "Information sur le document" -#: forms_common.py:646 forms_common.py:686 models.py:1851 models.py:2485 +#: forms_common.py:655 forms_common.py:696 models.py:1881 models.py:2520 msgid "Source type" msgstr "Type de document" -#: forms_common.py:648 forms_common.py:687 templates/sheet_ope.html:84 +#: forms_common.py:657 forms_common.py:697 templates/sheet_ope.html:84 msgid "Reference" msgstr "Référence" -#: forms_common.py:651 forms_common.py:688 +#: forms_common.py:660 forms_common.py:698 msgid "Internal reference" msgstr "Référence interne" -#: forms_common.py:654 models.py:2516 +#: forms_common.py:663 models.py:2551 msgid "Numerical ressource (web address)" msgstr "Ressource numérique (adresse web)" -#: forms_common.py:655 models.py:2518 +#: forms_common.py:664 models.py:2553 msgid "Receipt date" msgstr "Date de réception" -#: forms_common.py:657 models.py:2004 models.py:2520 +#: forms_common.py:666 models.py:2034 models.py:2555 msgid "Creation date" msgstr "Date de création" -#: forms_common.py:660 models.py:2523 +#: forms_common.py:669 models.py:2558 msgid "Receipt date in documentation" msgstr "Date de réception en documentation" -#: forms_common.py:662 forms_common.py:690 models.py:287 models.py:516 -#: models.py:1746 models.py:2248 models.py:2530 +#: forms_common.py:671 forms_common.py:700 models.py:287 models.py:537 +#: models.py:1775 models.py:2287 models.py:2565 msgid "Comment" msgstr "Commentaire" -#: forms_common.py:664 forms_common.py:689 models.py:904 models.py:1505 -#: models.py:1678 models.py:1720 models.py:2529 templates/sheet_ope.html:128 +#: forms_common.py:673 forms_common.py:699 models.py:925 models.py:1534 +#: models.py:1707 models.py:1749 models.py:2564 templates/sheet_ope.html:128 msgid "Description" msgstr "Description" -#: forms_common.py:667 models.py:2531 +#: forms_common.py:676 models.py:2566 msgid "Additional information" msgstr "Informations supplémentaires" -#: forms_common.py:669 forms_common.py:693 models.py:2533 +#: forms_common.py:678 forms_common.py:703 models.py:2568 msgid "Has a duplicate" msgstr "Existe en doublon" -#: forms_common.py:682 forms_common.py:711 forms_common.py:744 models.py:2469 +#: forms_common.py:692 forms_common.py:721 forms_common.py:755 models.py:2504 #: templates/ishtar/wizard/wizard_person_deletion.html:124 msgid "Author" msgstr "Auteur" -#: forms_common.py:692 +#: forms_common.py:702 msgid "Additional informations" msgstr "Informations complémentaires" -#: forms_common.py:703 +#: forms_common.py:713 msgid "Would you like to delete this documentation?" msgstr "Voulez-vous supprimer ce document ?" -#: forms_common.py:719 models.py:1852 models.py:2459 models.py:2466 +#: forms_common.py:729 models.py:1882 models.py:2494 models.py:2501 msgid "Author type" msgstr "Type d'auteur" -#: forms_common.py:737 +#: forms_common.py:748 msgid "Author selection" msgstr "Sélection d'auteur" -#: forms_common.py:751 +#: forms_common.py:762 msgid "There are identical authors." msgstr "Il y a des auteurs identiques." -#: forms_common.py:755 models.py:2470 models.py:2512 +#: forms_common.py:766 models.py:2505 models.py:2547 #: templates/sheet_ope.html:106 #: templates/ishtar/blocks/window_tables/documents.html:9 msgid "Authors" @@ -506,7 +506,7 @@ msgstr "Ajouter/Modifier" msgid "Deletion" msgstr "Suppression" -#: ishtar_menu.py:39 models.py:1029 views.py:1232 +#: ishtar_menu.py:39 models.py:1050 views.py:1232 msgid "Global variables" msgstr "Variables globales" @@ -530,12 +530,12 @@ msgstr "Modification" msgid "Merge" msgstr "Fusion" -#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2041 widgets.py:110 +#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2071 widgets.py:110 #: templates/ishtar/form_delete.html:11 msgid "Delete" msgstr "Suppression" -#: ishtar_menu.py:101 models.py:2015 +#: ishtar_menu.py:101 models.py:2045 msgid "Imports" msgstr "Imports" @@ -563,7 +563,7 @@ msgstr "Un élément sélectionné n'est pas valide." msgid "This item already exists." msgstr "Cet élément existe déjà." -#: models.py:283 models.py:515 models.py:1268 models.py:1280 +#: models.py:283 models.py:536 models.py:1289 models.py:1301 msgid "Label" msgstr "Libellé" @@ -571,83 +571,83 @@ msgstr "Libellé" msgid "Textual ID" msgstr "Identifiant textuel" -#: models.py:288 models.py:518 models.py:1237 +#: models.py:288 models.py:539 models.py:1258 msgid "Available" msgstr "Disponible" -#: models.py:537 models.py:1792 +#: models.py:558 models.py:1821 msgid "Key" msgstr "Clé" -#: models.py:543 +#: models.py:564 msgid "Specific key to an import" msgstr "Clé spécifique à un import" -#: models.py:623 +#: models.py:644 msgid "Last editor" msgstr "Dernier éditeur" -#: models.py:626 +#: models.py:647 msgid "Creator" msgstr "Créateur" -#: models.py:766 models.py:2595 +#: models.py:787 models.py:2630 msgid "Order" msgstr "Ordre" -#: models.py:767 +#: models.py:788 msgid "Symmetrical" msgstr "Symétrique" -#: models.py:768 +#: models.py:789 msgid "Tiny label" msgstr "Petit libellé" -#: models.py:782 +#: models.py:803 msgid "Cannot have symmetrical and an inverse_relation" msgstr "Ne peut pas être symétrique et avoir une relation inverse" -#: models.py:896 +#: models.py:917 msgid "Euro" msgstr "Euro" -#: models.py:897 +#: models.py:918 msgid "US dollar" msgstr "Dollars US" -#: models.py:903 models.py:1503 +#: models.py:924 models.py:1532 msgid "Slug" msgstr "Identifiant texte" -#: models.py:905 +#: models.py:926 msgid "Files module" msgstr "Module Dossiers" -#: models.py:906 +#: models.py:927 msgid "Context records module" msgstr "Module Unités d'Enregistrement" -#: models.py:908 +#: models.py:929 msgid "Finds module" msgstr "Module Mobilier" -#: models.py:909 +#: models.py:930 msgid "Need context records module" msgstr "Nécessite le module Unités d'Enregistrement" -#: models.py:911 +#: models.py:932 msgid "Warehouses module" msgstr "Module Dépôts" -#: models.py:912 +#: models.py:933 msgid "Need finds module" msgstr "Nécessite le module mobilier" -#: models.py:914 +#: models.py:935 msgid "Home page" msgstr "Page d'accueil" -#: models.py:915 +#: models.py:936 msgid "" "Homepage of Ishtar - if not defined a default homepage will appear. Use the " "markdown syntax." @@ -655,22 +655,22 @@ msgstr "" "Page d'accueil d'Ishtar. Si elle n'est pas définie une page d'accueil par " "défaut va apparaître. Utiliser la syntaxe Markdown." -#: models.py:918 +#: models.py:939 msgid "File external id" msgstr "Identifiant externe de fichier" -#: models.py:920 +#: models.py:941 msgid "" "Formula to manage file external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "Formule pour gérer les identifiants externes" -#: models.py:925 +#: models.py:946 msgid "Parcel external id" msgstr "Identifiant externe de parcelle" -#: models.py:928 +#: models.py:949 msgid "" "Formula to manage parcel external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -680,11 +680,11 @@ msgstr "" "précaution. Une formule incorrecte peut rendre l'application inutilisable et " "l'import de données externes peut alors être destructif." -#: models.py:933 +#: models.py:954 msgid "Context record external id" msgstr "Identifiant externe d'unité d'enregistrement" -#: models.py:935 +#: models.py:956 msgid "" "Formula to manage context record external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " @@ -694,11 +694,11 @@ msgstr "" "manipuler avec précaution. Une formule incorrecte peut rendre l'application " "inutilisable et l'import de données externes peut alors être destructif." -#: models.py:940 +#: models.py:961 msgid "Base find external id" msgstr "Identifiant externe de mobilier de base" -#: models.py:942 +#: models.py:963 msgid "" "Formula to manage base find external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " @@ -708,11 +708,11 @@ msgstr "" "manipuler avec précaution. Une formule incorrecte peut rendre l'application " "inutilisable et l'import de données externes peut alors être destructif." -#: models.py:947 +#: models.py:968 msgid "Find external id" msgstr "Identifiant externe de mobilier" -#: models.py:949 +#: models.py:970 msgid "" "Formula to manage find external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -722,11 +722,11 @@ msgstr "" "précaution. Une formule incorrecte peut rendre l'application inutilisable et " "l'import de données externes peut alors être destructif." -#: models.py:954 +#: models.py:975 msgid "Raw name for person" msgstr "Nom brut pour une personne" -#: models.py:956 +#: models.py:977 msgid "" "Formula to manage person raw_name. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -736,43 +736,43 @@ msgstr "" "Une formule incorrecte peut rendre l'application inutilisable et l'import de " "données externes peut alors être destructif." -#: models.py:960 +#: models.py:981 msgid "Current active" msgstr "Actuellement utilisé" -#: models.py:961 +#: models.py:982 msgid "Currency" msgstr "Devise" -#: models.py:965 +#: models.py:986 msgid "Ishtar site profile" msgstr "Profil d'instance Ishtar" -#: models.py:966 +#: models.py:987 msgid "Ishtar site profiles" msgstr "Profils d'instance Ishtar" -#: models.py:1022 +#: models.py:1043 msgid "Variable name" msgstr "Nom de la variable" -#: models.py:1023 +#: models.py:1044 msgid "Description of the variable" msgstr "Description de la variable" -#: models.py:1025 models.py:1793 +#: models.py:1046 models.py:1822 msgid "Value" msgstr "Valeur" -#: models.py:1028 +#: models.py:1049 msgid "Global variable" msgstr "Variable globale" -#: models.py:1138 models.py:1168 +#: models.py:1159 models.py:1189 msgid "Total" msgstr "Total" -#: models.py:1145 models.py:1269 models.py:1281 +#: models.py:1166 models.py:1290 models.py:1302 #: templates/ishtar/sheet_person.html:21 #: templates/ishtar/dashboards/dashboard_main_detail.html:141 #: templates/ishtar/dashboards/dashboard_main_detail_users.html:26 @@ -780,583 +780,591 @@ msgstr "Total" msgid "Number" msgstr "Nombre" -#: models.py:1232 +#: models.py:1253 msgid "Administrative Act" msgstr "Acte administratif" -#: models.py:1236 +#: models.py:1257 msgid "Associated object" msgstr "Objet associé" -#: models.py:1240 +#: models.py:1261 msgid "Document template" msgstr "Patron de document" -#: models.py:1241 +#: models.py:1262 msgid "Document templates" msgstr "Patrons de documents" -#: models.py:1272 models.py:1282 models.py:1999 +#: models.py:1293 models.py:1303 models.py:2029 msgid "State" msgstr "État" -#: models.py:1286 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:1307 templates/blocks/JQueryAdvancedTown.html:12 msgid "Department" msgstr "Département" -#: models.py:1287 +#: models.py:1308 msgid "Departments" msgstr "Départements" -#: models.py:1324 +#: models.py:1345 msgid "Raw phone" msgstr "Téléphone brut" -#: models.py:1330 +#: models.py:1351 msgid "Alternative address is prefered" msgstr "L'adresse alternative est préférée" -#: models.py:1369 +#: models.py:1390 msgid "Tel: " msgstr "Tél :" -#: models.py:1373 +#: models.py:1394 msgid "Mobile: " msgstr "Mobile :" -#: models.py:1377 +#: models.py:1398 msgid "Email: " msgstr "Courriel :" -#: models.py:1382 +#: models.py:1403 msgid "Merge key" msgstr "Clé de fusion" -#: models.py:1443 +#: models.py:1472 msgid "Organization types" msgstr "Types d'organisation" -#: models.py:1459 +#: models.py:1488 msgid "Archaeological site" msgstr "Entité Archéologique" -#: models.py:1460 +#: models.py:1489 msgid "Parcels" msgstr "Parcelles" -#: models.py:1462 +#: models.py:1491 msgid "Operation source" msgstr "Documentation de l'opération" -#: models.py:1465 views.py:1057 views.py:1108 +#: models.py:1494 views.py:1057 views.py:1108 msgid "Archaeological files" msgstr "Dossiers archéologiques" -#: models.py:1467 views.py:1060 views.py:1116 +#: models.py:1496 views.py:1060 views.py:1116 msgid "Context records" msgstr "Unités d'Enregistrement" -#: models.py:1469 +#: models.py:1498 msgid "Context record relations" msgstr "Relations entre Unités d'Enregistrement" -#: models.py:1471 views.py:1062 views.py:1119 +#: models.py:1500 views.py:1062 views.py:1119 msgid "Finds" msgstr "Mobilier" -#: models.py:1507 templates/ishtar/dashboards/dashboard_main.html:25 +#: models.py:1536 templates/ishtar/dashboards/dashboard_main.html:25 msgid "Users" msgstr "Utilisateurs" -#: models.py:1509 +#: models.py:1538 msgid "Associated model" msgstr "Modèle associé" -#: models.py:1512 +#: models.py:1541 msgid "Is template" msgstr "Est un patron" -#: models.py:1513 +#: models.py:1542 msgid "Unicity keys (separator \";\")" msgstr "Clés d'unicité (séparateur « ; »)" -#: models.py:1517 +#: models.py:1546 msgid "Importer - Type" msgstr "Importeur - Type" -#: models.py:1518 +#: models.py:1547 msgid "Importer - Types" msgstr "Importeur - Types" -#: models.py:1608 +#: models.py:1637 msgid "Importer - Default" msgstr "Importeur - Par défaut" -#: models.py:1609 +#: models.py:1638 msgid "Importer - Defaults" msgstr "Importeur - Par défaut" -#: models.py:1644 +#: models.py:1673 msgid "Importer - Default value" msgstr "Importeur - Valeur par défaut" -#: models.py:1645 +#: models.py:1674 msgid "Importer - Default values" msgstr "Importeur - Valeurs par défaut" -#: models.py:1677 +#: models.py:1706 msgid "Column number" msgstr "Numéro de colonne" -#: models.py:1680 +#: models.py:1709 msgid "Required" msgstr "Requis" -#: models.py:1683 +#: models.py:1712 msgid "Importer - Column" msgstr "Importeur - Colonne" -#: models.py:1684 +#: models.py:1713 msgid "Importer - Columns" msgstr "Importeur - Colonnes" -#: models.py:1704 +#: models.py:1733 msgid "Field name" msgstr "Nom du champ" -#: models.py:1706 models.py:1740 +#: models.py:1735 models.py:1769 msgid "Force creation of new items" msgstr "Forcer la création de nouveaux éléments" -#: models.py:1708 models.py:1742 +#: models.py:1737 models.py:1771 msgid "Concatenate with existing" msgstr "Concaténer avec l'existant" -#: models.py:1710 models.py:1744 +#: models.py:1739 models.py:1773 msgid "Concatenate character" msgstr "Caractère de concaténation" -#: models.py:1714 +#: models.py:1743 msgid "Importer - Duplicate field" msgstr "Importeur - Champ dupliqué" -#: models.py:1715 +#: models.py:1744 msgid "Importer - Duplicate fields" msgstr "Importeur - Champs dupliqués" -#: models.py:1722 +#: models.py:1751 msgid "Regular expression" msgstr "Expression régulière" -#: models.py:1725 +#: models.py:1754 msgid "Importer - Regular expression" msgstr "Importeur - Expression régulière" -#: models.py:1726 +#: models.py:1755 msgid "Importer - Regular expressions" msgstr "Importeur - Expressions régulières" -#: models.py:1749 +#: models.py:1778 msgid "Importer - Target" msgstr "Importeur - Cible" -#: models.py:1750 +#: models.py:1779 msgid "Importer - Targets" msgstr "Importeur - Cibles" -#: models.py:1774 views.py:343 +#: models.py:1803 views.py:343 msgid "True" msgstr "Oui" -#: models.py:1775 views.py:345 +#: models.py:1804 views.py:345 msgid "False" msgstr "Non" -#: models.py:1794 +#: models.py:1823 msgid "Is set" msgstr "Est défini" -#: models.py:1801 +#: models.py:1830 msgid "Importer - Target key" msgstr "Importeur - Rapprochement" -#: models.py:1802 +#: models.py:1831 msgid "Importer - Targets keys" msgstr "Importeur - Rapprochements" -#: models.py:1853 models.py:2497 models.py:2508 +#: models.py:1883 models.py:2532 models.py:2543 msgid "Format" msgstr "Format" -#: models.py:1854 models.py:2599 +#: models.py:1884 models.py:2634 msgid "Operation type" msgstr "Type d'opération" -#: models.py:1855 +#: models.py:1885 msgid "Period" msgstr "Périodes" -#: models.py:1856 +#: models.py:1886 msgid "Report state" msgstr "État de rapport" -#: models.py:1857 +#: models.py:1887 msgid "Unit" msgstr "Unité" -#: models.py:1858 +#: models.py:1888 msgid "Material" msgstr "Matériau" -#: models.py:1860 +#: models.py:1890 msgid "Conservatory state" msgstr "État de conservation" -#: models.py:1861 +#: models.py:1891 msgid "Preservation type" msgstr "Type de conservation" -#: models.py:1862 +#: models.py:1892 msgid "Object type" msgstr "Type d'objet" -#: models.py:1864 +#: models.py:1894 msgid "Identification type" msgstr "Type d'identification" -#: models.py:1866 +#: models.py:1896 msgid "Context record relation type" msgstr "Type de relations entre Unités d'Enregistrement" -#: models.py:1867 models.py:2491 +#: models.py:1897 models.py:2526 msgid "Support type" msgstr "Type de support" -#: models.py:1873 +#: models.py:1903 msgid "Integer" msgstr "Entier" -#: models.py:1874 +#: models.py:1904 msgid "Float" msgstr "Nombre à virgule" -#: models.py:1875 +#: models.py:1905 msgid "String" msgstr "Chaîne de caractères" -#: models.py:1876 templates/sheet_ope.html:86 +#: models.py:1906 templates/sheet_ope.html:86 msgid "Date" msgstr "Date" -#: models.py:1878 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 +#: models.py:1908 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 #: templates/ishtar/dashboards/dashboard_main_detail.html:126 msgid "Year" msgstr "Année" -#: models.py:1879 +#: models.py:1909 msgid "String to boolean" msgstr "Chaîne de caractères vers booléen" -#: models.py:1880 +#: models.py:1910 msgctxt "filesystem" msgid "File" msgstr "Fichier" -#: models.py:1881 +#: models.py:1911 msgid "Unknow type" msgstr "Type inconnu" -#: models.py:1897 +#: models.py:1927 msgid "4 digit year. e.g.: \"2015\"" msgstr "Année sur 4 chiffres. Exemple : « 2015 »" -#: models.py:1898 +#: models.py:1928 msgid "4 digit year/month/day. e.g.: \"2015/02/04\"" msgstr "Année sur 4 chiffres/mois/jour. Exemple : « 2015/02/04 »" -#: models.py:1899 +#: models.py:1929 msgid "Day/month/4 digit year. e.g.: \"04/02/2015\"" msgstr "Jour/mois/année sur 4 chiffres. Exemple : « 04/02/2015 »" -#: models.py:1909 +#: models.py:1939 msgid "Options" msgstr "Options" -#: models.py:1911 +#: models.py:1941 msgid "Split character(s)" msgstr "Caractère(s) de séparation" -#: models.py:1915 +#: models.py:1945 msgid "Importer - Formater type" msgstr "Importeur - Type de mise en forme" -#: models.py:1916 +#: models.py:1946 msgid "Importer - Formater types" msgstr "Importeur - Types de mise en forme" -#: models.py:1963 templates/ishtar/dashboards/dashboard_main_detail.html:63 +#: models.py:1993 templates/ishtar/dashboards/dashboard_main_detail.html:63 msgid "Created" msgstr "Créé" -#: models.py:1964 +#: models.py:1994 msgid "Analyse in progress" msgstr "Analyse en cours" -#: models.py:1965 +#: models.py:1995 msgid "Analysed" msgstr "Analysé" -#: models.py:1966 +#: models.py:1996 msgid "Import pending" msgstr "Import en attente" -#: models.py:1967 +#: models.py:1997 msgid "Import in progress" msgstr "Import en cours" -#: models.py:1968 +#: models.py:1998 msgid "Finished with errors" msgstr "Terminé avec des erreurs" -#: models.py:1969 +#: models.py:1999 msgid "Finished" msgstr "Terminé" -#: models.py:1970 +#: models.py:2000 msgid "Archived" msgstr "Archivé" -#: models.py:1982 +#: models.py:2012 msgid "Imported file" msgstr "Fichier importé" -#: models.py:1985 +#: models.py:2015 msgid "Associated images (zip file)" msgstr "Images associées (fichier zip)" -#: models.py:1987 +#: models.py:2017 msgid "Encoding" msgstr "Codage" -#: models.py:1989 +#: models.py:2019 msgid "Skip lines" msgstr "Nombre de lignes d'entête" -#: models.py:1990 templates/ishtar/import_list.html:47 +#: models.py:2020 templates/ishtar/import_list.html:47 msgid "Error file" msgstr "Fichier erreur" -#: models.py:1993 +#: models.py:2023 msgid "Result file" msgstr "Fichier résultant" -#: models.py:1996 templates/ishtar/import_list.html:53 +#: models.py:2026 templates/ishtar/import_list.html:53 msgid "Match file" msgstr "Fichier de correspondance" -#: models.py:2002 +#: models.py:2032 msgid "Conservative import" msgstr "Import conservateur" -#: models.py:2007 +#: models.py:2037 msgid "End date" msgstr "Date de fin" -#: models.py:2009 +#: models.py:2039 msgid "Remaining seconds" msgstr "Secondes restantes" -#: models.py:2014 +#: models.py:2044 msgid "Import" msgstr "Import" -#: models.py:2031 +#: models.py:2061 msgid "Analyse" msgstr "Analyser" -#: models.py:2033 models.py:2036 +#: models.py:2063 models.py:2066 msgid "Re-analyse" msgstr "Analyser de nouveau " -#: models.py:2034 +#: models.py:2064 msgid "Launch import" msgstr "Lancer l'import" -#: models.py:2037 +#: models.py:2067 msgid "Re-import" msgstr "Ré-importer" -#: models.py:2038 +#: models.py:2068 msgid "Archive" msgstr "Archiver" -#: models.py:2040 +#: models.py:2070 msgid "Unarchive" msgstr "Désarchiver" -#: models.py:2173 +#: models.py:2203 msgid "Organizations" msgstr "Organisations" -#: models.py:2175 +#: models.py:2205 msgid "Can view all Organizations" msgstr "Peut voir toutes les Organisations" -#: models.py:2176 +#: models.py:2206 msgid "Can view own Organization" msgstr "Peut voir sa propre Organisation" -#: models.py:2177 +#: models.py:2207 msgid "Can add own Organization" msgstr "Peut ajouter sa propre Organisation" -#: models.py:2179 +#: models.py:2209 msgid "Can change own Organization" msgstr "Peut modifier sa propre Organisation" -#: models.py:2181 +#: models.py:2211 msgid "Can delete own Organization" msgstr "Peut supprimer sa propre Organisation" -#: models.py:2216 +#: models.py:2246 msgid "Groups" msgstr "Groupes" -#: models.py:2221 +#: models.py:2251 msgid "Person types" msgstr "Types de personne" -#: models.py:2228 +#: models.py:2257 +msgid "Title type" +msgstr "Type de titre" + +#: models.py:2258 +msgid "Title types" +msgstr "Types de titre" + +#: models.py:2265 msgid "Mr" msgstr "M." -#: models.py:2229 +#: models.py:2266 msgid "Miss" msgstr "Mlle" -#: models.py:2230 +#: models.py:2267 msgid "Mr and Mrs" msgstr "M. et Mme" -#: models.py:2231 +#: models.py:2268 msgid "Mrs" msgstr "Mme" -#: models.py:2232 +#: models.py:2269 msgid "Doctor" msgstr "Dr." -#: models.py:2246 +#: models.py:2285 msgid "Contact type" msgstr "Type de contact" -#: models.py:2249 models.py:2296 +#: models.py:2288 models.py:2331 msgid "Types" msgstr "Types" -#: models.py:2252 +#: models.py:2291 msgid "Is attached to" msgstr "Est rattaché à" -#: models.py:2256 +#: models.py:2296 msgid "Persons" msgstr "Personnes" -#: models.py:2258 +#: models.py:2298 msgid "Can view all Persons" msgstr "Peut voir toutes les Personnes" -#: models.py:2259 +#: models.py:2299 msgid "Can view own Person" msgstr "Peut voir sa propre Personne" -#: models.py:2260 +#: models.py:2300 msgid "Can add own Person" msgstr "Peut ajouter sa propre Personne" -#: models.py:2261 +#: models.py:2301 msgid "Can change own Person" msgstr "Peut modifier sa propre Personne" -#: models.py:2262 +#: models.py:2302 msgid "Can delete own Person" msgstr "Peut supprimer sa propre Personne" -#: models.py:2411 +#: models.py:2446 msgid "Ishtar user" msgstr "Utilisateur d'Ishtar" -#: models.py:2412 +#: models.py:2447 msgid "Ishtar users" msgstr "Utilisateurs d'Ishtar" -#: models.py:2454 +#: models.py:2489 msgid "To modify the password use the form in Auth > User" msgstr "" "Pour modifier le mot de passe, utilisez le formulaire dans Authentification " "> Utilisateurs" -#: models.py:2460 +#: models.py:2495 msgid "Author types" msgstr "Types d'auteur" -#: models.py:2486 +#: models.py:2521 msgid "Source types" msgstr "Types de document" -#: models.py:2492 +#: models.py:2527 msgid "Support types" msgstr "Types de support" -#: models.py:2498 +#: models.py:2533 msgid "Formats" msgstr "Formats" -#: models.py:2503 +#: models.py:2538 msgid "External ID" msgstr "Identifiant externe" -#: models.py:2506 +#: models.py:2541 msgid "Support" msgstr "Support" -#: models.py:2510 +#: models.py:2545 msgid "Scale" msgstr "Échelle" -#: models.py:2524 +#: models.py:2559 msgid "Item number" msgstr "Numéro d'élément" -#: models.py:2525 +#: models.py:2560 msgid "Ref." msgstr "Réf." -#: models.py:2528 +#: models.py:2563 msgid "Internal ref." msgstr "Réf. interne" -#: models.py:2570 +#: models.py:2605 msgid "Surface (m2)" msgstr "Surface (m2)" -#: models.py:2571 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 +#: models.py:2606 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 msgid "Localisation" msgstr "Localisation" -#: models.py:2596 +#: models.py:2631 msgid "Is preventive" msgstr "Est du préventif" -#: models.py:2600 +#: models.py:2635 msgid "Operation types" msgstr "Types d'opération" -#: models.py:2626 +#: models.py:2661 msgid "Preventive" msgstr "Préventif" -#: models.py:2627 +#: models.py:2662 msgid "Research" msgstr "Programmé" @@ -2030,6 +2038,14 @@ msgstr "Personnes au sein de l'organisation" msgid "No person in this organization" msgstr "Pas de personne au sein de cette organisation" +#: templates/ishtar/sheet_organization.html:38 +msgid "General contractor organization of archaelogical files" +msgstr "Aménageur (organisation) pour les dossiers archéologiques" + +#: templates/ishtar/sheet_organization.html:43 +msgid "Town planning service of archaelogical files" +msgstr "Service instructeur pour les dossiers archéologiques" + #: templates/ishtar/sheet_person.html:20 #: templates/ishtar/wizard/wizard_person.html:19 msgid "Phone type" @@ -2057,19 +2073,27 @@ msgstr "Opérations associées en tant que responsable scientifique" msgid "Associated operations as responsible" msgstr "Opérations associées en tant que responsable" -#: templates/ishtar/sheet_person.html:80 -msgid "Associated archaelogical files" -msgstr "Dossiers archéologiques associés" +#: templates/ishtar/sheet_person.html:79 +msgid "In charge of archaelogical files" +msgstr "Responsable des dossiers archéologiques" + +#: templates/ishtar/sheet_person.html:84 +msgid "General contractor of archaelogical files" +msgstr "Aménageur des dossiers archéologiques" + +#: templates/ishtar/sheet_person.html:89 +msgid "Responsible for town planning service of archaelogical files" +msgstr "Responsable au service instructeur des dossiers" -#: templates/ishtar/sheet_person.html:86 +#: templates/ishtar/sheet_person.html:95 msgid "Documents associated to operations" msgstr "Documents des opérations associées" -#: templates/ishtar/sheet_person.html:91 +#: templates/ishtar/sheet_person.html:100 msgid "Documents associated to context records" msgstr "Documents des Unités d'Enregistrement associées" -#: templates/ishtar/sheet_person.html:96 +#: templates/ishtar/sheet_person.html:105 msgid "Documents associated to finds" msgstr "Documents du mobilier associé" -- cgit v1.2.3 From 5eb8667794636e379a8c324da46c617ad365747a Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 2 Sep 2016 10:10:26 +0200 Subject: v0.97.4 --- CHANGES.md | 16 ++++++++++++++++ version.py | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 0e12ef0f0..affe96683 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,22 @@ Ishtar changelog ================ +0.97.4 (2016-09-02) +------------------- + +### Features ### + +- Non-available types are displayed when modifying old items using theses types +- Title types are no more hard-coded +- Archive item to exclude them from merge detection mechanism (python API only) +- Organization, Person sheets: add link to files +- Install: default nginx conf wait after long uwsgi response + +### Bug fixes ### + +- Account modify: fix bad initialization of the form +- Imports: delete town when associated import is deleted + 0.97.3 (2016-08-29) ------------------- diff --git a/version.py b/version.py index 9f846e91f..0f4077755 100644 --- a/version.py +++ b/version.py @@ -1,4 +1,4 @@ -VERSION = (0, 97, 3) +VERSION = (0, 97, 4) def get_version(): -- cgit v1.2.3