summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.md22
-rw-r--r--archaeological_context_records/locale/django.pot134
-rw-r--r--archaeological_context_records/migrations/0024_auto__add_field_contextrecord_cached_label__add_field_historicalcontex.py650
-rw-r--r--archaeological_context_records/migrations/0025_generate_cached_label.py650
-rw-r--r--archaeological_context_records/models.py25
-rw-r--r--archaeological_context_records/templates/ishtar/sheet_contextrecord.html2
-rw-r--r--archaeological_context_records/tests.py12
-rw-r--r--archaeological_context_records/views.py7
-rw-r--r--archaeological_context_records/wizards.py1
-rw-r--r--archaeological_files/locale/django.pot102
-rw-r--r--archaeological_files/models.py3
-rw-r--r--archaeological_files/templates/ishtar/sheet_file.html2
-rw-r--r--archaeological_files/views.py2
-rw-r--r--archaeological_finds/locale/django.pot248
-rw-r--r--archaeological_finds/migrations/0056_auto__add_field_historicalfind_cached_label__add_field_find_cached_lab.py1019
-rw-r--r--archaeological_finds/migrations/0057_generate_cached_label.py1017
-rw-r--r--archaeological_finds/models.py31
-rw-r--r--archaeological_finds/templates/ishtar/sheet_find.html2
-rw-r--r--archaeological_finds/tests.py15
-rw-r--r--archaeological_finds/views.py12
-rw-r--r--archaeological_finds/wizards.py1
-rw-r--r--archaeological_operations/forms.py43
-rw-r--r--archaeological_operations/locale/django.pot495
-rw-r--r--archaeological_operations/migrations/0059_auto__add_field_historicaloperation_documentation_deadline__add_field_.py713
-rw-r--r--archaeological_operations/models.py41
-rw-r--r--archaeological_operations/templates/ishtar/sheet_operation.html17
-rw-r--r--archaeological_operations/tests.py2
-rw-r--r--archaeological_operations/views.py15
-rw-r--r--archaeological_operations/wizards.py1
-rw-r--r--ishtar_common/context_processors.py35
-rw-r--r--ishtar_common/forms_common.py10
-rw-r--r--ishtar_common/locale/django.pot647
-rw-r--r--ishtar_common/menu_base.py4
-rw-r--r--ishtar_common/models.py19
-rw-r--r--ishtar_common/static/js/chosen/chosen-sprite.pngbin0 -> 538 bytes
-rw-r--r--ishtar_common/static/js/chosen/chosen.jquery.min.js2
-rw-r--r--ishtar_common/static/js/chosen/chosen.min.css3
-rw-r--r--ishtar_common/static/js/ishtar.js58
-rw-r--r--ishtar_common/static/media/style.css48
-rw-r--r--ishtar_common/templates/base.html35
-rw-r--r--ishtar_common/templates/ishtar/blocks/shortcut_menu.html27
-rw-r--r--ishtar_common/templates/ishtar/blocks/window_nav.html7
-rw-r--r--ishtar_common/templates/window.html2
-rw-r--r--ishtar_common/templatetags/window_header.py8
-rw-r--r--ishtar_common/urls.py4
-rw-r--r--ishtar_common/views.py148
-rw-r--r--translations/de/ishtar_common.po647
-rw-r--r--translations/fr/archaeological_context_records.po136
-rw-r--r--translations/fr/archaeological_files.po102
-rw-r--r--translations/fr/archaeological_finds.po250
-rw-r--r--translations/fr/archaeological_operations.po501
-rw-r--r--translations/fr/ishtar_common.po656
-rw-r--r--version.py2
53 files changed, 6618 insertions, 2017 deletions
diff --git a/CHANGES.md b/CHANGES.md
index 9c6110f62..327894c03 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,28 @@
Ishtar changelog
================
+0.98.0 (2016-09-11)
+-------------------
+
+### Features ###
+
+- Many changes on shortcut menu:
+ - AJAX loading
+ - list use chosen library
+ - automatic changes of dependent items when selecting on parent item
+ - pin (from the sheet) and unpin items (not only our items)
+ - default searches now take into account parent items
+- Operation: manage deadline for finds and documentation receipt
+- Imports: explicit error when conservative is check and no unicity key is defined
+- cached labels for context records and finds
+
+### Bug fixes ###
+
+- Fix test initialization
+- Operation: fix parcel display in last panel
+- Operation sheet: fix stats
+- Source: display sheet after creation / modification
+
0.97.8 (2016-09-08)
-------------------
diff --git a/archaeological_context_records/locale/django.pot b/archaeological_context_records/locale/django.pot
index cf80fff0a..1f59ddb11 100644
--- a/archaeological_context_records/locale/django.pot
+++ b/archaeological_context_records/locale/django.pot
@@ -7,11 +7,11 @@
msgid ""
msgstr ""
-#: forms.py:47 forms.py:51 models.py:130 wizards.py:77
+#: forms.py:47 forms.py:51 models.py:133 wizards.py:77
msgid "Operation"
msgstr ""
-#: forms.py:59 forms.py:137 models.py:132
+#: forms.py:59 forms.py:137 models.py:135
#: templates/ishtar/sheet_contextrecord.html:65
msgid "ID"
msgstr ""
@@ -36,7 +36,7 @@ msgstr ""
msgid "Search within operation relations"
msgstr ""
-#: forms.py:77 forms.py:230 models.py:49
+#: forms.py:77 forms.py:230 models.py:51
msgid "Period"
msgstr ""
@@ -64,41 +64,41 @@ msgstr ""
msgid "General"
msgstr ""
-#: forms.py:136 models.py:118 models.py:128
+#: forms.py:136 models.py:121 models.py:131
#: templates/ishtar/sheet_contextrecord.html:69
msgid "Parcel"
msgstr ""
-#: forms.py:139 models.py:133 templates/ishtar/sheet_contextrecord.html:25
+#: forms.py:139 models.py:136 templates/ishtar/sheet_contextrecord.html:25
#: templates/ishtar/sheet_contextrecord.html:68
msgid "Description"
msgstr ""
-#: forms.py:141 models.py:134
+#: forms.py:141 models.py:137
msgid "General comment"
msgstr ""
-#: forms.py:143 models.py:138
+#: forms.py:143 models.py:141
msgid "Length (m)"
msgstr ""
-#: forms.py:144 models.py:139
+#: forms.py:144 models.py:142
msgid "Width (m)"
msgstr ""
-#: forms.py:145 models.py:140
+#: forms.py:145 models.py:143
msgid "Thickness (m)"
msgstr ""
-#: forms.py:146 models.py:142
+#: forms.py:146 models.py:145
msgid "Depth (m)"
msgstr ""
-#: forms.py:147 models.py:150
+#: forms.py:147 models.py:153
msgid "Unit"
msgstr ""
-#: forms.py:149 models.py:144
+#: forms.py:149 models.py:147
msgid "Location"
msgstr ""
@@ -117,27 +117,27 @@ msgstr ""
msgid "This ID already exists for this operation."
msgstr ""
-#: forms.py:225 forms.py:252 models.py:60
+#: forms.py:225 forms.py:252 models.py:62
msgid "Dating"
msgstr ""
-#: forms.py:231 models.py:50
+#: forms.py:231 models.py:52
msgid "Start date"
msgstr ""
-#: forms.py:232 models.py:51 models.py:137
+#: forms.py:232 models.py:53 models.py:140
msgid "End date"
msgstr ""
-#: forms.py:233 models.py:54
+#: forms.py:233 models.py:56
msgid "Quality"
msgstr ""
-#: forms.py:234 models.py:36 models.py:52
+#: forms.py:234 models.py:38 models.py:54
msgid "Dating type"
msgstr ""
-#: forms.py:261 ishtar_menu.py:29 models.py:356
+#: forms.py:261 ishtar_menu.py:29 models.py:373
msgid "Context record"
msgstr ""
@@ -145,7 +145,7 @@ msgstr ""
msgid "Relations"
msgstr ""
-#: forms.py:286 forms.py:296 models.py:155
+#: forms.py:286 forms.py:296 models.py:158
#: templates/ishtar/sheet_contextrecord.html:37
msgid "Interpretation"
msgstr ""
@@ -154,35 +154,35 @@ msgstr ""
msgid "Comments on dating"
msgstr ""
-#: forms.py:292 models.py:152
+#: forms.py:292 models.py:155
msgid "Has furniture?"
msgstr ""
-#: forms.py:294 models.py:154
+#: forms.py:294 models.py:157
msgid "Filling"
msgstr ""
-#: forms.py:298 models.py:175
+#: forms.py:298 models.py:178
msgid "Activity"
msgstr ""
-#: forms.py:300 models.py:173
+#: forms.py:300 models.py:176
msgid "Identification"
msgstr ""
-#: forms.py:302 models.py:158
+#: forms.py:302 models.py:161
msgid "TAQ"
msgstr ""
-#: forms.py:303 models.py:162
+#: forms.py:303 models.py:165
msgid "Estimated TAQ"
msgstr ""
-#: forms.py:305 models.py:165
+#: forms.py:305 models.py:168
msgid "TPQ"
msgstr ""
-#: forms.py:306 models.py:169
+#: forms.py:306 models.py:172
msgid "Estimated TPQ"
msgstr ""
@@ -254,160 +254,164 @@ msgstr ""
msgid "Add"
msgstr ""
-#: models.py:37
+#: models.py:39
msgid "Dating types"
msgstr ""
-#: models.py:43
+#: models.py:45
msgid "Dating quality"
msgstr ""
-#: models.py:44
+#: models.py:46
msgid "Dating qualities"
msgstr ""
-#: models.py:56
+#: models.py:58
msgid "Precise dating"
msgstr ""
-#: models.py:61
+#: models.py:63
msgid "Datings"
msgstr ""
-#: models.py:72 models.py:86 models.py:98
+#: models.py:74 models.py:88 models.py:100
msgid "Order"
msgstr ""
-#: models.py:73
+#: models.py:75
msgid "Parent unit"
msgstr ""
-#: models.py:77
+#: models.py:79
msgid "Unit Type"
msgstr ""
-#: models.py:78
+#: models.py:80
msgid "Unit Types"
msgstr ""
-#: models.py:89
+#: models.py:91
msgid "Activity Type"
msgstr ""
-#: models.py:90
+#: models.py:92
msgid "Activity Types"
msgstr ""
-#: models.py:101
+#: models.py:103
msgid "Identification Type"
msgstr ""
-#: models.py:102
+#: models.py:104
msgid "Identification Types"
msgstr ""
-#: models.py:125
+#: models.py:128
msgid "External ID"
msgstr ""
-#: models.py:127
+#: models.py:130
msgid "External ID is set automatically"
msgstr ""
-#: models.py:135
+#: models.py:138
msgid "Date d'ouverture"
msgstr ""
-#: models.py:145
+#: models.py:148
msgid "A short description of the location of the context record"
msgstr ""
-#: models.py:148
+#: models.py:151
msgid "Comment on datings"
msgstr ""
-#: models.py:159
+#: models.py:162
msgid ""
"\"Terminus Ante Quem\" the context record can't have been created after this "
"date"
msgstr ""
-#: models.py:163
+#: models.py:166
msgid "Estimation of a \"Terminus Ante Quem\""
msgstr ""
-#: models.py:166
+#: models.py:169
msgid ""
"\"Terminus Post Quem\" the context record can't have been created before "
"this date"
msgstr ""
-#: models.py:170
+#: models.py:173
msgid "Estimation of a \"Terminus Post Quem\""
msgstr ""
-#: models.py:178
+#: models.py:181
msgid "Point"
msgstr ""
-#: models.py:179
+#: models.py:182
msgid "Polygon"
msgstr ""
-#: models.py:183 models.py:184 templates/ishtar/sheet_contextrecord.html:4
+#: models.py:183
+msgid "Cached name"
+msgstr ""
+
+#: models.py:187 models.py:188 templates/ishtar/sheet_contextrecord.html:4
msgid "Context Record"
msgstr ""
-#: models.py:186
+#: models.py:190
msgid "Can view all Context Records"
msgstr ""
-#: models.py:188
+#: models.py:192
msgid "Can view own Context Record"
msgstr ""
-#: models.py:190
+#: models.py:194
msgid "Can add own Context Record"
msgstr ""
-#: models.py:192
+#: models.py:196
msgid "Can change own Context Record"
msgstr ""
-#: models.py:194
+#: models.py:198
msgid "Can delete own Context Record"
msgstr ""
-#: models.py:203
+#: models.py:208
msgctxt "short"
msgid "Context record"
msgstr ""
-#: models.py:322
+#: models.py:339
msgid "Inverse relation"
msgstr ""
-#: models.py:326 templates/ishtar/sheet_contextrecord.html:64
+#: models.py:343 templates/ishtar/sheet_contextrecord.html:64
msgid "Relation type"
msgstr ""
-#: models.py:327
+#: models.py:344
msgid "Relation types"
msgstr ""
-#: models.py:340
+#: models.py:357
msgid "Record relation"
msgstr ""
-#: models.py:341
+#: models.py:358
msgid "Record relations"
msgstr ""
-#: models.py:353
+#: models.py:370
msgid "Context record documentation"
msgstr ""
-#: models.py:354
+#: models.py:371
msgid "Context record documentations"
msgstr ""
diff --git a/archaeological_context_records/migrations/0024_auto__add_field_contextrecord_cached_label__add_field_historicalcontex.py b/archaeological_context_records/migrations/0024_auto__add_field_contextrecord_cached_label__add_field_historicalcontex.py
new file mode 100644
index 000000000..675326715
--- /dev/null
+++ b/archaeological_context_records/migrations/0024_auto__add_field_contextrecord_cached_label__add_field_historicalcontex.py
@@ -0,0 +1,650 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'ContextRecord.cached_label'
+ db.add_column('archaeological_context_records_contextrecord', 'cached_label',
+ self.gf('django.db.models.fields.TextField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalContextRecord.cached_label'
+ db.add_column('archaeological_context_records_historicalcontextrecord', 'cached_label',
+ self.gf('django.db.models.fields.TextField')(null=True, blank=True),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting field 'ContextRecord.cached_label'
+ db.delete_column('archaeological_context_records_contextrecord', 'cached_label')
+
+ # Deleting field 'HistoricalContextRecord.cached_label'
+ db.delete_column('archaeological_context_records_historicalcontextrecord', 'cached_label')
+
+
+ models = {
+ 'archaeological_context_records.activitytype': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'ActivityType'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.contextrecord': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'ContextRecord'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.ActivityType']", 'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'closing_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'datings': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_context_records.Dating']", 'symmetrical': 'False'}),
+ 'datings_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'depth': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'filling': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'has_furniture': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'identification': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.IdentificationType']", 'null': 'True', 'blank': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_context_records_contextrecord'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'interpretation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ 'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'opening_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'context_record'", 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'context_record'", 'to': "orm['archaeological_operations.Parcel']"}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'dim': '3', 'null': 'True', 'blank': 'True'}),
+ 'polygon': ('django.contrib.gis.db.models.fields.PolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_context_records': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_context_records.ContextRecord']", 'null': 'True', 'through': "orm['archaeological_context_records.RecordRelations']", 'blank': 'True'}),
+ 'taq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'taq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'tpq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'tpq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'unit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['archaeological_context_records.Unit']"}),
+ 'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_context_records.contextrecordsource': {
+ 'Meta': {'object_name': 'ContextRecordSource'},
+ 'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'contextrecordsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'context_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_context_records.ContextRecord']"}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'duplicate': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '12', 'null': 'True', 'blank': 'True'}),
+ 'format_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Format']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'item_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'receipt_date_in_documentation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'scale': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}),
+ 'support_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SupportType']", 'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'})
+ },
+ 'archaeological_context_records.dating': {
+ 'Meta': {'object_name': 'Dating'},
+ 'dating_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.DatingType']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'period': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']"}),
+ 'precise_dating': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'quality': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.DatingQuality']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_context_records.datingquality': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'DatingQuality'},
+ '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'})
+ },
+ 'archaeological_context_records.datingtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'DatingType'},
+ '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'})
+ },
+ 'archaeological_context_records.historicalcontextrecord': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalContextRecord'},
+ 'activity_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'closing_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'datings_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'depth': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'filling': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'has_furniture': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'identification_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'interpretation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ 'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'opening_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parcel_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'dim': '3', 'null': 'True', 'blank': 'True'}),
+ 'polygon': ('django.contrib.gis.db.models.fields.PolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'taq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'taq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'tpq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'tpq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'unit_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_context_records.identificationtype': {
+ 'Meta': {'ordering': "('order', 'label')", 'object_name': 'IdentificationType'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.recordrelations': {
+ 'Meta': {'object_name': 'RecordRelations'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'left_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'right_relations'", 'to': "orm['archaeological_context_records.ContextRecord']"}),
+ 'relation_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.RelationType']"}),
+ 'right_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'left_relations'", 'to': "orm['archaeological_context_records.ContextRecord']"})
+ },
+ 'archaeological_context_records.relationtype': {
+ 'Meta': {'ordering': "('order', 'label')", 'object_name': 'RelationType'},
+ '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'}),
+ 'inverse_relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.RelationType']", 'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'symmetrical': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'tiny_label': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.unit': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Unit'},
+ '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', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.Unit']", 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_files.file': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_advised': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'classified_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'corporation_general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'departments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'file_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.FileType']"}),
+ 'general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ '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'}),
+ 'imported_line': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_files_file'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'instruction_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'locality': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'main_town': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_main'", 'null': 'True', 'to': "orm['ishtar_common.Town']"}),
+ 'mh_listing': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'mh_register': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'numeric_reference': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'permit_reference': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'permit_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.PermitType']", 'null': 'True', 'blank': 'True'}),
+ 'planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'protected_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'raw_general_contractor': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'raw_town_planning_service': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_file': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.File']", 'null': 'True', 'blank': 'True'}),
+ 'requested_operation_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['ishtar_common.OperationType']"}),
+ 'research_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'responsible_town_planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsible_town_planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'saisine_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.SaisineType']", 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'total_developed_surface': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'total_surface': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'file'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2016'})
+ },
+ 'archaeological_files.filetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'FileType'},
+ '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'})
+ },
+ 'archaeological_files.permittype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'},
+ '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'})
+ },
+ 'archaeological_files.saisinetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'delay': ('django.db.models.fields.IntegerField', [], {'default': '30'}),
+ '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'})
+ },
+ 'archaeological_operations.archaeologicalsite': {
+ 'Meta': {'object_name': 'ArchaeologicalSite'},
+ '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_archaeological_operations_archaeologicalsite'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operation': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'Operation'},
+ 'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'archaeological_sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.ArchaeologicalSite']", 'null': 'True', 'blank': 'True'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operations'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cira_rapporteur'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'documentation_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'documentation_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_operation'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'multi_polygon': ('django.contrib.gis.db.models.fields.MultiPolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'old_code': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['ishtar_common.OperationType']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True', 'blank': 'True'}),
+ 'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'report_processing': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ReportState']", 'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}),
+ 'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.parcel': {
+ 'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '100', '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_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ '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_archaeological_operations_parcel'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel_number': ('django.db.models.fields.CharField', [], {'max_length': '6', 'null': 'True', 'blank': 'True'}),
+ 'public_domain': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'section': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
+ 'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.period': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Period'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_operations.remaintype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'},
+ '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'})
+ },
+ 'archaeological_operations.reportstate': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'ReportState'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ '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.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.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.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.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.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'}),
+ 'salutation': ('django.db.models.fields.CharField', [], {'max_length': '200', '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.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.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 = ['archaeological_context_records'] \ No newline at end of file
diff --git a/archaeological_context_records/migrations/0025_generate_cached_label.py b/archaeological_context_records/migrations/0025_generate_cached_label.py
new file mode 100644
index 000000000..1c559b21a
--- /dev/null
+++ b/archaeological_context_records/migrations/0025_generate_cached_label.py
@@ -0,0 +1,650 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+from django.conf import settings
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ for item in orm['archaeological_context_records.contextrecord'].objects.all():
+ parcel = item.parcel
+ parcel_lbl = ""
+ if parcel:
+ items = [unicode(l) for l in [parcel.section,
+ parcel.parcel_number]
+ if l]
+ if parcel.public_domain:
+ items.append(u"Domaine public")
+ parcel_lbl = settings.JOINT.join(items)
+ item.cached_label = settings.JOINT.join([unicode(lbl) for lbl in [
+ item.operation.cached_label, parcel_lbl, item.label] if lbl])
+ item.skip_history_when_saving = True
+ item.save()
+
+ def backwards(self, orm):
+ pass
+
+ models = {
+ 'archaeological_context_records.activitytype': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'ActivityType'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.contextrecord': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'ContextRecord'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.ActivityType']", 'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'closing_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'datings': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_context_records.Dating']", 'symmetrical': 'False'}),
+ 'datings_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'depth': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'filling': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'has_furniture': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'identification': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.IdentificationType']", 'null': 'True', 'blank': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_context_records_contextrecord'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'interpretation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ 'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'opening_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'context_record'", 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'context_record'", 'to': "orm['archaeological_operations.Parcel']"}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'dim': '3', 'null': 'True', 'blank': 'True'}),
+ 'polygon': ('django.contrib.gis.db.models.fields.PolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_context_records': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_context_records.ContextRecord']", 'null': 'True', 'through': "orm['archaeological_context_records.RecordRelations']", 'blank': 'True'}),
+ 'taq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'taq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'tpq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'tpq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'unit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['archaeological_context_records.Unit']"}),
+ 'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_context_records.contextrecordsource': {
+ 'Meta': {'object_name': 'ContextRecordSource'},
+ 'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'contextrecordsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'context_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_context_records.ContextRecord']"}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'duplicate': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '12', 'null': 'True', 'blank': 'True'}),
+ 'format_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Format']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'item_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'receipt_date_in_documentation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'scale': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}),
+ 'support_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SupportType']", 'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'})
+ },
+ 'archaeological_context_records.dating': {
+ 'Meta': {'object_name': 'Dating'},
+ 'dating_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.DatingType']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'period': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']"}),
+ 'precise_dating': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'quality': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.DatingQuality']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_context_records.datingquality': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'DatingQuality'},
+ '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'})
+ },
+ 'archaeological_context_records.datingtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'DatingType'},
+ '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'})
+ },
+ 'archaeological_context_records.historicalcontextrecord': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalContextRecord'},
+ 'activity_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'closing_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'datings_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'depth': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'filling': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'has_furniture': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'identification_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'interpretation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ 'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'opening_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'parcel_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'dim': '3', 'null': 'True', 'blank': 'True'}),
+ 'polygon': ('django.contrib.gis.db.models.fields.PolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'taq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'taq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'tpq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'tpq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'unit_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_context_records.identificationtype': {
+ 'Meta': {'ordering': "('order', 'label')", 'object_name': 'IdentificationType'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.recordrelations': {
+ 'Meta': {'object_name': 'RecordRelations'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'left_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'right_relations'", 'to': "orm['archaeological_context_records.ContextRecord']"}),
+ 'relation_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.RelationType']"}),
+ 'right_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'left_relations'", 'to': "orm['archaeological_context_records.ContextRecord']"})
+ },
+ 'archaeological_context_records.relationtype': {
+ 'Meta': {'ordering': "('order', 'label')", 'object_name': 'RelationType'},
+ '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'}),
+ 'inverse_relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.RelationType']", 'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'symmetrical': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'tiny_label': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.unit': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Unit'},
+ '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', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.Unit']", 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_files.file': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_advised': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'classified_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'corporation_general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'departments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'file_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.FileType']"}),
+ 'general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ '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'}),
+ 'imported_line': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_files_file'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'instruction_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'locality': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'main_town': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_main'", 'null': 'True', 'to': "orm['ishtar_common.Town']"}),
+ 'mh_listing': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'mh_register': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'numeric_reference': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'permit_reference': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'permit_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.PermitType']", 'null': 'True', 'blank': 'True'}),
+ 'planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'protected_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'raw_general_contractor': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'raw_town_planning_service': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_file': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.File']", 'null': 'True', 'blank': 'True'}),
+ 'requested_operation_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['ishtar_common.OperationType']"}),
+ 'research_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'responsible_town_planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsible_town_planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'saisine_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.SaisineType']", 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'total_developed_surface': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'total_surface': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'file'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2016'})
+ },
+ 'archaeological_files.filetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'FileType'},
+ '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'})
+ },
+ 'archaeological_files.permittype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'},
+ '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'})
+ },
+ 'archaeological_files.saisinetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'delay': ('django.db.models.fields.IntegerField', [], {'default': '30'}),
+ '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'})
+ },
+ 'archaeological_operations.archaeologicalsite': {
+ 'Meta': {'object_name': 'ArchaeologicalSite'},
+ '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_archaeological_operations_archaeologicalsite'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operation': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'Operation'},
+ 'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'archaeological_sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.ArchaeologicalSite']", 'null': 'True', 'blank': 'True'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operations'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cira_rapporteur'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'documentation_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'documentation_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_operation'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'multi_polygon': ('django.contrib.gis.db.models.fields.MultiPolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'old_code': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['ishtar_common.OperationType']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True', 'blank': 'True'}),
+ 'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'report_processing': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ReportState']", 'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}),
+ 'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.parcel': {
+ 'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '100', '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_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ '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_archaeological_operations_parcel'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel_number': ('django.db.models.fields.CharField', [], {'max_length': '6', 'null': 'True', 'blank': 'True'}),
+ 'public_domain': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'section': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
+ 'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.period': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Period'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_operations.remaintype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'},
+ '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'})
+ },
+ 'archaeological_operations.reportstate': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'ReportState'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ '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.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.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.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.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.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'}),
+ 'salutation': ('django.db.models.fields.CharField', [], {'max_length': '200', '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.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.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 = ['archaeological_context_records']
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py
index a98f7792a..0123dd2ed 100644
--- a/archaeological_context_records/models.py
+++ b/archaeological_context_records/models.py
@@ -21,9 +21,11 @@ from django.conf import settings
from django.contrib.gis.db import models
from django.core.urlresolvers import reverse
from django.db.models import Q
-from django.db.models.signals import post_delete
+from django.db.models.signals import post_delete, post_save
from django.utils.translation import ugettext_lazy as _, ugettext, pgettext
+from ishtar_common.utils import cached_label_changed
+
from ishtar_common.models import GeneralType, BaseHistorizedItem, \
HistoricalRecords, OwnPerms, ShortMenuItem, Source, GeneralRelationType,\
GeneralRecordRelations, post_delete_record_relation, get_external_id, \
@@ -108,6 +110,7 @@ class IdentificationType(GeneralType):
class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
SHOW_URL = 'show-contextrecord'
+ SLUG = 'contextrecord'
TABLE_COLS = ['parcel.town', 'operation.year',
'operation.operation_code',
'label', 'unit']
@@ -177,6 +180,7 @@ class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
'ContextRecord', through='RecordRelations', blank=True, null=True)
point = models.PointField(_(u"Point"), blank=True, null=True, dim=3)
polygon = models.PolygonField(_(u"Polygon"), blank=True, null=True)
+ cached_label = models.TextField(_(u"Cached name"), null=True, blank=True)
history = HistoricalRecords()
class Meta:
@@ -193,6 +197,7 @@ class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
("delete_own_contextrecord",
ugettext(u"Can delete own Context Record")),
)
+ ordering = ('cached_label',)
@property
def name(self):
@@ -220,11 +225,17 @@ class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
Q(operation__in_charge=user.ishtaruser.person) |\
Q(history_creator=user)
+ @classmethod
+ def get_owns(cls, user, menu_filtr=None):
+ replace_query = {}
+ if menu_filtr:
+ replace_query = {'operation': menu_filtr}
+ owns = super(ContextRecord, cls).get_owns(user,
+ replace_query=replace_query)
+ return sorted(owns, key=lambda x: x.cached_label)
+
def full_label(self):
return unicode(self)
- if not self.operation:
- return unicode(self)
- return self._real_label() or self._temp_label()
def _real_label(self):
if not self.operation.code_patriarche:
@@ -239,6 +250,9 @@ class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
self.operation.year, self.operation.operation_code, self.label]
if lbl])
+ def _generate_cached_label(self):
+ return self.full_label()
+
@property
def reference(self):
if not self.operation:
@@ -317,6 +331,9 @@ class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
return returned
+post_save.connect(cached_label_changed, sender=ContextRecord)
+
+
class RelationType(GeneralRelationType):
inverse_relation = models.ForeignKey(
'RelationType', verbose_name=_(u"Inverse relation"), blank=True,
diff --git a/archaeological_context_records/templates/ishtar/sheet_contextrecord.html b/archaeological_context_records/templates/ishtar/sheet_contextrecord.html
index 2c2bf98fe..bd883ac0b 100644
--- a/archaeological_context_records/templates/ishtar/sheet_contextrecord.html
+++ b/archaeological_context_records/templates/ishtar/sheet_contextrecord.html
@@ -4,7 +4,7 @@
{% block head_title %}{% trans "Context Record" %}{% endblock %}
{% block content %}
-{% window_nav item window_id 'show-contextrecord' 'record_modify' 'show-historized-contextrecord' 'revert-contextrecord' previous next %}
+{% window_nav item window_id 'show-contextrecord' 'record_modify' 'show-historized-contextrecord' 'revert-contextrecord' previous next 1 %}
{% if item.image %}
<a href='{{item.image.url}}' rel="prettyPhoto" title="{{item.label}}" class='photo'><img src='{{item.thumbnail.url}}'/></a>
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
index 27ba0ab71..9b8d4f000 100644
--- a/archaeological_context_records/tests.py
+++ b/archaeological_context_records/tests.py
@@ -90,14 +90,14 @@ class ImportContextRecordTest(ImportOperationTest):
class ContextRecordInit(OperationInitTest):
test_operations = False
- def create_context_record(self, user=None, data={}):
+ def create_context_record(self, user=None, data={}, force=False):
if not getattr(self, 'context_records', None):
self.context_records = []
default = {'label': "Context record"}
- if not data.get('operation'):
- data['operation'] = self.get_default_operation()
- if not data.get('parcel'):
+ if force or not data.get('operation'):
+ data['operation'] = self.get_default_operation(force=force)
+ if not data.get('parcel') or not data['parcel'].pk:
data['parcel'] = self.get_default_parcel()
if not data.get('history_modifier'):
data['history_modifier'] = self.get_default_user()
@@ -107,8 +107,8 @@ class ContextRecordInit(OperationInitTest):
**default))
return self.context_records
- def get_default_context_record(self):
- return self.create_context_record()[0]
+ def get_default_context_record(self, force=False):
+ return self.create_context_record(force=force)[0]
def tearDown(self):
if hasattr(self, 'context_records'):
diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py
index 4fd945187..5c8bb63cc 100644
--- a/archaeological_context_records/views.py
+++ b/archaeological_context_records/views.py
@@ -81,6 +81,9 @@ get_contextrecord = get_item(
models.ContextRecord,
'get_contextrecord', 'contextrecord',
relation_types_prefix={'ope_relation_types': 'operation__'},
+ relative_session_names=[
+ ('operation', 'operation__pk'),
+ ('file', 'operation__associated_file__pk')],
extra_request_keys=contextrecord_extra_keys,)
get_contextrecord_for_ope = get_item(
models.ContextRecord,
@@ -94,6 +97,10 @@ show_contextrecordsource = show_item(models.ContextRecordSource,
get_contextrecordsource = get_item(
models.ContextRecordSource,
'get_contextrecordsource', 'contextrecordsource',
+ relative_session_names=[
+ ('contextrecord', 'context_record__pk'),
+ ('operation', 'context_record__operation__pk'),
+ ('file', 'context_record__operation__associated_file__pk')],
bool_fields=['duplicate'],
extra_request_keys={
'title': 'title__icontains',
diff --git a/archaeological_context_records/wizards.py b/archaeological_context_records/wizards.py
index 2780acfbc..0d877929f 100644
--- a/archaeological_context_records/wizards.py
+++ b/archaeological_context_records/wizards.py
@@ -146,6 +146,7 @@ class RecordDeletionWizard(DeletionWizard):
class RecordSourceWizard(SourceWizard):
model = models.ContextRecordSource
+ wizard_done_window = reverse_lazy('show-contextrecordsource')
class RecordSourceDeletionWizard(DeletionWizard):
diff --git a/archaeological_files/locale/django.pot b/archaeological_files/locale/django.pot
index 4e149095e..67f2de359 100644
--- a/archaeological_files/locale/django.pot
+++ b/archaeological_files/locale/django.pot
@@ -9,11 +9,11 @@ msgid ""
msgstr ""
#: forms.py:52 forms.py:212 forms.py:257 forms.py:404 forms.py:431
-#: models.py:77 templates/ishtar/sheet_file.html:146
+#: models.py:78 templates/ishtar/sheet_file.html:146
msgid "Year"
msgstr ""
-#: forms.py:53 forms.py:217 forms.py:259 models.py:80
+#: forms.py:53 forms.py:217 forms.py:259 models.py:81
msgid "Numeric reference"
msgstr ""
@@ -25,7 +25,7 @@ msgstr ""
msgid "Parcel (section/number/public domain)"
msgstr ""
-#: forms.py:60 forms.py:415 forms.py:442 models.py:513
+#: forms.py:60 forms.py:415 forms.py:442 models.py:514
msgid "Department"
msgstr ""
@@ -33,7 +33,7 @@ msgstr ""
msgid "File name"
msgstr ""
-#: forms.py:62 forms.py:158 forms.py:223 models.py:88
+#: forms.py:62 forms.py:158 forms.py:223 models.py:89
msgid "File type"
msgstr ""
@@ -45,15 +45,15 @@ msgstr ""
msgid "Saisine type"
msgstr ""
-#: forms.py:65 forms.py:311 models.py:58 models.py:119
+#: forms.py:65 forms.py:311 models.py:58 models.py:120
msgid "Permit type"
msgstr ""
-#: forms.py:67 forms.py:314 models.py:120
+#: forms.py:67 forms.py:314 models.py:121
msgid "Permit reference"
msgstr ""
-#: forms.py:68 forms.py:229 forms.py:372 models.py:149
+#: forms.py:68 forms.py:229 forms.py:372 models.py:150
#: templates/ishtar/sheet_file.html:99
msgid "Comment"
msgstr ""
@@ -62,7 +62,7 @@ msgstr ""
msgid "In charge"
msgstr ""
-#: forms.py:77 forms.py:289 forms.py:453 models.py:95
+#: forms.py:77 forms.py:289 forms.py:453 models.py:96
msgid "General contractor"
msgstr ""
@@ -86,11 +86,11 @@ msgstr ""
msgid "You should select a file."
msgstr ""
-#: forms.py:146 forms.py:221 models.py:128
+#: forms.py:146 forms.py:221 models.py:129
msgid "Creation date"
msgstr ""
-#: forms.py:147 forms.py:324 models.py:130
+#: forms.py:147 forms.py:324 models.py:131
msgid "Reception date"
msgstr ""
@@ -118,23 +118,23 @@ msgstr ""
msgid "General"
msgstr ""
-#: forms.py:206 models.py:90
+#: forms.py:206 models.py:91
msgid "Person in charge"
msgstr ""
-#: forms.py:220 models.py:87
+#: forms.py:220 models.py:88
msgid "Name"
msgstr ""
-#: forms.py:225 models.py:132
+#: forms.py:225 models.py:133
msgid "Related file"
msgstr ""
-#: forms.py:233 models.py:140
+#: forms.py:233 models.py:141
msgid "Total surface (m2)"
msgstr ""
-#: forms.py:236 models.py:146
+#: forms.py:236 models.py:147
msgid "Main address"
msgstr ""
@@ -155,11 +155,11 @@ msgstr ""
msgid "Preventive informations"
msgstr ""
-#: forms.py:301 models.py:107
+#: forms.py:301 models.py:108
msgid "Responsible for town planning service"
msgstr ""
-#: forms.py:317 models.py:143
+#: forms.py:317 models.py:144
msgid "Total developed surface (m2)"
msgstr ""
@@ -168,15 +168,15 @@ msgstr ""
msgid "Research archaeology"
msgstr ""
-#: forms.py:348 models.py:152 templates/ishtar/sheet_file.html:90
+#: forms.py:348 models.py:153 templates/ishtar/sheet_file.html:90
msgid "Departments"
msgstr ""
-#: forms.py:359 models.py:161
+#: forms.py:359 models.py:162
msgid "Scientist in charge"
msgstr ""
-#: forms.py:361 models.py:155 templates/ishtar/sheet_file.html:92
+#: forms.py:361 models.py:156 templates/ishtar/sheet_file.html:92
msgid "Requested operation type"
msgstr ""
@@ -184,11 +184,11 @@ msgstr ""
msgid "Lead organization"
msgstr ""
-#: forms.py:379 models.py:165 templates/ishtar/sheet_file.html:97
+#: forms.py:379 models.py:166 templates/ishtar/sheet_file.html:97
msgid "Classified area"
msgstr ""
-#: forms.py:381 models.py:167 templates/ishtar/sheet_file.html:98
+#: forms.py:381 models.py:168 templates/ishtar/sheet_file.html:98
msgid "Protected area"
msgstr ""
@@ -248,7 +248,7 @@ msgstr ""
msgid "File permit reference"
msgstr ""
-#: ishtar_menu.py:33 models.py:189 templates/ishtar/sheet_file.html:4
+#: ishtar_menu.py:33 models.py:190 templates/ishtar/sheet_file.html:4
msgid "Archaeological file"
msgstr ""
@@ -292,7 +292,7 @@ msgstr ""
msgid "General informations"
msgstr ""
-#: ishtar_menu.py:87 models.py:190
+#: ishtar_menu.py:87 models.py:191
#: templates/ishtar/dashboards/dashboard_file.html:8
msgid "Archaeological files"
msgstr ""
@@ -313,111 +313,111 @@ msgstr ""
msgid "Delay (in days)"
msgstr ""
-#: models.py:81
+#: models.py:82
msgid "Internal reference"
msgstr ""
-#: models.py:83
+#: models.py:84
msgid "External ID"
msgstr ""
-#: models.py:86
+#: models.py:87
msgid "External ID is set automatically"
msgstr ""
-#: models.py:98
+#: models.py:99
msgid "General contractor (raw)"
msgstr ""
-#: models.py:102
+#: models.py:103
msgid "General contractor organization"
msgstr ""
-#: models.py:110
+#: models.py:111
msgid "Town planning service (raw)"
msgstr ""
-#: models.py:116
+#: models.py:117
msgid "Town planning service organization"
msgstr ""
-#: models.py:122
+#: models.py:123
msgid "Closing date"
msgstr ""
-#: models.py:123
+#: models.py:124
msgid "Town"
msgstr ""
-#: models.py:125
+#: models.py:126
msgid "Towns"
msgstr ""
-#: models.py:138
+#: models.py:139
msgid "Instruction deadline"
msgstr ""
-#: models.py:144
+#: models.py:145
msgid "Locality"
msgstr ""
-#: models.py:147
+#: models.py:148
msgid "Main address - postal code"
msgstr ""
-#: models.py:157 templates/ishtar/sheet_file.html:93
+#: models.py:158 templates/ishtar/sheet_file.html:93
msgid "Organization"
msgstr ""
-#: models.py:162
+#: models.py:163
msgid "Research archaeology comment"
msgstr ""
-#: models.py:176
+#: models.py:177
msgid "Cached name"
msgstr ""
-#: models.py:177
+#: models.py:178
msgid "Imported line"
msgstr ""
-#: models.py:192
+#: models.py:193
msgid "Can view all Archaelogical files"
msgstr ""
-#: models.py:193
+#: models.py:194
msgid "Can view own Archaelogical file"
msgstr ""
-#: models.py:194
+#: models.py:195
msgid "Can add own Archaelogical file"
msgstr ""
-#: models.py:196
+#: models.py:197
msgid "Can change own Archaelogical file"
msgstr ""
-#: models.py:198
+#: models.py:199
msgid "Can delete own Archaelogical file"
msgstr ""
-#: models.py:199
+#: models.py:200
msgid "Can close File"
msgstr ""
-#: models.py:205
+#: models.py:206
msgid "FILE"
msgstr ""
-#: models.py:374
+#: models.py:375
msgid "Multi-town"
msgstr ""
-#: models.py:380
+#: models.py:381
msgid "No town"
msgstr ""
-#: models.py:512
+#: models.py:513
msgid "File"
msgstr ""
diff --git a/archaeological_files/models.py b/archaeological_files/models.py
index eaa9d832e..740ae9a71 100644
--- a/archaeological_files/models.py
+++ b/archaeological_files/models.py
@@ -74,6 +74,7 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
TABLE_COLS = ['numeric_reference', 'year', 'internal_reference',
'file_type', 'saisine_type', 'towns', ]
SHOW_URL = 'show-file'
+ SLUG = 'file'
year = models.IntegerField(_(u"Year"),
default=lambda: datetime.datetime.now().year)
numeric_reference = models.IntegerField(
@@ -333,7 +334,7 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
return cls
@classmethod
- def get_owns(cls, user):
+ def get_owns(cls, user, menu_filtr=None):
owns = super(File, cls).get_owns(user)
return sorted(owns, key=lambda x: x.cached_label)
diff --git a/archaeological_files/templates/ishtar/sheet_file.html b/archaeological_files/templates/ishtar/sheet_file.html
index 5165a0425..211d2b181 100644
--- a/archaeological_files/templates/ishtar/sheet_file.html
+++ b/archaeological_files/templates/ishtar/sheet_file.html
@@ -8,7 +8,7 @@
{% if can_add_operation %}
{% window_file_nav item window_id previous next %}
{% else %}
-{% window_nav item window_id 'show-file' 'file_modify' 'show-historized-file' 'revert-file' previous next %}
+{% window_nav item window_id 'show-file' 'file_modify' 'show-historized-file' 'revert-file' previous next 1 %}
{% endif %}
<h3>{% trans "General"%}</h3>
diff --git a/archaeological_files/views.py b/archaeological_files/views.py
index 7e96c33d3..e457c2ce7 100644
--- a/archaeological_files/views.py
+++ b/archaeological_files/views.py
@@ -143,7 +143,7 @@ get_administrativeactfile = get_item(
'associated_file__permit_reference__icontains'},
reversed_bool_fields=['index__isnull'],
base_request={"associated_file__pk__isnull": False},
- relative_session_names={'file': 'associated_file__pk'})
+ relative_session_names=[('file', 'associated_file__pk')])
def dashboard_file(request, *args, **kwargs):
diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot
index 9d9d8c0da..46cd3a2af 100644
--- a/archaeological_finds/locale/django.pot
+++ b/archaeological_finds/locale/django.pot
@@ -12,113 +12,113 @@ msgstr ""
msgid "Context record"
msgstr ""
-#: forms.py:83 ishtar_menu.py:31 models.py:382 models.py:647 models.py:745
-#: models.py:889 templates/ishtar/sheet_find.html:5
+#: forms.py:83 ishtar_menu.py:31 models.py:386 models.py:670 models.py:768
+#: models.py:912 templates/ishtar/sheet_find.html:5
msgid "Find"
msgstr ""
-#: forms.py:94 forms.py:218 forms.py:422 models.py:113 models.py:321
+#: forms.py:94 forms.py:218 forms.py:422 models.py:115 models.py:324
msgid "Free ID"
msgstr ""
-#: forms.py:96 models.py:369
+#: forms.py:96 models.py:372
msgid "Previous ID"
msgstr ""
-#: forms.py:97 forms.py:247 forms.py:588 models.py:117 models.py:322
-#: models.py:679
+#: forms.py:97 forms.py:247 forms.py:588 models.py:119 models.py:325
+#: models.py:702
msgid "Description"
msgstr ""
-#: forms.py:100 forms.py:249 models.py:128
+#: forms.py:100 forms.py:249 models.py:130
msgid "Batch/object"
msgstr ""
-#: forms.py:102 models.py:350
+#: forms.py:102 models.py:353
msgid "Is complete?"
msgstr ""
-#: forms.py:105 forms.py:238 forms.py:426 models.py:48
+#: forms.py:105 forms.py:238 forms.py:426 models.py:50
msgid "Material type"
msgstr ""
-#: forms.py:106 forms.py:242 models.py:58 models.py:326
+#: forms.py:106 forms.py:242 models.py:60 models.py:329
msgid "Conservatory state"
msgstr ""
-#: forms.py:109 models.py:328
+#: forms.py:109 models.py:331
msgid "Conservatory comment"
msgstr ""
-#: forms.py:112 models.py:90 models.py:353
+#: forms.py:112 models.py:92 models.py:356
msgid "Object types"
msgstr ""
-#: forms.py:114 forms.py:241 models.py:65
+#: forms.py:114 forms.py:241 models.py:67
msgid "Preservation type"
msgstr ""
-#: forms.py:117 forms.py:244 models.py:355
+#: forms.py:117 forms.py:244 models.py:358
msgid "Integrity"
msgstr ""
-#: forms.py:120 forms.py:245 models.py:357
+#: forms.py:120 forms.py:245 models.py:360
msgid "Remarkability"
msgstr ""
-#: forms.py:122 models.py:359
+#: forms.py:122 models.py:362
msgid "Length (cm)"
msgstr ""
-#: forms.py:123 models.py:360
+#: forms.py:123 models.py:363
msgid "Width (cm)"
msgstr ""
-#: forms.py:124 models.py:361
+#: forms.py:124 models.py:364
msgid "Height (cm)"
msgstr ""
-#: forms.py:125 models.py:362
+#: forms.py:125 models.py:365
msgid "Diameter (cm)"
msgstr ""
-#: forms.py:126 forms.py:427 models.py:333
+#: forms.py:126 forms.py:427 models.py:336
msgid "Volume (l)"
msgstr ""
-#: forms.py:127 forms.py:428 models.py:334
+#: forms.py:127 forms.py:428 models.py:337
msgid "Weight (g)"
msgstr ""
-#: forms.py:129 models.py:363
+#: forms.py:129 models.py:366
msgid "Dimensions comment"
msgstr ""
-#: forms.py:130 forms.py:429 models.py:337
+#: forms.py:130 forms.py:429 models.py:340
msgid "Find number"
msgstr ""
-#: forms.py:131 models.py:365
+#: forms.py:131 models.py:368
msgid "Mark"
msgstr ""
-#: forms.py:132 forms.py:251 models.py:371
+#: forms.py:132 forms.py:251 models.py:374
msgid "Check"
msgstr ""
-#: forms.py:134 models.py:373
+#: forms.py:134 models.py:376
msgid "Check date"
msgstr ""
-#: forms.py:135 models.py:118 models.py:366 models.py:680
+#: forms.py:135 models.py:120 models.py:369 models.py:703
msgid "Comment"
msgstr ""
-#: forms.py:138 models.py:367
+#: forms.py:138 models.py:370
msgid "Comment on dating"
msgstr ""
-#: forms.py:139 models.py:375
+#: forms.py:139 models.py:378
msgid "Estimated value"
msgstr ""
@@ -133,7 +133,7 @@ msgid ""
"p>"
msgstr ""
-#: forms.py:181 forms.py:212 models.py:345
+#: forms.py:181 forms.py:212 models.py:348
msgid "Dating"
msgstr ""
@@ -141,12 +141,12 @@ msgstr ""
msgid "Period"
msgstr ""
-#: forms.py:187 forms.py:590 models.py:693 models.py:758 models.py:894
+#: forms.py:187 forms.py:590 models.py:716 models.py:781 models.py:917
#: templates/ishtar/sheet_find.html:85 templates/ishtar/sheet_find.html:114
msgid "Start date"
msgstr ""
-#: forms.py:189 forms.py:592 models.py:694 models.py:759 models.py:895
+#: forms.py:189 forms.py:592 models.py:717 models.py:782 models.py:918
#: templates/ishtar/sheet_find.html:86 templates/ishtar/sheet_find.html:115
msgid "End date"
msgstr ""
@@ -163,11 +163,11 @@ msgstr ""
msgid "Precise dating"
msgstr ""
-#: forms.py:216 models.py:136
+#: forms.py:216 models.py:138
msgid "Short ID"
msgstr ""
-#: forms.py:217 models.py:139
+#: forms.py:217 models.py:141
msgid "Complete ID"
msgstr ""
@@ -187,7 +187,7 @@ msgstr ""
msgid "Search within operation relations"
msgstr ""
-#: forms.py:239 models.py:89
+#: forms.py:239 models.py:91
msgid "Object type"
msgstr ""
@@ -203,7 +203,7 @@ msgstr ""
msgid "Upstream finds"
msgstr ""
-#: forms.py:323 models.py:383
+#: forms.py:323 models.py:387
msgid "Finds"
msgstr ""
@@ -279,16 +279,16 @@ msgstr ""
msgid "Base treatment"
msgstr ""
-#: forms.py:575 models.py:669 models.py:682 models.py:757
+#: forms.py:575 models.py:692 models.py:705 models.py:780
msgid "Treatment type"
msgstr ""
-#: forms.py:577 models.py:691 models.py:762
+#: forms.py:577 models.py:714 models.py:785
#: templates/ishtar/sheet_find.html:83 templates/ishtar/sheet_find.html:112
msgid "Doer"
msgstr ""
-#: forms.py:583 models.py:684 models.py:760
+#: forms.py:583 models.py:707 models.py:783
msgid "Location"
msgstr ""
@@ -328,337 +328,341 @@ msgstr ""
msgid "Documentation"
msgstr ""
-#: models.py:41
+#: models.py:43
msgid "Code"
msgstr ""
-#: models.py:42
+#: models.py:44
msgid "Recommendation"
msgstr ""
-#: models.py:45
+#: models.py:47
msgid "Parent material"
msgstr ""
-#: models.py:49 models.py:324
+#: models.py:51 models.py:327
msgid "Material types"
msgstr ""
-#: models.py:55
+#: models.py:57
msgid "Parent conservatory state"
msgstr ""
-#: models.py:59
+#: models.py:61
msgid "Conservatory states"
msgstr ""
-#: models.py:66
+#: models.py:68
msgid "Preservation types"
msgstr ""
-#: models.py:72
+#: models.py:74
msgid "Integrity type"
msgstr ""
-#: models.py:73
+#: models.py:75
msgid "Integrity types"
msgstr ""
-#: models.py:79
+#: models.py:81
msgid "Remarkability type"
msgstr ""
-#: models.py:80
+#: models.py:82
msgid "Remarkability types"
msgstr ""
-#: models.py:86
+#: models.py:88
msgid "Parent"
msgstr ""
-#: models.py:105
+#: models.py:107
msgid "Unknow"
msgstr ""
-#: models.py:106
+#: models.py:108
msgid "Object"
msgstr ""
-#: models.py:107
+#: models.py:109
msgid "Batch"
msgstr ""
-#: models.py:114 models.py:317 models.py:675
+#: models.py:116 models.py:320 models.py:698
msgid "External ID"
msgstr ""
-#: models.py:116 models.py:319
+#: models.py:118 models.py:322
msgid "External ID is set automatically"
msgstr ""
-#: models.py:120
+#: models.py:122
msgid "Topographic localisation"
msgstr ""
-#: models.py:121
+#: models.py:123
msgid "Special interest"
msgstr ""
-#: models.py:125
+#: models.py:127
msgid "Context Record"
msgstr ""
-#: models.py:126
+#: models.py:128
msgid "Discovery date"
msgstr ""
-#: models.py:131
+#: models.py:133
msgid "Material index"
msgstr ""
-#: models.py:132
+#: models.py:134
msgid "Point"
msgstr ""
-#: models.py:133
+#: models.py:135
msgid "Line"
msgstr ""
-#: models.py:134
+#: models.py:136
msgid "Polygon"
msgstr ""
-#: models.py:137 models.py:140
+#: models.py:139 models.py:142
msgid "Cached value - do not edit"
msgstr ""
-#: models.py:145 models.py:315
+#: models.py:147 models.py:318
msgid "Base find"
msgstr ""
-#: models.py:146
+#: models.py:148
msgid "Base finds"
msgstr ""
-#: models.py:148
+#: models.py:150
msgid "Can view all Base finds"
msgstr ""
-#: models.py:149
+#: models.py:151
msgid "Can view own Base find"
msgstr ""
-#: models.py:150
+#: models.py:152
msgid "Can add own Base find"
msgstr ""
-#: models.py:151
+#: models.py:153
msgid "Can change own Base find"
msgstr ""
-#: models.py:152
+#: models.py:154
msgid "Can delete own Base find"
msgstr ""
-#: models.py:261
+#: models.py:263
msgid "g"
msgstr ""
-#: models.py:262
+#: models.py:264
msgid "kg"
msgstr ""
-#: models.py:264
+#: models.py:266
msgid "Not checked"
msgstr ""
-#: models.py:265
+#: models.py:267
msgid "Checked but incorrect"
msgstr ""
-#: models.py:266
+#: models.py:268
msgid "Checked and correct"
msgstr ""
-#: models.py:305
+#: models.py:308
msgid "Base find - Short ID"
msgstr ""
-#: models.py:306
+#: models.py:309
msgid "Base find - Complete ID"
msgstr ""
-#: models.py:307
+#: models.py:310
msgid "Base find - Comment"
msgstr ""
-#: models.py:308
+#: models.py:311
msgid "Base find - Description"
msgstr ""
-#: models.py:309
+#: models.py:312
msgid "Base find - Topographic localisation"
msgstr ""
-#: models.py:311
+#: models.py:314
msgid "Base find - Special interest"
msgstr ""
-#: models.py:312
+#: models.py:315
msgid "Base find - Discovery date"
msgstr ""
-#: models.py:320 models.py:751
+#: models.py:323 models.py:774
msgid "Order"
msgstr ""
-#: models.py:331
+#: models.py:334
msgid "Type of preservation to consider"
msgstr ""
-#: models.py:335
+#: models.py:338
msgid "Weight unit"
msgstr ""
-#: models.py:341 templates/ishtar/sheet_find.html:76
+#: models.py:344 templates/ishtar/sheet_find.html:76
msgid "Upstream treatment"
msgstr ""
-#: models.py:344 templates/ishtar/sheet_find.html:105
+#: models.py:347 templates/ishtar/sheet_find.html:105
msgid "Downstream treatment"
msgstr ""
-#: models.py:348 models.py:677 models.py:761
+#: models.py:351 models.py:700 models.py:784
#: templates/ishtar/sheet_find.html:84 templates/ishtar/sheet_find.html:113
msgid "Container"
msgstr ""
-#: models.py:385
+#: models.py:380
+msgid "Cached name"
+msgstr ""
+
+#: models.py:389
msgid "Can view all Finds"
msgstr ""
-#: models.py:386
+#: models.py:390
msgid "Can view own Find"
msgstr ""
-#: models.py:387
+#: models.py:391
msgid "Can add own Find"
msgstr ""
-#: models.py:388
+#: models.py:392
msgid "Can change own Find"
msgstr ""
-#: models.py:389
+#: models.py:393
msgid "Can delete own Find"
msgstr ""
-#: models.py:394
+#: models.py:399
msgid "FIND"
msgstr ""
-#: models.py:645
+#: models.py:668
msgid "Find documentation"
msgstr ""
-#: models.py:646
+#: models.py:669
msgid "Find documentations"
msgstr ""
-#: models.py:656
+#: models.py:679
msgid "Virtual"
msgstr ""
-#: models.py:658
+#: models.py:681
msgid "Upstream is many"
msgstr ""
-#: models.py:660
+#: models.py:683
msgid "Check this if for this treatment from many finds you'll get one."
msgstr ""
-#: models.py:663
+#: models.py:686
msgid "Downstream is many"
msgstr ""
-#: models.py:665
+#: models.py:688
msgid "Check this if for this treatment from one find you'll get many."
msgstr ""
-#: models.py:670
+#: models.py:693
msgid "Treatment types"
msgstr ""
-#: models.py:686
+#: models.py:709
msgid "Location where the treatment is done. Target warehouse for a move."
msgstr ""
-#: models.py:688
+#: models.py:711
msgid "Other location"
msgstr ""
-#: models.py:698 models.py:747 models.py:881
+#: models.py:721 models.py:770 models.py:904
msgid "Treatment"
msgstr ""
-#: models.py:699 templates/ishtar/sheet_find.html:73
+#: models.py:722 templates/ishtar/sheet_find.html:73
msgid "Treatments"
msgstr ""
-#: models.py:701
+#: models.py:724
msgid "Can view all Treatments"
msgstr ""
-#: models.py:702
+#: models.py:725
msgid "Can view own Treatment"
msgstr ""
-#: models.py:703
+#: models.py:726
msgid "Can add own Treatment"
msgstr ""
-#: models.py:704
+#: models.py:727
msgid "Can change own Treatment"
msgstr ""
-#: models.py:705
+#: models.py:728
msgid "Can delete own Treatment"
msgstr ""
-#: models.py:711
+#: models.py:734
msgid "by"
msgstr ""
-#: models.py:763 models.py:764 templates/ishtar/sheet_find.html:82
+#: models.py:786 models.py:787 templates/ishtar/sheet_find.html:82
#: templates/ishtar/sheet_find.html:111
msgid "Related finds"
msgstr ""
-#: models.py:867
+#: models.py:890
msgid "Is upstream"
msgstr ""
-#: models.py:878
+#: models.py:901
msgid "Treatment documentation"
msgstr ""
-#: models.py:879
+#: models.py:902
msgid "Treament documentations"
msgstr ""
-#: models.py:891
+#: models.py:914
msgid "Administrative act"
msgstr ""
-#: models.py:892
+#: models.py:915
msgid "Person"
msgstr ""
-#: models.py:898
+#: models.py:921
msgid "Property"
msgstr ""
-#: models.py:899
+#: models.py:922
msgid "Properties"
msgstr ""
diff --git a/archaeological_finds/migrations/0056_auto__add_field_historicalfind_cached_label__add_field_find_cached_lab.py b/archaeological_finds/migrations/0056_auto__add_field_historicalfind_cached_label__add_field_find_cached_lab.py
new file mode 100644
index 000000000..c0d048ba3
--- /dev/null
+++ b/archaeological_finds/migrations/0056_auto__add_field_historicalfind_cached_label__add_field_find_cached_lab.py
@@ -0,0 +1,1019 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'HistoricalFind.cached_label'
+ db.add_column('archaeological_finds_historicalfind', 'cached_label',
+ self.gf('django.db.models.fields.TextField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Find.cached_label'
+ db.add_column('archaeological_finds_find', 'cached_label',
+ self.gf('django.db.models.fields.TextField')(null=True, blank=True),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting field 'HistoricalFind.cached_label'
+ db.delete_column('archaeological_finds_historicalfind', 'cached_label')
+
+ # Deleting field 'Find.cached_label'
+ db.delete_column('archaeological_finds_find', 'cached_label')
+
+
+ models = {
+ 'archaeological_context_records.activitytype': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'ActivityType'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.contextrecord': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'ContextRecord'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.ActivityType']", 'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'closing_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'datings': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_context_records.Dating']", 'symmetrical': 'False'}),
+ 'datings_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'depth': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'filling': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'has_furniture': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'identification': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.IdentificationType']", 'null': 'True', 'blank': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_context_records_contextrecord'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'interpretation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ 'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'opening_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'context_record'", 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'context_record'", 'to': "orm['archaeological_operations.Parcel']"}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'dim': '3', 'null': 'True', 'blank': 'True'}),
+ 'polygon': ('django.contrib.gis.db.models.fields.PolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_context_records': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_context_records.ContextRecord']", 'null': 'True', 'through': "orm['archaeological_context_records.RecordRelations']", 'blank': 'True'}),
+ 'taq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'taq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'tpq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'tpq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'unit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['archaeological_context_records.Unit']"}),
+ 'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_context_records.dating': {
+ 'Meta': {'object_name': 'Dating'},
+ 'dating_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.DatingType']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'period': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']"}),
+ 'precise_dating': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'quality': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.DatingQuality']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_context_records.datingquality': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'DatingQuality'},
+ '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'})
+ },
+ 'archaeological_context_records.datingtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'DatingType'},
+ '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'})
+ },
+ 'archaeological_context_records.identificationtype': {
+ 'Meta': {'ordering': "('order', 'label')", 'object_name': 'IdentificationType'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.recordrelations': {
+ 'Meta': {'object_name': 'RecordRelations'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'left_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'right_relations'", 'to': "orm['archaeological_context_records.ContextRecord']"}),
+ 'relation_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.RelationType']"}),
+ 'right_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'left_relations'", 'to': "orm['archaeological_context_records.ContextRecord']"})
+ },
+ 'archaeological_context_records.relationtype': {
+ 'Meta': {'ordering': "('order', 'label')", 'object_name': 'RelationType'},
+ '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'}),
+ 'inverse_relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.RelationType']", 'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'symmetrical': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'tiny_label': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.unit': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Unit'},
+ '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', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.Unit']", 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_files.file': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_advised': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'classified_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'corporation_general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'departments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'file_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.FileType']"}),
+ 'general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ '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'}),
+ 'imported_line': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_files_file'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'instruction_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'locality': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'main_town': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_main'", 'null': 'True', 'to': "orm['ishtar_common.Town']"}),
+ 'mh_listing': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'mh_register': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'numeric_reference': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'permit_reference': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'permit_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.PermitType']", 'null': 'True', 'blank': 'True'}),
+ 'planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'protected_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'raw_general_contractor': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'raw_town_planning_service': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_file': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.File']", 'null': 'True', 'blank': 'True'}),
+ 'requested_operation_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['ishtar_common.OperationType']"}),
+ 'research_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'responsible_town_planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsible_town_planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'saisine_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.SaisineType']", 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'total_developed_surface': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'total_surface': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'file'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2016'})
+ },
+ 'archaeological_files.filetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'FileType'},
+ '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'})
+ },
+ 'archaeological_files.permittype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'},
+ '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'})
+ },
+ 'archaeological_files.saisinetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'delay': ('django.db.models.fields.IntegerField', [], {'default': '30'}),
+ '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'})
+ },
+ 'archaeological_finds.basefind': {
+ 'Meta': {'object_name': 'BaseFind'},
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'batch': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '1'}),
+ 'cache_complete_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cache_short_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'context_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'base_finds'", 'to': "orm['archaeological_context_records.ContextRecord']"}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'discovery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'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_archaeological_finds_basefind'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'label': ('django.db.models.fields.TextField', [], {}),
+ 'line': ('django.contrib.gis.db.models.fields.LineStringField', [], {'null': 'True', 'blank': 'True'}),
+ 'material_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'dim': '3', 'null': 'True', 'blank': 'True'}),
+ 'polygon': ('django.contrib.gis.db.models.fields.PolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'special_interest': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'topographic_localisation': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.conservatorystate': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'ConservatoryState'},
+ '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'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.ConservatoryState']", 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_finds.find': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'Find'},
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'base_finds': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.BaseFind']"}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'check_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'checked': ('django.db.models.fields.CharField', [], {'default': "'NC'", 'max_length': '2'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'conservatory_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'conservatory_state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.ConservatoryState']", 'null': 'True', 'blank': 'True'}),
+ 'container': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'to': "orm['archaeological_warehouse.Container']"}),
+ 'dating_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'datings': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_context_records.Dating']"}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'diameter': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'dimensions_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'downstream_treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'upstream'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}),
+ 'estimated_value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'find_number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'height': ('django.db.models.fields.FloatField', [], {'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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_finds_find'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'integrities': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.IntegrityType']"}),
+ 'is_complete': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.TextField', [], {}),
+ 'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'mark': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'material_types': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'finds'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.MaterialType']"}),
+ 'object_types': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.ObjectType']"}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'preservation_to_considers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'finds'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.PreservationType']"}),
+ 'previous_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'remarkabilities': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.RemarkabilityType']"}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'upstream_treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'downstream'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}),
+ 'volume': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'weight': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'weight_unit': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
+ 'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.findbasket': {
+ 'Meta': {'unique_together': "(('label', 'user'),)", 'object_name': 'FindBasket'},
+ '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'}),
+ 'items': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'basket'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['archaeological_finds.Find']"}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.finddownstreamtreatments': {
+ 'Meta': {'ordering': "('find', '-treatment_nb')", 'unique_together': "(('find', 'treatment'),)", 'object_name': 'FindDownstreamTreatments', 'db_table': "'find_downtreatments'", 'managed': 'False'},
+ 'find': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'finddownstreamtreatments_related'", 'to': "orm['archaeological_finds.Find']"}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.Treatment']", 'primary_key': 'True'}),
+ 'treatment_nb': ('django.db.models.fields.IntegerField', [], {})
+ },
+ 'archaeological_finds.findsource': {
+ 'Meta': {'object_name': 'FindSource'},
+ 'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'findsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'duplicate': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '12', 'null': 'True', 'blank': 'True'}),
+ 'find': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_finds.Find']"}),
+ 'format_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Format']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'item_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'receipt_date_in_documentation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'scale': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}),
+ 'support_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SupportType']", 'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'})
+ },
+ 'archaeological_finds.findtreatments': {
+ 'Meta': {'ordering': "('find', 'upstream', '-treatment_nb')", 'unique_together': "(('find', 'treatment'),)", 'object_name': 'FindTreatments', 'db_table': "'find_treatments'", 'managed': 'False'},
+ 'find': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'findtreatments_related'", 'to': "orm['archaeological_finds.Find']"}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.Treatment']", 'primary_key': 'True'}),
+ 'treatment_nb': ('django.db.models.fields.IntegerField', [], {}),
+ 'upstream': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'archaeological_finds.findupstreamtreatments': {
+ 'Meta': {'ordering': "('find', '-treatment_nb')", 'unique_together': "(('find', 'treatment'),)", 'object_name': 'FindUpstreamTreatments', 'db_table': "'find_uptreatments'", 'managed': 'False'},
+ 'find': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'findupstreamtreatments_related'", 'to': "orm['archaeological_finds.Find']"}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.Treatment']", 'primary_key': 'True'}),
+ 'treatment_nb': ('django.db.models.fields.IntegerField', [], {})
+ },
+ 'archaeological_finds.historicalbasefind': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalBaseFind'},
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'batch': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '1'}),
+ 'cache_complete_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cache_short_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'context_record_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'discovery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'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'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'label': ('django.db.models.fields.TextField', [], {}),
+ 'line': ('django.contrib.gis.db.models.fields.LineStringField', [], {'null': 'True', 'blank': 'True'}),
+ 'material_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'dim': '3', 'null': 'True', 'blank': 'True'}),
+ 'polygon': ('django.contrib.gis.db.models.fields.PolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'special_interest': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'topographic_localisation': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.historicalfind': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalFind'},
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'check_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'checked': ('django.db.models.fields.CharField', [], {'default': "'NC'", 'max_length': '2'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'conservatory_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'conservatory_state_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'container_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'dating_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'diameter': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'dimensions_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'downstream_treatment_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'estimated_value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'find_number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'height': ('django.db.models.fields.FloatField', [], {'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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'is_complete': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.TextField', [], {}),
+ 'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'mark': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'previous_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'upstream_treatment_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'volume': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'weight': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'weight_unit': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
+ 'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.historicaltreatment': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalTreatment'},
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'container_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', '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'}),
+ 'location_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'other_location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'person_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'treatment_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.integritytype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'IntegrityType'},
+ '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'})
+ },
+ 'archaeological_finds.materialtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'MaterialType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': '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'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.MaterialType']", 'null': 'True', 'blank': 'True'}),
+ 'recommendation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_finds.objecttype': {
+ 'Meta': {'ordering': "('parent__label', 'label')", 'object_name': 'ObjectType'},
+ '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'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.ObjectType']", 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_finds.preservationtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PreservationType'},
+ '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'})
+ },
+ 'archaeological_finds.property': {
+ 'Meta': {'object_name': 'Property'},
+ 'administrative_act': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.AdministrativeAct']"}),
+ 'end_date': ('django.db.models.fields.DateField', [], {}),
+ 'find': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.Find']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ '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_archaeological_finds_property'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'properties'", 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {})
+ },
+ 'archaeological_finds.remarkabilitytype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'RemarkabilityType'},
+ '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'})
+ },
+ 'archaeological_finds.treatment': {
+ 'Meta': {'object_name': 'Treatment'},
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'container': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Container']", 'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', '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_archaeological_finds_treatment'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']", 'null': 'True', 'blank': 'True'}),
+ 'other_location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'person': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'treatment_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentType']"})
+ },
+ 'archaeological_finds.treatmentsource': {
+ 'Meta': {'object_name': 'TreatmentSource'},
+ 'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'treatmentsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'duplicate': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '12', 'null': 'True', 'blank': 'True'}),
+ 'format_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Format']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'item_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'receipt_date_in_documentation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'scale': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}),
+ 'support_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SupportType']", 'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_finds.Treatment']"})
+ },
+ 'archaeological_finds.treatmenttype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'downstream_is_many': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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'}),
+ 'upstream_is_many': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'virtual': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'archaeological_operations.acttype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'ActType'},
+ 'associated_template': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'acttypes'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.DocumentTemplate']"}),
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'indexed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'intented_to': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_operations.administrativeact': {
+ 'Meta': {'ordering': "('year', 'signature_date', 'index', 'act_type')", 'object_name': 'AdministrativeAct'},
+ 'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}),
+ 'act_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ActType']"}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'departments_label': ('django.db.models.fields.TextField', [], {'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_archaeological_operations_administrativeact'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operation_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signatory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'signatory'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.archaeologicalsite': {
+ 'Meta': {'object_name': 'ArchaeologicalSite'},
+ '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_archaeological_operations_archaeologicalsite'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operation': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'Operation'},
+ 'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'archaeological_sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.ArchaeologicalSite']", 'null': 'True', 'blank': 'True'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operations'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cira_rapporteur'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'documentation_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'documentation_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_operation'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'multi_polygon': ('django.contrib.gis.db.models.fields.MultiPolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'old_code': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['ishtar_common.OperationType']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True', 'blank': 'True'}),
+ 'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'report_processing': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ReportState']", 'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}),
+ 'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.parcel': {
+ 'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '100', '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_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ '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_archaeological_operations_parcel'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel_number': ('django.db.models.fields.CharField', [], {'max_length': '6', 'null': 'True', 'blank': 'True'}),
+ 'public_domain': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'section': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
+ 'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.period': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Period'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_operations.remaintype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'},
+ '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'})
+ },
+ 'archaeological_operations.reportstate': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'ReportState'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_warehouse.container': {
+ 'Meta': {'object_name': 'Container'},
+ 'comment': ('django.db.models.fields.TextField', [], {}),
+ 'container_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.ContainerType']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ '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_archaeological_warehouse_container'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']"}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '40'})
+ },
+ 'archaeological_warehouse.containertype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'ContainerType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'length': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
+ 'volume': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_warehouse.warehouse': {
+ 'Meta': {'object_name': 'Warehouse'},
+ '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'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'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_archaeological_warehouse_warehouse'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'person_in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'warehouse_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ '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'}),
+ 'warehouse_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseType']"})
+ },
+ 'archaeological_warehouse.warehousetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'WarehouseType'},
+ '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'})
+ },
+ '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.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.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.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.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'}),
+ 'salutation': ('django.db.models.fields.CharField', [], {'max_length': '200', '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.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.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 = ['archaeological_finds'] \ No newline at end of file
diff --git a/archaeological_finds/migrations/0057_generate_cached_label.py b/archaeological_finds/migrations/0057_generate_cached_label.py
new file mode 100644
index 000000000..911eb7746
--- /dev/null
+++ b/archaeological_finds/migrations/0057_generate_cached_label.py
@@ -0,0 +1,1017 @@
+# -*- 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):
+ for item in orm['archaeological_finds.find'].objects.all():
+ admin_ind = ""
+ q = item.base_finds.all()
+ if q.count():
+ admin_ind = q.all()[0].context_record.operation.cached_label + \
+ u'-' + unicode(str(q.all()[0].index) or '00')
+ lbl = u" | ".join([admin_ind] + [
+ getattr(item, attr)
+ for attr in ['label', ]
+ if getattr(item, attr)])
+ item.cached_label = lbl
+ item.skip_history_when_saving = True
+ item.save()
+
+ def backwards(self, orm):
+ pass
+
+ models = {
+ 'archaeological_context_records.activitytype': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'ActivityType'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.contextrecord': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'ContextRecord'},
+ 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.ActivityType']", 'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'closing_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'datings': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_context_records.Dating']", 'symmetrical': 'False'}),
+ 'datings_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'depth': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'filling': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'has_furniture': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'identification': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.IdentificationType']", 'null': 'True', 'blank': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_context_records_contextrecord'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'interpretation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ 'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'opening_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'context_record'", 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'context_record'", 'to': "orm['archaeological_operations.Parcel']"}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'dim': '3', 'null': 'True', 'blank': 'True'}),
+ 'polygon': ('django.contrib.gis.db.models.fields.PolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_context_records': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_context_records.ContextRecord']", 'null': 'True', 'through': "orm['archaeological_context_records.RecordRelations']", 'blank': 'True'}),
+ 'taq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'taq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'tpq': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'tpq_estimated': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'unit': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['archaeological_context_records.Unit']"}),
+ 'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_context_records.dating': {
+ 'Meta': {'object_name': 'Dating'},
+ 'dating_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.DatingType']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'period': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']"}),
+ 'precise_dating': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'quality': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.DatingQuality']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_context_records.datingquality': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'DatingQuality'},
+ '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'})
+ },
+ 'archaeological_context_records.datingtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'DatingType'},
+ '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'})
+ },
+ 'archaeological_context_records.identificationtype': {
+ 'Meta': {'ordering': "('order', 'label')", 'object_name': 'IdentificationType'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.recordrelations': {
+ 'Meta': {'object_name': 'RecordRelations'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'left_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'right_relations'", 'to': "orm['archaeological_context_records.ContextRecord']"}),
+ 'relation_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.RelationType']"}),
+ 'right_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'left_relations'", 'to': "orm['archaeological_context_records.ContextRecord']"})
+ },
+ 'archaeological_context_records.relationtype': {
+ 'Meta': {'ordering': "('order', 'label')", 'object_name': 'RelationType'},
+ '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'}),
+ 'inverse_relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.RelationType']", 'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'symmetrical': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'tiny_label': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_context_records.unit': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Unit'},
+ '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', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.Unit']", 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_files.file': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_advised': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'classified_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'corporation_general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'departments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'file_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.FileType']"}),
+ 'general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ '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'}),
+ 'imported_line': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_files_file'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'instruction_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'locality': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'main_town': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_main'", 'null': 'True', 'to': "orm['ishtar_common.Town']"}),
+ 'mh_listing': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'mh_register': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'numeric_reference': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'permit_reference': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'permit_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.PermitType']", 'null': 'True', 'blank': 'True'}),
+ 'planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'protected_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'raw_general_contractor': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'raw_town_planning_service': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_file': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.File']", 'null': 'True', 'blank': 'True'}),
+ 'requested_operation_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['ishtar_common.OperationType']"}),
+ 'research_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'responsible_town_planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsible_town_planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'saisine_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.SaisineType']", 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'total_developed_surface': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'total_surface': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'file'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2016'})
+ },
+ 'archaeological_files.filetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'FileType'},
+ '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'})
+ },
+ 'archaeological_files.permittype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'},
+ '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'})
+ },
+ 'archaeological_files.saisinetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'delay': ('django.db.models.fields.IntegerField', [], {'default': '30'}),
+ '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'})
+ },
+ 'archaeological_finds.basefind': {
+ 'Meta': {'object_name': 'BaseFind'},
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'batch': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '1'}),
+ 'cache_complete_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cache_short_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'context_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'base_finds'", 'to': "orm['archaeological_context_records.ContextRecord']"}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'discovery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'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_archaeological_finds_basefind'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'label': ('django.db.models.fields.TextField', [], {}),
+ 'line': ('django.contrib.gis.db.models.fields.LineStringField', [], {'null': 'True', 'blank': 'True'}),
+ 'material_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'dim': '3', 'null': 'True', 'blank': 'True'}),
+ 'polygon': ('django.contrib.gis.db.models.fields.PolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'special_interest': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'topographic_localisation': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.conservatorystate': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'ConservatoryState'},
+ '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'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.ConservatoryState']", 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_finds.find': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'Find'},
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'base_finds': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.BaseFind']"}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'check_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'checked': ('django.db.models.fields.CharField', [], {'default': "'NC'", 'max_length': '2'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'conservatory_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'conservatory_state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.ConservatoryState']", 'null': 'True', 'blank': 'True'}),
+ 'container': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'to': "orm['archaeological_warehouse.Container']"}),
+ 'dating_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'datings': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_context_records.Dating']"}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'diameter': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'dimensions_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'downstream_treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'upstream'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}),
+ 'estimated_value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'find_number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'height': ('django.db.models.fields.FloatField', [], {'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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_finds_find'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'integrities': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.IntegrityType']"}),
+ 'is_complete': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.TextField', [], {}),
+ 'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'mark': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'material_types': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'finds'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.MaterialType']"}),
+ 'object_types': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.ObjectType']"}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'preservation_to_considers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'finds'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.PreservationType']"}),
+ 'previous_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'remarkabilities': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.RemarkabilityType']"}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'upstream_treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'downstream'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}),
+ 'volume': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'weight': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'weight_unit': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
+ 'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.findbasket': {
+ 'Meta': {'unique_together': "(('label', 'user'),)", 'object_name': 'FindBasket'},
+ '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'}),
+ 'items': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'basket'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['archaeological_finds.Find']"}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.finddownstreamtreatments': {
+ 'Meta': {'ordering': "('find', '-treatment_nb')", 'unique_together': "(('find', 'treatment'),)", 'object_name': 'FindDownstreamTreatments', 'db_table': "'find_downtreatments'", 'managed': 'False'},
+ 'find': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'finddownstreamtreatments_related'", 'to': "orm['archaeological_finds.Find']"}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.Treatment']", 'primary_key': 'True'}),
+ 'treatment_nb': ('django.db.models.fields.IntegerField', [], {})
+ },
+ 'archaeological_finds.findsource': {
+ 'Meta': {'object_name': 'FindSource'},
+ 'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'findsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'duplicate': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '12', 'null': 'True', 'blank': 'True'}),
+ 'find': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_finds.Find']"}),
+ 'format_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Format']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'item_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'receipt_date_in_documentation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'scale': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}),
+ 'support_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SupportType']", 'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'})
+ },
+ 'archaeological_finds.findtreatments': {
+ 'Meta': {'ordering': "('find', 'upstream', '-treatment_nb')", 'unique_together': "(('find', 'treatment'),)", 'object_name': 'FindTreatments', 'db_table': "'find_treatments'", 'managed': 'False'},
+ 'find': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'findtreatments_related'", 'to': "orm['archaeological_finds.Find']"}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.Treatment']", 'primary_key': 'True'}),
+ 'treatment_nb': ('django.db.models.fields.IntegerField', [], {}),
+ 'upstream': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'archaeological_finds.findupstreamtreatments': {
+ 'Meta': {'ordering': "('find', '-treatment_nb')", 'unique_together': "(('find', 'treatment'),)", 'object_name': 'FindUpstreamTreatments', 'db_table': "'find_uptreatments'", 'managed': 'False'},
+ 'find': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'findupstreamtreatments_related'", 'to': "orm['archaeological_finds.Find']"}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.Treatment']", 'primary_key': 'True'}),
+ 'treatment_nb': ('django.db.models.fields.IntegerField', [], {})
+ },
+ 'archaeological_finds.historicalbasefind': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalBaseFind'},
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'batch': ('django.db.models.fields.CharField', [], {'default': "'U'", 'max_length': '1'}),
+ 'cache_complete_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cache_short_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'context_record_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'discovery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'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'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'label': ('django.db.models.fields.TextField', [], {}),
+ 'line': ('django.contrib.gis.db.models.fields.LineStringField', [], {'null': 'True', 'blank': 'True'}),
+ 'material_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'dim': '3', 'null': 'True', 'blank': 'True'}),
+ 'polygon': ('django.contrib.gis.db.models.fields.PolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'special_interest': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'topographic_localisation': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.historicalfind': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalFind'},
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'check_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'checked': ('django.db.models.fields.CharField', [], {'default': "'NC'", 'max_length': '2'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'conservatory_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'conservatory_state_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'container_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'dating_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'diameter': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'dimensions_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'downstream_treatment_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'estimated_value': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'find_number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'height': ('django.db.models.fields.FloatField', [], {'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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'is_complete': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.TextField', [], {}),
+ 'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'mark': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'previous_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'upstream_treatment_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'volume': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'weight': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'weight_unit': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
+ 'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.historicaltreatment': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalTreatment'},
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'container_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', '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'}),
+ 'location_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'other_location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'person_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'treatment_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_finds.integritytype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'IntegrityType'},
+ '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'})
+ },
+ 'archaeological_finds.materialtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'MaterialType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': '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'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.MaterialType']", 'null': 'True', 'blank': 'True'}),
+ 'recommendation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_finds.objecttype': {
+ 'Meta': {'ordering': "('parent__label', 'label')", 'object_name': 'ObjectType'},
+ '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'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.ObjectType']", 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_finds.preservationtype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PreservationType'},
+ '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'})
+ },
+ 'archaeological_finds.property': {
+ 'Meta': {'object_name': 'Property'},
+ 'administrative_act': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.AdministrativeAct']"}),
+ 'end_date': ('django.db.models.fields.DateField', [], {}),
+ 'find': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.Find']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ '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_archaeological_finds_property'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'properties'", 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {})
+ },
+ 'archaeological_finds.remarkabilitytype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'RemarkabilityType'},
+ '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'})
+ },
+ 'archaeological_finds.treatment': {
+ 'Meta': {'object_name': 'Treatment'},
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'container': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Container']", 'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', '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_archaeological_finds_treatment'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']", 'null': 'True', 'blank': 'True'}),
+ 'other_location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'person': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'treatment_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentType']"})
+ },
+ 'archaeological_finds.treatmentsource': {
+ 'Meta': {'object_name': 'TreatmentSource'},
+ 'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'treatmentsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'duplicate': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '12', 'null': 'True', 'blank': 'True'}),
+ 'format_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Format']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'item_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'receipt_date_in_documentation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'scale': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}),
+ 'support_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SupportType']", 'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_finds.Treatment']"})
+ },
+ 'archaeological_finds.treatmenttype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'downstream_is_many': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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'}),
+ 'upstream_is_many': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'virtual': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'archaeological_operations.acttype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'ActType'},
+ 'associated_template': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'acttypes'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.DocumentTemplate']"}),
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'indexed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'intented_to': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_operations.administrativeact': {
+ 'Meta': {'ordering': "('year', 'signature_date', 'index', 'act_type')", 'object_name': 'AdministrativeAct'},
+ 'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}),
+ 'act_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ActType']"}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'departments_label': ('django.db.models.fields.TextField', [], {'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_archaeological_operations_administrativeact'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operation_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signatory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'signatory'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.archaeologicalsite': {
+ 'Meta': {'object_name': 'ArchaeologicalSite'},
+ '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_archaeological_operations_archaeologicalsite'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operation': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'Operation'},
+ 'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'archaeological_sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.ArchaeologicalSite']", 'null': 'True', 'blank': 'True'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operations'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cira_rapporteur'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'documentation_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'documentation_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_operation'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'multi_polygon': ('django.contrib.gis.db.models.fields.MultiPolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'old_code': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['ishtar_common.OperationType']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True', 'blank': 'True'}),
+ 'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'report_processing': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ReportState']", 'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}),
+ 'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.parcel': {
+ 'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '100', '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_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ '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_archaeological_operations_parcel'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel_number': ('django.db.models.fields.CharField', [], {'max_length': '6', 'null': 'True', 'blank': 'True'}),
+ 'public_domain': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'section': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
+ 'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.period': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Period'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_operations.remaintype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'},
+ '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'})
+ },
+ 'archaeological_operations.reportstate': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'ReportState'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_warehouse.container': {
+ 'Meta': {'object_name': 'Container'},
+ 'comment': ('django.db.models.fields.TextField', [], {}),
+ 'container_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.ContainerType']"}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ '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_archaeological_warehouse_container'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']"}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '40'})
+ },
+ 'archaeological_warehouse.containertype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'ContainerType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'length': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
+ 'volume': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_warehouse.warehouse': {
+ 'Meta': {'object_name': 'Warehouse'},
+ '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'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'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_archaeological_warehouse_warehouse'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'person_in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'warehouse_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ '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'}),
+ 'warehouse_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseType']"})
+ },
+ 'archaeological_warehouse.warehousetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'WarehouseType'},
+ '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'})
+ },
+ '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.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.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.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.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'}),
+ 'salutation': ('django.db.models.fields.CharField', [], {'max_length': '200', '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.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.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 = ['archaeological_finds']
diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py
index 15ed32120..5811ded6e 100644
--- a/archaeological_finds/models.py
+++ b/archaeological_finds/models.py
@@ -23,9 +23,11 @@ from django.conf import settings
from django.contrib.gis.db import models
from django.core.urlresolvers import reverse
from django.db.models import Max, Q
-from django.db.models.signals import m2m_changed
+from django.db.models.signals import m2m_changed, post_save
from django.utils.translation import ugettext_lazy as _, ugettext
+from ishtar_common.utils import cached_label_changed
+
from ishtar_common.models import GeneralType, ImageModel, BaseHistorizedItem, \
ShortMenuItem, LightHistorizedItem, HistoricalRecords, OwnPerms, Source, \
Person, Basket, get_external_id
@@ -275,6 +277,7 @@ class FindBasket(Basket):
class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
CHECK_DICT = dict(CHECK_CHOICES)
SHOW_URL = 'show-find'
+ SLUG = 'find'
TABLE_COLS = ['label', 'material_types', 'datings.period',
'base_finds.context_record.parcel.town',
'base_finds.context_record.operation.year',
@@ -374,6 +377,7 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
default=datetime.date.today)
estimated_value = models.FloatField(_(u"Estimated value"), blank=True,
null=True)
+ cached_label = models.TextField(_(u"Cached name"), null=True, blank=True)
history = HistoricalRecords()
BASKET_MODEL = FindBasket
IMAGE_PREFIX = 'finds/'
@@ -388,13 +392,18 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
("change_own_find", ugettext(u"Can change own Find")),
("delete_own_find", ugettext(u"Can delete own Find")),
)
+ ordering = ('cached_label',)
@property
def short_class_name(self):
return _(u"FIND")
def __unicode__(self):
- return self.label
+ lbl = settings.JOINT.join([
+ getattr(self, attr)
+ for attr in ('administrative_index', 'label')
+ if getattr(self, attr)])
+ return lbl
@property
def short_label(self):
@@ -441,8 +450,8 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
@property
def administrative_index(self):
bf = self.get_first_base_find()
- if not bf:
- return
+ if not bf or not bf.context_record or not bf.context_record.operation:
+ return ""
return "{}-{}".format(
bf.context_record.operation.get_reference(),
self.index)
@@ -564,6 +573,17 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
ishtaruser.person) |\
Q(history_creator=user)
+ @classmethod
+ def get_owns(cls, user, menu_filtr=None):
+ replace_query = {}
+ if menu_filtr:
+ replace_query = {'base_finds__context_record': menu_filtr}
+ owns = super(Find, cls).get_owns(user, replace_query=replace_query)
+ return sorted(owns, key=lambda x: x.cached_label)
+
+ def _generate_cached_label(self):
+ return unicode(self)
+
def save(self, *args, **kwargs):
super(Find, self).save(*args, **kwargs)
@@ -624,6 +644,9 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
# idx and idx['material_index__max'] + 1 or 1
+post_save.connect(cached_label_changed, sender=Find)
+
+
def base_find_find_changed(sender, **kwargs):
obj = kwargs.get('instance', None)
if not obj:
diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html
index c867b46ee..fbd7cec1a 100644
--- a/archaeological_finds/templates/ishtar/sheet_find.html
+++ b/archaeological_finds/templates/ishtar/sheet_find.html
@@ -4,7 +4,7 @@
{% block head_title %}{% trans "Find" %}{% endblock %}
{% block content %}
-{% window_nav item window_id 'show-find' 'find_modify' 'show-historized-find' 'revert-find' previous next %}
+{% window_nav item window_id 'show-find' 'find_modify' 'show-historized-find' 'revert-find' previous next 1 %}
{% if item.image %}
<a href='{{item.image.url}}' rel="prettyPhoto" title="{{item.label}}" class='photo'><img src='{{item.thumbnail.url}}'/></a>
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 1b61d49ca..a0a9f0a8a 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -97,7 +97,7 @@ class ImportFindTest(ImportContextRecordTest):
class FindInit(ContextRecordInit):
test_context_records = False
- def create_finds(self, user=None, data_base={}, data={}):
+ def create_finds(self, user=None, data_base={}, data={}, force=False):
if not getattr(self, 'finds', None):
self.finds = []
if not getattr(self, 'base_finds', None):
@@ -106,10 +106,9 @@ class FindInit(ContextRecordInit):
default = {'label': "Base find"}
if not data_base.get('history_modifier'):
data_base['history_modifier'] = self.get_default_user()
- if not data_base.get('context_record') \
- or not data_base['context_record'].pk:
- data_base['context_record'] = self.get_default_context_record()
-
+ if force or not data_base.get('context_record'):
+ data_base['context_record'] = self.get_default_context_record(
+ force=force)
default.update(data_base)
base_find = models.BaseFind.objects.create(**default)
self.base_finds.append(base_find)
@@ -156,7 +155,7 @@ class FindTest(FindInit, TestCase):
model = models.Find
def setUp(self):
- self.create_finds()
+ self.create_finds(force=True)
def testExternalID(self):
find = self.finds[0]
@@ -188,8 +187,8 @@ class PackagingTest(FindInit, TestCase):
model = models.Find
def setUp(self):
- self.create_finds({"label": u"Find 1"})
- self.create_finds({"label": u"Find 2"})
+ self.create_finds({"label": u"Find 1"}, force=True)
+ self.create_finds({"label": u"Find 2"}, force=True)
self.basket = models.FindBasket.objects.create(
label="My basket", user=IshtarUser.objects.get(
pk=self.get_default_user().pk))
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index 57b2b7665..80cc6fd8c 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -72,6 +72,11 @@ get_find = get_item(
relation_types_prefix={
'ope_relation_types':
'base_finds__context_record__operation__'},
+ relative_session_names=[
+ ('contextrecord', 'base_finds__context_record__pk'),
+ ('operation', 'base_finds__context_record__operation__pk'),
+ ('file', 'base_finds__context_record__operation__associated_file__pk')
+ ],
base_request={'downstream_treatment__isnull': True},
extra_request_keys=find_extra_keys.copy())
@@ -87,6 +92,13 @@ show_findsource = show_item(models.FindSource, 'findsource')
get_findsource = get_item(
models.FindSource, 'get_findsource', 'findsource',
bool_fields=['duplicate'],
+ relative_session_names=[
+ ('find', 'find__pk'),
+ ('contextrecord', 'find__base_finds__context_record__pk'),
+ ('operation', 'find__base_finds__context_record__operation__pk'),
+ ('file',
+ 'find__base_finds__context_record__operation__associated_file__pk')
+ ],
extra_request_keys={
'title': 'title__icontains',
'description': 'description__icontains',
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index 7ae6d0d0c..f897969c4 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -95,6 +95,7 @@ class TreatmentWizard(Wizard):
class FindSourceWizard(SourceWizard):
+ wizard_done_window = reverse_lazy('show-findsource')
model = models.FindSource
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 7bac80b48..15db8be31 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -157,9 +157,8 @@ class ParcelForm(forms.Form):
else:
c_number = 0
values = [town, data.get('year') or '', data.get('section') or '',
- c_number, str(data.get('parcel_number') or '')
- + str(u"Public domain") if data.get('public_domain')
- else u""]
+ c_number, unicode(_(u"public domain"))
+ if data.get('public_domain') else u""]
if data.get('DELETE'):
deleted.append(values)
else:
@@ -177,7 +176,8 @@ class ParcelForm(forms.Form):
grouped = []
for keys, parcel_grp in groupby(parcels, key=sortkeyfn):
keys = list(keys)
- keys.append([gp[-1] for gp in parcel_grp])
+ keys.append([u' '.join([unicode(gp[-2]), unicode(gp[-1])])
+ for gp in parcel_grp])
grouped.append(keys)
res = ''
c_town, c_section = '', ''
@@ -534,9 +534,28 @@ class OperationSelect(TableSelect):
args=['0', 'user']),
associated_model=Person),
validators=[valid_id(Person)])
+ documentation_deadline_before = forms.DateField(
+ label=_(u"Documentation deadline before"), widget=widgets.JQueryDate)
+ documentation_deadline_after = forms.DateField(
+ label=_(u"Documentation deadline after"), widget=widgets.JQueryDate)
+ documentation_received = forms.NullBooleanField(
+ label=_(u"Documentation received"))
+ finds_deadline_before = forms.DateField(
+ label=_(u"Finds deadline before"), widget=widgets.JQueryDate)
+ finds_deadline_after = forms.DateField(
+ label=_(u"Finds deadline after"), widget=widgets.JQueryDate)
+ finds_received = forms.NullBooleanField(
+ label=_(u"Finds received"))
def __init__(self, *args, **kwargs):
super(OperationSelect, self).__init__(*args, **kwargs)
+ if not get_current_profile().warehouse:
+ self.fields.pop('documentation_deadline_before')
+ self.fields.pop('documentation_deadline_after')
+ self.fields.pop('documentation_received')
+ self.fields.pop('finds_deadline_before')
+ self.fields.pop('finds_deadline_after')
+ self.fields.pop('finds_received')
self.fields['operation_type'].choices = \
models.OperationType.get_types()
self.fields['operation_type'].help_text = \
@@ -797,6 +816,17 @@ class OperationFormGeneral(ManageOldType, forms.Form):
limit={'person_types': [SRA_AGENT.pk, HEAD_SCIENTIST.pk]},
associated_model=Person, new=True),
validators=[valid_id(Person)], required=False)
+ documentation_deadline = forms.DateField(
+ label=_(u"Deadline for submission of the documentation"),
+ required=False, widget=widgets.JQueryDate)
+ documentation_received = forms.NullBooleanField(
+ required=False, label=_(u"Documentation received"))
+ finds_deadline = forms.DateField(
+ label=_(u"Deadline for submission of the finds"), required=False,
+ widget=widgets.JQueryDate)
+ finds_received = forms.NullBooleanField(
+ required=False, label=_(u"Finds received"))
+
comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea,
required=False)
record_quality = forms.ChoiceField(label=_(u"Record quality"),
@@ -813,6 +843,11 @@ class OperationFormGeneral(ManageOldType, forms.Form):
def __init__(self, *args, **kwargs):
super(OperationFormGeneral, self).__init__(*args, **kwargs)
+ if not get_current_profile().warehouse:
+ self.fields.pop('documentation_deadline')
+ self.fields.pop('documentation_received')
+ self.fields.pop('finds_deadline')
+ self.fields.pop('finds_received')
self.fields['operation_type'].choices = \
models.OperationType.get_types(
initial=self.init_data.get('operation_type'))
diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot
index dc9b27cea..fb798d8b7 100644
--- a/archaeological_operations/locale/django.pot
+++ b/archaeological_operations/locale/django.pot
@@ -8,12 +8,13 @@
msgid ""
msgstr ""
-#: forms.py:67 forms.py:369 forms.py:964 forms.py:986 forms.py:990
-#: models.py:1010 templates/ishtar/blocks/window_tables/parcels.html:10
+#: forms.py:67 forms.py:369 forms.py:999 forms.py:1021 forms.py:1025
+#: models.py:1035 templates/ishtar/sheet_operation.html:138
+#: templates/ishtar/blocks/window_tables/parcels.html:10
msgid "Parcels"
msgstr ""
-#: forms.py:70 forms.py:203 forms.py:940 models.py:996
+#: forms.py:70 forms.py:203 forms.py:975 models.py:1021
#: templates/ishtar/blocks/window_tables/parcels.html:7
#: templates/ishtar/dashboards/dashboard_operation.html:432
#: templates/ishtar/dashboards/dashboard_operation.html:446
@@ -22,22 +23,22 @@ msgstr ""
msgid "Town"
msgstr ""
-#: forms.py:72 forms.py:459 forms.py:734 forms.py:1210 models.py:196
-#: models.py:813 models.py:994
+#: forms.py:72 forms.py:459 forms.py:753 forms.py:1245 models.py:197
+#: models.py:838 models.py:1019
#: templates/ishtar/blocks/window_tables/parcels.html:8
msgid "Year"
msgstr ""
-#: forms.py:75 models.py:997
+#: forms.py:75 models.py:1022
#: templates/ishtar/blocks/window_tables/parcels.html:9
msgid "Section"
msgstr ""
-#: forms.py:78 models.py:999
+#: forms.py:78 models.py:1024
msgid "Parcel number"
msgstr ""
-#: forms.py:80 models.py:1001 models.py:1018 models.py:1067
+#: forms.py:80 models.py:1026 models.py:1043 models.py:1092
msgid "Public domain"
msgstr ""
@@ -45,11 +46,15 @@ msgstr ""
msgid "Town section is required."
msgstr ""
-#: forms.py:168
+#: forms.py:160
+msgid "public domain"
+msgstr ""
+
+#: forms.py:167
msgid "Current parcels"
msgstr ""
-#: forms.py:170
+#: forms.py:169
msgid "Deleted parcels"
msgstr ""
@@ -69,8 +74,8 @@ msgstr ""
msgid "Relation type"
msgstr ""
-#: forms.py:381 ishtar_menu.py:30 models.py:278 models.py:713 models.py:738
-#: models.py:754 models.py:805 models.py:993 wizards.py:338 wizards.py:349
+#: forms.py:381 ishtar_menu.py:30 models.py:289 models.py:738 models.py:763
+#: models.py:779 models.py:830 models.py:1018 wizards.py:339 wizards.py:350
#: templates/ishtar/sheet_operation.html:4
msgid "Operation"
msgstr ""
@@ -79,7 +84,7 @@ msgstr ""
msgid ":"
msgstr ""
-#: forms.py:409 forms.py:587 forms.py:1175
+#: forms.py:409 forms.py:606 forms.py:1210
msgid "You should select an operation."
msgstr ""
@@ -95,19 +100,19 @@ msgstr ""
msgid "Deleted relations"
msgstr ""
-#: forms.py:449 templates/ishtar/sheet_operation.html:78
+#: forms.py:449 templates/ishtar/sheet_operation.html:82
msgid "Relations"
msgstr ""
-#: forms.py:460 forms.py:1181
+#: forms.py:460 forms.py:1216 models.py:198
msgid "Numeric reference"
msgstr ""
-#: forms.py:466 forms.py:1221
+#: forms.py:466 forms.py:1256
msgid "Parcel (section/number/public domain)"
msgstr ""
-#: forms.py:469 forms.py:1224 models.py:714
+#: forms.py:469 forms.py:1259 models.py:739
#: templates/ishtar/dashboards/dashboard_operation.html:390
#: templates/ishtar/dashboards/dashboard_operation.html:411
#: templates/ishtar/dashboards/dashboard_operation.html:643
@@ -115,12 +120,12 @@ msgstr ""
msgid "Department"
msgstr ""
-#: forms.py:470 forms.py:1052 models.py:79
+#: forms.py:470 forms.py:1087 models.py:79
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8
msgid "Name"
msgstr ""
-#: forms.py:472 forms.py:654 forms.py:732 forms.py:1187 models.py:204
+#: forms.py:472 forms.py:673 forms.py:751 forms.py:1222 models.py:205
msgid "Operation type"
msgstr ""
@@ -128,24 +133,24 @@ msgstr ""
msgid "Is open?"
msgstr ""
-#: forms.py:483 forms.py:761 models.py:193
+#: forms.py:483 forms.py:780 models.py:194
msgid "In charge"
msgstr ""
-#: forms.py:490 models.py:799
+#: forms.py:490 models.py:824
msgid "Scientist in charge"
msgstr ""
-#: forms.py:492 forms.py:656 forms.py:752 models.py:191
+#: forms.py:492 forms.py:675 forms.py:771 models.py:192
msgid "Operator"
msgstr ""
-#: forms.py:499 forms.py:1057 models.py:83 models.py:206
+#: forms.py:499 forms.py:1092 models.py:83 models.py:207
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:10
msgid "Remains"
msgstr ""
-#: forms.py:500 forms.py:1035 forms.py:1054 models.py:81 models.py:211
+#: forms.py:500 forms.py:1070 forms.py:1089 models.py:81 models.py:212
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9
msgid "Periods"
msgstr ""
@@ -170,7 +175,7 @@ msgstr ""
msgid "Search within relations"
msgstr ""
-#: forms.py:512 forms.py:800 models.py:257
+#: forms.py:512 forms.py:830 models.py:258
msgid "Comment"
msgstr ""
@@ -178,353 +183,385 @@ msgstr ""
msgid "Abstract (full text search)"
msgstr ""
-#: forms.py:514 forms.py:802 models.py:269
+#: forms.py:514 forms.py:832 models.py:270
msgid "Record quality"
msgstr ""
-#: forms.py:515 forms.py:784 models.py:223
+#: forms.py:515 forms.py:803 models.py:224
msgid "Report processing"
msgstr ""
-#: forms.py:517 forms.py:805 models.py:264
+#: forms.py:517 forms.py:835 models.py:265
msgid "Virtual operation"
msgstr ""
-#: forms.py:519 forms.py:1101
+#: forms.py:519 forms.py:1136
msgid "Archaelogical site"
msgstr ""
-#: forms.py:525 forms.py:1228
+#: forms.py:525 forms.py:1263
msgid "Created by"
msgstr ""
-#: forms.py:531 forms.py:1234
+#: forms.py:531 forms.py:1269
msgid "Modified by"
msgstr ""
-#: forms.py:574 forms.py:1173 views.py:247
+#: forms.py:538
+msgid "Documentation deadline before"
+msgstr ""
+
+#: forms.py:540
+msgid "Documentation deadline after"
+msgstr ""
+
+#: forms.py:542 forms.py:823 models.py:277
+msgid "Documentation received"
+msgstr ""
+
+#: forms.py:544
+msgid "Finds deadline before"
+msgstr ""
+
+#: forms.py:546
+msgid "Finds deadline after"
+msgstr ""
+
+#: forms.py:548 forms.py:828 models.py:281
+msgid "Finds received"
+msgstr ""
+
+#: forms.py:593 forms.py:1208 views.py:255
msgid "Operation search"
msgstr ""
-#: forms.py:618
+#: forms.py:637
msgid "Associated file"
msgstr ""
-#: forms.py:622 forms.py:888 models.py:810 wizards.py:76
+#: forms.py:641 forms.py:923 models.py:835 wizards.py:76
msgid "Archaelogical file"
msgstr ""
-#: forms.py:629 forms.py:631 models.py:271
+#: forms.py:648 forms.py:650 models.py:272
msgid "Abstract"
msgstr ""
-#: forms.py:634
+#: forms.py:653
msgid "months"
msgstr ""
-#: forms.py:634
+#: forms.py:653
msgid "years"
msgstr ""
-#: forms.py:636 models.py:177
+#: forms.py:655 models.py:178
msgid "Creation date"
msgstr ""
-#: forms.py:637
+#: forms.py:656
msgid "Start of field work"
msgstr ""
-#: forms.py:639
+#: forms.py:658
msgid "All"
msgstr ""
-#: forms.py:640
+#: forms.py:659
msgid "Preventive"
msgstr ""
-#: forms.py:641
+#: forms.py:660
msgid "Research"
msgstr ""
-#: forms.py:645
+#: forms.py:664
msgid "Slicing"
msgstr ""
-#: forms.py:648
+#: forms.py:667
msgid "Department detail"
msgstr ""
-#: forms.py:650
+#: forms.py:669
msgid "Date get from"
msgstr ""
-#: forms.py:652
+#: forms.py:671
msgid "Preventive/Research"
msgstr ""
-#: forms.py:658
+#: forms.py:677
msgid "Date after"
msgstr ""
-#: forms.py:660
+#: forms.py:679
msgid "Date before"
msgstr ""
-#: forms.py:662
+#: forms.py:681
msgid "With reports"
msgstr ""
-#: forms.py:663
+#: forms.py:682
msgid "With finds"
msgstr ""
-#: forms.py:715 forms.py:1282 templates/ishtar/sheet_administrativeact.html:13
+#: forms.py:734 forms.py:1317 templates/ishtar/sheet_administrativeact.html:13
#: templates/ishtar/sheet_operation.html:20
msgid "General"
msgstr ""
-#: forms.py:730 models.py:256
+#: forms.py:749 models.py:257
msgid "Generic name"
msgstr ""
-#: forms.py:739 models.py:225
+#: forms.py:758 models.py:226
msgid "Old code"
msgstr ""
-#: forms.py:742
+#: forms.py:761
msgid "Head scientist"
msgstr ""
-#: forms.py:758 models.py:255
+#: forms.py:777 models.py:256
msgid "Operator reference"
msgstr ""
-#: forms.py:770
+#: forms.py:789
msgid "Total surface (m2)"
msgstr ""
-#: forms.py:777 models.py:51 models.py:180 models.py:1183
+#: forms.py:796 models.py:51 models.py:181 models.py:1208
msgid "Start date"
msgstr ""
-#: forms.py:779 models.py:182
+#: forms.py:798 models.py:183
msgid "Excavation end date"
msgstr ""
-#: forms.py:782 models.py:183
+#: forms.py:801 models.py:184
msgid "Report delivery date"
msgstr ""
-#: forms.py:807
+#: forms.py:820 models.py:274
+msgid "Deadline for submission of the documentation"
+msgstr ""
+
+#: forms.py:825 models.py:279
+msgid "Deadline for submission of the finds"
+msgstr ""
+
+#: forms.py:837
msgid "Image"
msgstr ""
-#: forms.py:808
+#: forms.py:838
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
"p>"
msgstr ""
-#: forms.py:841
+#: forms.py:876
msgid ""
"If you want to set an excavation end date you have to provide a start date."
msgstr ""
-#: forms.py:846
+#: forms.py:881
msgid "The excavation end date cannot be before the start date."
msgstr ""
-#: forms.py:874
+#: forms.py:909
#, python-format
msgid ""
"Operation code already exist for year: %(year)d - use a value bigger than "
"%(last_val)d"
msgstr ""
-#: forms.py:878
+#: forms.py:913
msgid "Bad operation code"
msgstr ""
-#: forms.py:884 models.py:197 models.py:407
+#: forms.py:919 models.py:422
msgid "Operation code"
msgstr ""
-#: forms.py:910
+#: forms.py:945
msgid "Preventive informations - excavation"
msgstr ""
-#: forms.py:911 models.py:209
+#: forms.py:946 models.py:210
#: templates/ishtar/dashboards/dashboard_operation.html:699
msgid "Cost (euros)"
msgstr ""
-#: forms.py:912 models.py:214
+#: forms.py:947 models.py:215
msgid "Scheduled man-days"
msgstr ""
-#: forms.py:914 models.py:217
+#: forms.py:949 models.py:218
msgid "Optional man-days"
msgstr ""
-#: forms.py:916 models.py:220
+#: forms.py:951 models.py:221
msgid "Effective man-days"
msgstr ""
-#: forms.py:926
+#: forms.py:961
msgid "Preventive informations - diagnostic"
msgstr ""
-#: forms.py:929 models.py:239
+#: forms.py:964 models.py:240
msgid "Prescription on zoning"
msgstr ""
-#: forms.py:931 models.py:242
+#: forms.py:966 models.py:243
msgid "Prescription on large area"
msgstr ""
-#: forms.py:934 models.py:244
+#: forms.py:969 models.py:245
msgid "Prescription on geoarchaeological context"
msgstr ""
-#: forms.py:938 forms.py:960 models.py:208 models.py:823
+#: forms.py:973 forms.py:995 models.py:209 models.py:848
msgid "Towns"
msgstr ""
-#: forms.py:967 models.py:1009 models.py:1181
+#: forms.py:1002 models.py:1034 models.py:1206
msgid "Parcel"
msgstr ""
-#: forms.py:1019 models.py:45
+#: forms.py:1054 models.py:45
msgid "Remain types"
msgstr ""
-#: forms.py:1023 models.py:44
+#: forms.py:1058 models.py:44
msgid "Remain type"
msgstr ""
-#: forms.py:1039 templates/ishtar/sheet_operation.html:149
-#: templates/ishtar/sheet_operation.html:180
+#: forms.py:1074 templates/ishtar/sheet_operation.html:158
+#: templates/ishtar/sheet_operation.html:189
msgid "Period"
msgstr ""
-#: forms.py:1051 models.py:78
+#: forms.py:1086 models.py:78
msgid "Reference"
msgstr ""
-#: forms.py:1080
+#: forms.py:1115
msgid "This reference already exists."
msgstr ""
-#: forms.py:1097 models.py:87
+#: forms.py:1132 models.py:87
msgid "Archaeological site"
msgstr ""
-#: forms.py:1112 models.py:88 models.py:261
-#: templates/ishtar/sheet_operation.html:89
+#: forms.py:1147 models.py:88 models.py:262
+#: templates/ishtar/sheet_operation.html:93
msgid "Archaeological sites"
msgstr ""
-#: forms.py:1116
+#: forms.py:1151
msgid "Associated archaelogical sites"
msgstr ""
-#: forms.py:1122 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
+#: forms.py:1157 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
msgid "Search"
msgstr ""
-#: forms.py:1127
+#: forms.py:1162
msgid "Would you like to close this operation?"
msgstr ""
-#: forms.py:1132
+#: forms.py:1167
msgid "Would you like to delete this operation?"
msgstr ""
-#: forms.py:1141 forms.py:1211 forms.py:1347 models.py:740 models.py:790
+#: forms.py:1176 forms.py:1246 forms.py:1382 models.py:765 models.py:815
msgid "Index"
msgstr ""
-#: forms.py:1167
+#: forms.py:1202
#, python-format
msgid ""
"Index already exists for operation: %(operation)s - use a value bigger than "
"%(last_val)d"
msgstr ""
-#: forms.py:1179
+#: forms.py:1214
msgid "Operation's year"
msgstr ""
-#: forms.py:1186
+#: forms.py:1221
msgid "Operation's town"
msgstr ""
-#: forms.py:1199
+#: forms.py:1234
msgid "Documentation search"
msgstr ""
-#: forms.py:1201
+#: forms.py:1236
msgid "You should select a document."
msgstr ""
-#: forms.py:1218 forms.py:1285 models.py:765 models.py:784
+#: forms.py:1253 forms.py:1320 models.py:790 models.py:809
msgid "Act type"
msgstr ""
-#: forms.py:1219 forms.py:1417
+#: forms.py:1254 forms.py:1452
msgid "Indexed?"
msgstr ""
-#: forms.py:1225 forms.py:1290 models.py:814
+#: forms.py:1260 forms.py:1325 models.py:839
#: templates/ishtar/blocks/window_tables/administrativacts.html:10
msgid "Object"
msgstr ""
-#: forms.py:1262 views.py:403
+#: forms.py:1297 views.py:411
msgid "Administrative act search"
msgstr ""
-#: forms.py:1277 forms.py:1375 forms.py:1442
+#: forms.py:1312 forms.py:1410 forms.py:1477
msgid "You should select an administrative act."
msgstr ""
-#: forms.py:1293 models.py:811
+#: forms.py:1328 models.py:836
msgid "Signature date"
msgstr ""
-#: forms.py:1335
+#: forms.py:1370
#, python-format
msgid ""
"This index already exist for year: %(year)d - use a value bigger than "
"%(last_val)d"
msgstr ""
-#: forms.py:1339
+#: forms.py:1374
msgid "Bad index"
msgstr ""
-#: forms.py:1352
+#: forms.py:1387
msgid "Would you like to delete this administrative act?"
msgstr ""
-#: forms.py:1357
+#: forms.py:1392
msgid "Template"
msgstr ""
-#: forms.py:1381 forms.py:1385
+#: forms.py:1416 forms.py:1420
msgid "This document is not intended for this type of act."
msgstr ""
-#: forms.py:1403
+#: forms.py:1438
msgid "Doc generation"
msgstr ""
-#: forms.py:1405
+#: forms.py:1440
msgid "Generate the associated doc?"
msgstr ""
-#: forms.py:1426 ishtar_menu.py:121 views.py:456
+#: forms.py:1461 ishtar_menu.py:121 views.py:464
msgctxt "admin act register"
msgid "Register"
msgstr ""
@@ -545,7 +582,7 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:58 models.py:830
+#: ishtar_menu.py:58 models.py:855
#: templates/ishtar/sheet_administrativeact.html:4
msgid "Administrative act"
msgstr ""
@@ -574,16 +611,16 @@ msgstr ""
msgid "General informations"
msgstr ""
-#: ishtar_menu.py:136 models.py:279
+#: ishtar_menu.py:136 models.py:290
#: templates/ishtar/dashboards/dashboard_operation.html:9
msgid "Operations"
msgstr ""
-#: models.py:50 models.py:66 models.py:1645
+#: models.py:50 models.py:66 models.py:1670
msgid "Order"
msgstr ""
-#: models.py:52 models.py:1184
+#: models.py:52 models.py:1209
msgid "End date"
msgstr ""
@@ -600,11 +637,11 @@ msgid "Types Period"
msgstr ""
#: models.py:69
-msgid "Report state"
+msgid "Type of report state"
msgstr ""
#: models.py:70
-msgid "Report states"
+msgid "Types of report state"
msgstr ""
#: models.py:91
@@ -639,345 +676,349 @@ msgstr ""
msgid "Reliable"
msgstr ""
-#: models.py:179
+#: models.py:180
msgid "Closing date"
msgstr ""
-#: models.py:186
+#: models.py:187
msgid "In charge scientist"
msgstr ""
-#: models.py:201 models.py:989
+#: models.py:202 models.py:1014
msgid "File"
msgstr ""
-#: models.py:205
+#: models.py:206
msgid "Surface (m2)"
msgstr ""
-#: models.py:258
+#: models.py:259
msgid "Cached name"
msgstr ""
-#: models.py:266
+#: models.py:267
msgid ""
"If checked, it means that this operation have not been officialy registered."
msgstr ""
-#: models.py:272
+#: models.py:283
msgid "Point"
msgstr ""
-#: models.py:273
+#: models.py:284
msgid "Multi polygon"
msgstr ""
-#: models.py:281
+#: models.py:292
msgid "Can view all Operations"
msgstr ""
-#: models.py:282
+#: models.py:293
msgid "Can view own Operation"
msgstr ""
-#: models.py:283
+#: models.py:294
msgid "Can add own Operation"
msgstr ""
-#: models.py:284
+#: models.py:295
msgid "Can change own Operation"
msgstr ""
-#: models.py:285
+#: models.py:296
msgid "Can delete own Operation"
msgstr ""
-#: models.py:286
+#: models.py:297
msgid "Can close Operation"
msgstr ""
-#: models.py:309
+#: models.py:324
msgid "OPE"
msgstr ""
-#: models.py:366
+#: models.py:381
msgid "Intercommunal"
msgstr ""
-#: models.py:392 models.py:753
+#: models.py:407 models.py:778
msgid "Archaeological file"
msgstr ""
-#: models.py:393
+#: models.py:408
msgid "Code patriarche"
msgstr ""
-#: models.py:433
+#: models.py:448
msgid "This operation code already exists for this year"
msgstr ""
-#: models.py:483
+#: models.py:481
+msgid "Number of parcels"
+msgstr ""
+
+#: models.py:499
msgid "Number of administrative acts"
msgstr ""
-#: models.py:491
+#: models.py:507
msgid "Number of indexed administrative acts"
msgstr ""
-#: models.py:499
+#: models.py:515
msgid "Number of context records"
msgstr ""
-#: models.py:535
+#: models.py:551
msgid "Number of finds"
msgstr ""
-#: models.py:576
+#: models.py:596
msgid "No type"
msgstr ""
-#: models.py:603
+#: models.py:627
msgid "Number of sources"
msgstr ""
-#: models.py:644 templates/ishtar/dashboards/dashboard_operation.html:309
+#: models.py:669 templates/ishtar/dashboards/dashboard_operation.html:309
#: templates/ishtar/dashboards/dashboard_operation.html:575
#: templates/ishtar/dashboards/dashboard_operation.html:611
msgid "Mean"
msgstr ""
-#: models.py:684
+#: models.py:709
msgid "Inverse relation"
msgstr ""
-#: models.py:688
+#: models.py:713
msgid "Operation relation type"
msgstr ""
-#: models.py:689
+#: models.py:714
msgid "Operation relation types"
msgstr ""
-#: models.py:702
+#: models.py:727
msgid "Operation record relation"
msgstr ""
-#: models.py:703
+#: models.py:728
msgid "Operation record relations"
msgstr ""
-#: models.py:724
+#: models.py:749
msgid "Operation documentation"
msgstr ""
-#: models.py:725
+#: models.py:750
msgid "Operation documentations"
msgstr ""
-#: models.py:728
+#: models.py:753
msgid "Can view all Operation sources"
msgstr ""
-#: models.py:730
+#: models.py:755
msgid "Can view own Operation source"
msgstr ""
-#: models.py:732
+#: models.py:757
msgid "Can add own Operation source"
msgstr ""
-#: models.py:734
+#: models.py:759
msgid "Can change own Operation source"
msgstr ""
-#: models.py:736
+#: models.py:761
msgid "Can delete own Operation source"
msgstr ""
-#: models.py:756
+#: models.py:781
msgid "Intended to"
msgstr ""
-#: models.py:758
+#: models.py:783
msgid "Code"
msgstr ""
-#: models.py:761
+#: models.py:786
msgid "Associated template"
msgstr ""
-#: models.py:762
+#: models.py:787
msgid "Indexed"
msgstr ""
-#: models.py:766
+#: models.py:791
msgid "Act types"
msgstr ""
-#: models.py:788
+#: models.py:813
msgid "Person in charge of the operation"
msgstr ""
-#: models.py:794
+#: models.py:819
msgid "Archaeological preventive operator"
msgstr ""
-#: models.py:802
+#: models.py:827
msgid "Signatory"
msgstr ""
-#: models.py:820
+#: models.py:845
msgid "Departments"
msgstr ""
-#: models.py:821
+#: models.py:846
msgid "Cached values get from associated departments"
msgstr ""
-#: models.py:824
+#: models.py:849
msgid "Cached values get from associated towns"
msgstr ""
-#: models.py:831 templates/ishtar/sheet_operation.html:97
-#: templates/ishtar/sheet_operation.html:128
+#: models.py:856 templates/ishtar/sheet_operation.html:101
+#: templates/ishtar/sheet_operation.html:132
msgid "Administrative acts"
msgstr ""
-#: models.py:834
+#: models.py:859
msgid "Can view all Administrative acts"
msgstr ""
-#: models.py:836
+#: models.py:861
msgid "Can view own Administrative act"
msgstr ""
-#: models.py:838
+#: models.py:863
msgid "Can add own Administrative act"
msgstr ""
-#: models.py:840
+#: models.py:865
msgid "Can change own Administrative act"
msgstr ""
-#: models.py:842
+#: models.py:867
msgid "Can delete own Administrative act"
msgstr ""
-#: models.py:851
+#: models.py:876
#: templates/ishtar/blocks/window_tables/administrativacts.html:7
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7
msgid "Ref."
msgstr ""
-#: models.py:934
+#: models.py:959
msgid "This index already exists for this year"
msgstr ""
-#: models.py:1002
+#: models.py:1027
msgid "External ID"
msgstr ""
-#: models.py:1005
+#: models.py:1030
msgid "External ID is set automatically"
msgstr ""
-#: models.py:1006
+#: models.py:1031
msgid "Address - Locality"
msgstr ""
-#: models.py:1179
+#: models.py:1204
msgid "Owner"
msgstr ""
-#: models.py:1187
+#: models.py:1212
msgid "Parcel owner"
msgstr ""
-#: models.py:1188
+#: models.py:1213
msgid "Parcel owners"
msgstr ""
-#: models.py:1214
+#: models.py:1239
msgid "Recorded"
msgstr ""
-#: models.py:1215
+#: models.py:1240
msgid "Effective"
msgstr ""
-#: models.py:1216
+#: models.py:1241
msgid "Active"
msgstr ""
-#: models.py:1217
+#: models.py:1242
msgid "Field completed"
msgstr ""
-#: models.py:1218
+#: models.py:1243
msgid "Associated report"
msgstr ""
-#: models.py:1219
+#: models.py:1244
msgid "Closed"
msgstr ""
-#: models.py:1220
+#: models.py:1245
msgid "Documented and closed"
msgstr ""
-#: models.py:1646
+#: models.py:1671
msgid "Is preventive"
msgstr ""
-#: models.py:1649
+#: models.py:1674
msgid "Operation type old"
msgstr ""
-#: models.py:1650
+#: models.py:1675
msgid "Operation types old"
msgstr ""
-#: views.py:293
+#: views.py:301
msgid "New operation"
msgstr ""
-#: views.py:312
+#: views.py:320
msgid "Operation modification"
msgstr ""
-#: views.py:355
+#: views.py:363
msgid "Operation closing"
msgstr ""
-#: views.py:361
+#: views.py:369
msgid "Operation deletion"
msgstr ""
-#: views.py:366
+#: views.py:374
msgid "Operation: source search"
msgstr ""
-#: views.py:374
+#: views.py:382
msgid "Operation: source creation"
msgstr ""
-#: views.py:382
+#: views.py:390
msgid "Operation: source modification"
msgstr ""
-#: views.py:397
+#: views.py:405
msgid "Operation: source deletion"
msgstr ""
-#: views.py:416
+#: views.py:424
msgid "Operation: new administrative act"
msgstr ""
-#: views.py:426
+#: views.py:434
msgid "Operation: administrative act modification"
msgstr ""
-#: views.py:450
+#: views.py:458
msgid "Operation: administrative act deletion"
msgstr ""
@@ -1028,7 +1069,7 @@ msgid "Associated operation:"
msgstr ""
#: templates/ishtar/sheet_administrativeact.html:26
-#: templates/ishtar/sheet_operation.html:40
+#: templates/ishtar/sheet_operation.html:38
msgid "Surface:"
msgstr ""
@@ -1068,64 +1109,64 @@ msgstr ""
msgid "by"
msgstr ""
-#: templates/ishtar/sheet_operation.html:41
+#: templates/ishtar/sheet_operation.html:39
msgid "Cost:"
msgstr ""
-#: templates/ishtar/sheet_operation.html:42
+#: templates/ishtar/sheet_operation.html:40
msgid "Duration:"
msgstr ""
-#: templates/ishtar/sheet_operation.html:42
+#: templates/ishtar/sheet_operation.html:40
msgid "Day"
msgstr ""
-#: templates/ishtar/sheet_operation.html:68
+#: templates/ishtar/sheet_operation.html:72
msgid "Localisation"
msgstr ""
-#: templates/ishtar/sheet_operation.html:93
+#: templates/ishtar/sheet_operation.html:97
msgid "Associated parcels"
msgstr ""
-#: templates/ishtar/sheet_operation.html:101
+#: templates/ishtar/sheet_operation.html:105
msgid "Document from this operation"
msgstr ""
-#: templates/ishtar/sheet_operation.html:107
-#: templates/ishtar/sheet_operation.html:134
+#: templates/ishtar/sheet_operation.html:111
+#: templates/ishtar/sheet_operation.html:143
msgid "Context records"
msgstr ""
-#: templates/ishtar/sheet_operation.html:111
+#: templates/ishtar/sheet_operation.html:115
msgid "Documents from associated context records"
msgstr ""
-#: templates/ishtar/sheet_operation.html:116
-#: templates/ishtar/sheet_operation.html:157
+#: templates/ishtar/sheet_operation.html:120
+#: templates/ishtar/sheet_operation.html:166
msgid "Finds"
msgstr ""
-#: templates/ishtar/sheet_operation.html:121
+#: templates/ishtar/sheet_operation.html:125
msgid "Documents from associated finds"
msgstr ""
-#: templates/ishtar/sheet_operation.html:126
+#: templates/ishtar/sheet_operation.html:130
msgid "Statistics"
msgstr ""
-#: templates/ishtar/sheet_operation.html:141
-#: templates/ishtar/sheet_operation.html:195
+#: templates/ishtar/sheet_operation.html:150
+#: templates/ishtar/sheet_operation.html:204
#: templates/ishtar/blocks/window_tables/administrativacts.html:8
msgid "Type"
msgstr ""
-#: templates/ishtar/sheet_operation.html:141
-#: templates/ishtar/sheet_operation.html:149
-#: templates/ishtar/sheet_operation.html:164
-#: templates/ishtar/sheet_operation.html:172
-#: templates/ishtar/sheet_operation.html:180
-#: templates/ishtar/sheet_operation.html:195
+#: templates/ishtar/sheet_operation.html:150
+#: templates/ishtar/sheet_operation.html:158
+#: templates/ishtar/sheet_operation.html:173
+#: templates/ishtar/sheet_operation.html:181
+#: templates/ishtar/sheet_operation.html:189
+#: templates/ishtar/sheet_operation.html:204
#: templates/ishtar/dashboards/dashboard_operation.html:18
#: templates/ishtar/dashboards/dashboard_operation.html:164
#: templates/ishtar/dashboards/dashboard_operation.html:432
@@ -1134,19 +1175,19 @@ msgstr ""
msgid "Number"
msgstr ""
-#: templates/ishtar/sheet_operation.html:164
+#: templates/ishtar/sheet_operation.html:173
msgid "Material type"
msgstr ""
-#: templates/ishtar/sheet_operation.html:172
+#: templates/ishtar/sheet_operation.html:181
msgid "Object type"
msgstr ""
-#: templates/ishtar/sheet_operation.html:188
+#: templates/ishtar/sheet_operation.html:197
msgid "Sources"
msgstr ""
-#: templates/ishtar/sheet_operation.html:204
+#: templates/ishtar/sheet_operation.html:213
msgid "Finds by context records"
msgstr ""
diff --git a/archaeological_operations/migrations/0059_auto__add_field_historicaloperation_documentation_deadline__add_field_.py b/archaeological_operations/migrations/0059_auto__add_field_historicaloperation_documentation_deadline__add_field_.py
new file mode 100644
index 000000000..17a1cc7db
--- /dev/null
+++ b/archaeological_operations/migrations/0059_auto__add_field_historicaloperation_documentation_deadline__add_field_.py
@@ -0,0 +1,713 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'HistoricalOperation.documentation_deadline'
+ db.add_column('archaeological_operations_historicaloperation', 'documentation_deadline',
+ self.gf('django.db.models.fields.DateField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalOperation.documentation_received'
+ db.add_column('archaeological_operations_historicaloperation', 'documentation_received',
+ self.gf('django.db.models.fields.NullBooleanField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalOperation.finds_deadline'
+ db.add_column('archaeological_operations_historicaloperation', 'finds_deadline',
+ self.gf('django.db.models.fields.DateField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalOperation.finds_received'
+ db.add_column('archaeological_operations_historicaloperation', 'finds_received',
+ self.gf('django.db.models.fields.NullBooleanField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Operation.documentation_deadline'
+ db.add_column('archaeological_operations_operation', 'documentation_deadline',
+ self.gf('django.db.models.fields.DateField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Operation.documentation_received'
+ db.add_column('archaeological_operations_operation', 'documentation_received',
+ self.gf('django.db.models.fields.NullBooleanField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Operation.finds_deadline'
+ db.add_column('archaeological_operations_operation', 'finds_deadline',
+ self.gf('django.db.models.fields.DateField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Operation.finds_received'
+ db.add_column('archaeological_operations_operation', 'finds_received',
+ self.gf('django.db.models.fields.NullBooleanField')(null=True, blank=True),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting field 'HistoricalOperation.documentation_deadline'
+ db.delete_column('archaeological_operations_historicaloperation', 'documentation_deadline')
+
+ # Deleting field 'HistoricalOperation.documentation_received'
+ db.delete_column('archaeological_operations_historicaloperation', 'documentation_received')
+
+ # Deleting field 'HistoricalOperation.finds_deadline'
+ db.delete_column('archaeological_operations_historicaloperation', 'finds_deadline')
+
+ # Deleting field 'HistoricalOperation.finds_received'
+ db.delete_column('archaeological_operations_historicaloperation', 'finds_received')
+
+ # Deleting field 'Operation.documentation_deadline'
+ db.delete_column('archaeological_operations_operation', 'documentation_deadline')
+
+ # Deleting field 'Operation.documentation_received'
+ db.delete_column('archaeological_operations_operation', 'documentation_received')
+
+ # Deleting field 'Operation.finds_deadline'
+ db.delete_column('archaeological_operations_operation', 'finds_deadline')
+
+ # Deleting field 'Operation.finds_received'
+ db.delete_column('archaeological_operations_operation', 'finds_received')
+
+
+ models = {
+ 'archaeological_files.file': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_advised': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'classified_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'corporation_general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'departments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}),
+ 'file_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.FileType']"}),
+ 'general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ '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'}),
+ 'imported_line': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_files_file'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'instruction_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}),
+ 'locality': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'main_town': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_main'", 'null': 'True', 'to': "orm['ishtar_common.Town']"}),
+ 'mh_listing': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'mh_register': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'numeric_reference': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'permit_reference': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'permit_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.PermitType']", 'null': 'True', 'blank': 'True'}),
+ 'planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'protected_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'raw_general_contractor': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'raw_town_planning_service': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'related_file': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.File']", 'null': 'True', 'blank': 'True'}),
+ 'requested_operation_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['ishtar_common.OperationType']"}),
+ 'research_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'responsible_town_planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsible_town_planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'saisine_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.SaisineType']", 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'total_developed_surface': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'total_surface': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'file'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2016'})
+ },
+ 'archaeological_files.filetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'FileType'},
+ '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'})
+ },
+ 'archaeological_files.permittype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'},
+ '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'})
+ },
+ 'archaeological_files.saisinetype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'delay': ('django.db.models.fields.IntegerField', [], {'default': '30'}),
+ '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'})
+ },
+ 'archaeological_operations.acttype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'ActType'},
+ 'associated_template': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'acttypes'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.DocumentTemplate']"}),
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'indexed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'intented_to': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_operations.administrativeact': {
+ 'Meta': {'ordering': "('year', 'signature_date', 'index', 'act_type')", 'object_name': 'AdministrativeAct'},
+ 'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}),
+ 'act_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ActType']"}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'departments_label': ('django.db.models.fields.TextField', [], {'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_archaeological_operations_administrativeact'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operation_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signatory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'signatory'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.archaeologicalsite': {
+ 'Meta': {'object_name': 'ArchaeologicalSite'},
+ '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_archaeological_operations_archaeologicalsite'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.historicaladministrativeact': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalAdministrativeAct'},
+ 'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}),
+ 'act_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'departments_label': ('django.db.models.fields.TextField', [], {'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'}),
+ 'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
+ 'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'signatory_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.historicaloperation': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOperation'},
+ 'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'documentation_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'documentation_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'multi_polygon': ('django.contrib.gis.db.models.fields.MultiPolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'old_code': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True', 'blank': 'True'}),
+ 'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'report_processing_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operation': {
+ 'Meta': {'ordering': "('cached_label',)", 'object_name': 'Operation'},
+ 'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'archaeological_sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.ArchaeologicalSite']", 'null': 'True', 'blank': 'True'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operations'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'cira_rapporteur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cira_rapporteur'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'code_patriarche': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'common_name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}),
+ 'documentation_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'documentation_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'finds_received': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_operation'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'multi_polygon': ('django.contrib.gis.db.models.fields.MultiPolygonField', [], {'null': 'True', 'blank': 'True'}),
+ 'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+ 'old_code': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'operation_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['ishtar_common.OperationType']"}),
+ 'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'point': ('django.contrib.gis.db.models.fields.PointField', [], {'null': 'True', 'blank': 'True'}),
+ 'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}),
+ 'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}),
+ 'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'report_processing': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ReportState']", 'null': 'True', 'blank': 'True'}),
+ 'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}),
+ 'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.operationbydepartment': {
+ 'Meta': {'object_name': 'OperationByDepartment', 'db_table': "'operation_department'", 'managed': 'False'},
+ 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Operation']"})
+ },
+ 'archaeological_operations.operationsource': {
+ 'Meta': {'object_name': 'OperationSource'},
+ 'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operationsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'duplicate': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '12', 'null': 'True', 'blank': 'True'}),
+ 'format_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Format']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'item_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_operations.Operation']"}),
+ 'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'receipt_date_in_documentation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'scale': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
+ 'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}),
+ 'support_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SupportType']", 'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'})
+ },
+ 'archaeological_operations.operationtypeold': {
+ 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationTypeOld'},
+ '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'})
+ },
+ 'archaeological_operations.parcel': {
+ 'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'},
+ 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}),
+ 'auto_external_id': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '100', '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_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ '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_archaeological_operations_parcel'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}),
+ 'parcel_number': ('django.db.models.fields.CharField', [], {'max_length': '6', 'null': 'True', 'blank': 'True'}),
+ 'public_domain': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'section': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}),
+ 'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ },
+ 'archaeological_operations.parcelowner': {
+ 'Meta': {'object_name': 'ParcelOwner'},
+ 'end_date': ('django.db.models.fields.DateField', [], {}),
+ 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}),
+ 'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ '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_archaeological_operations_parcelowner'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcel_owner'", 'to': "orm['ishtar_common.Person']"}),
+ 'parcel': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owners'", 'to': "orm['archaeological_operations.Parcel']"}),
+ 'start_date': ('django.db.models.fields.DateField', [], {})
+ },
+ 'archaeological_operations.period': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'Period'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}),
+ 'start_date': ('django.db.models.fields.IntegerField', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_operations.recordrelations': {
+ 'Meta': {'ordering': "('left_record', 'relation_type')", 'object_name': 'RecordRelations'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'left_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'right_relations'", 'to': "orm['archaeological_operations.Operation']"}),
+ 'relation_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.RelationType']"}),
+ 'right_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'left_relations'", 'to': "orm['archaeological_operations.Operation']"})
+ },
+ 'archaeological_operations.relationtype': {
+ 'Meta': {'ordering': "('order', 'label')", 'object_name': 'RelationType'},
+ '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'}),
+ 'inverse_relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.RelationType']", 'null': 'True', 'blank': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'symmetrical': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'tiny_label': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'archaeological_operations.remaintype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'},
+ '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'})
+ },
+ 'archaeological_operations.reportstate': {
+ 'Meta': {'ordering': "('order',)", 'object_name': 'ReportState'},
+ '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', [], {}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ '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.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.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.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.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'}),
+ 'salutation': ('django.db.models.fields.CharField', [], {'max_length': '200', '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.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.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 = ['archaeological_operations'] \ No newline at end of file
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index a855c3bda..228e9859e 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -66,8 +66,8 @@ class ReportState(GeneralType):
order = models.IntegerField(_(u"Order"))
class Meta:
- verbose_name = _(u"Report state")
- verbose_name_plural = _(u"Report states")
+ verbose_name = _(u"Type of report state")
+ verbose_name_plural = _(u"Types of report state")
ordering = ('order',)
def __unicode__(self):
@@ -174,6 +174,7 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
'start_date', 'excavation_end_date']
TABLE_COLS.insert(4, 'associated_file_short_label')
IMAGE_PREFIX = 'operations/'
+ SLUG = 'operation'
creation_date = models.DateField(_(u"Creation date"),
default=datetime.date.today)
end_date = models.DateField(_(u"Closing date"), null=True, blank=True)
@@ -194,7 +195,7 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
on_delete=models.SET_NULL,
related_name='operation_responsability')
year = models.IntegerField(_(u"Year"), null=True, blank=True)
- operation_code = models.IntegerField(_(u"Operation code"), null=True,
+ operation_code = models.IntegerField(_(u"Numeric reference"), null=True,
blank=True)
associated_file = models.ForeignKey(
'archaeological_files.File',
@@ -269,6 +270,16 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
_(u"Record quality"), max_length=2, null=True, blank=True,
choices=QUALITY)
abstract = models.TextField(_(u"Abstract"), null=True, blank=True)
+ documentation_deadline = models.DateField(
+ _(u"Deadline for submission of the documentation"), blank=True,
+ null=True)
+ documentation_received = models.NullBooleanField(
+ _(u"Documentation received"), blank=True, null=True)
+ finds_deadline = models.DateField(
+ _(u"Deadline for submission of the finds"), blank=True, null=True)
+ finds_received = models.NullBooleanField(
+ _(u"Finds received"), blank=True, null=True)
+
point = models.PointField(_(u"Point"), blank=True, null=True)
multi_polygon = models.MultiPolygonField(_(u"Multi polygon"), blank=True,
null=True)
@@ -288,8 +299,12 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
ordering = ('cached_label',)
@classmethod
- def get_owns(cls, user):
- owns = super(Operation, cls).get_owns(user)
+ def get_owns(cls, user, menu_filtr=None):
+ replace_query = {}
+ if menu_filtr:
+ replace_query = {'associated_file': menu_filtr}
+ owns = super(Operation, cls).get_owns(
+ user, replace_query=replace_query)
# owns = owns.annotate(null_count=Count('operation_code'))
# return owns.order_by("common_name", "-year", "operation_code")
return sorted(owns, key=lambda x: x.cached_label)
@@ -463,6 +478,7 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
@property
def nb_parcels(self):
+ _(u"Number of parcels")
nb = 0
if self.associated_file:
nb = self.associated_file.parcels.count()
@@ -513,7 +529,7 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
for res in q.all():
nbs.append((unicode(res['unit__label']),
self.context_record.filter(unit=res['unit']).count()))
- return nbs
+ return list(set(nbs))
@property
def nb_context_records_by_periods(self, update=False):
@@ -538,7 +554,8 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
def _nb_finds(self):
from archaeological_finds.models import Find
q = Find.objects.filter(
- base_finds__context_record__operation=self)
+ base_finds__context_record__operation=self,
+ upstream_treatment_id__isnull=True).distinct()
return q.count()
@property
@@ -549,13 +566,16 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
from archaeological_finds.models import Find
nbs = []
q = Find.objects.filter(
- base_finds__context_record__operation=self).values(
+ upstream_treatment_id__isnull=True,
+ base_finds__context_record__operation=self).distinct().values(
'material_types__pk', 'material_types__label').distinct().order_by(
'material_types__label')
for res in q.all():
nbs.append(
(unicode(res['material_types__label']),
Find.objects.filter(
+ base_finds__context_record__operation=self,
+ upstream_treatment_id__isnull=True,
material_types__pk=res['material_types__pk']).count()))
return nbs
@@ -577,6 +597,8 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
nbs.append(
(label,
Find.objects.filter(
+ base_finds__context_record__operation=self,
+ upstream_treatment_id__isnull=True,
object_types=res['object_types']).count()))
return nbs
@@ -595,6 +617,8 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
nbs.append(
(unicode(res['datings__period__label']),
Find.objects.filter(
+ base_finds__context_record__operation=self,
+ upstream_treatment_id__isnull=True,
datings__period=res['datings__period']).count()))
return nbs
@@ -626,6 +650,7 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
self.source,
ContextRecordSource.objects.filter(context_record__operation=self),
FindSource.objects.filter(
+ find__upstream_treatment_id__isnull=True,
find__base_finds__context_record__operation=self)]
for q in qs:
for res in q.values('source_type').distinct():
diff --git a/archaeological_operations/templates/ishtar/sheet_operation.html b/archaeological_operations/templates/ishtar/sheet_operation.html
index ba63dfa1c..6b2030f5e 100644
--- a/archaeological_operations/templates/ishtar/sheet_operation.html
+++ b/archaeological_operations/templates/ishtar/sheet_operation.html
@@ -4,7 +4,7 @@
{% block head_title %}{% trans "Operation" %}{% endblock %}
{% block content %}
-{% window_nav item window_id 'show-operation' 'operation_modify' 'show-historized-operation' 'revert-operation' previous next %}
+{% window_nav item window_id 'show-operation' 'operation_modify' 'show-historized-operation' 'revert-operation' previous next 1 %}
{% if item.image %}
<a href='{{item.image.url}}' rel="prettyPhoto" title="{{item.label}}" class='photo'><img src='{{item.thumbnail.url}}'/></a>
@@ -21,7 +21,7 @@
<ul class='form-flex'>
{% field_li "Name" item.common_name %}
{% field_li "Year" item.year %}
-{% field_li "Numerical reference" item.operation_code %}
+{% field_li "Numeric reference" item.operation_code %}
{% field_li "Code patriarche" item.code_patriarche 'OA' %}
{% field_li "Old code" item.old_code %}
<li><label>{%trans "Last modification date:"%}</label> <span class='value'>{% if item.history_date %}{{ item.history_date }}{% else %}{{ item.history.all.0.history_date }}{% endif %}</span></li> <!-- date = now -->
@@ -34,8 +34,6 @@
<li><label>{%trans "State:"%}</label> <span class='value'>{% if item.is_active %}{%trans "Active file"%}</span></p>
{% else %}{%trans "Closed operation"%}</span></li> {% endif %}
{% if item.closing.date %}<li><label>{%trans "Closing date:"%}</label> <span class='value'>{{ item.closing.date }} <strong>{%trans "by" %}</strong> {{ item.closing.user }}</span></li>{% endif %}
-{% field_li "Report delivery date" item.report_delivery_date %}
-{% field_li "Report processing" item.report_processing %}
{% field_li "Type" item.operation_type %}
{% if item.surface %}<li><label>{%trans "Surface:"%}</label> <span class='value'>{{ item.surface }} m<sup>2</sup> ({{ item.surface_ha }} ha)</span></li>{% endif %}
{% if item.cost %}<li><label>{%trans "Cost:"%}</label> <span class='value'>{{ item.cost }} &euro;{% if item.cost_by_m2 %}, ({{ item.cost_by_m2 }} &euro;/m<sup>2</sup>){%endif%}</span></li>{%endif%}
@@ -44,6 +42,12 @@
{% field_li_multiple "Periods" item.periods %}
{% if item.QUALITY_DICT %}{% field_li "Record quality" item.record_quality|from_dict:item.QUALITY_DICT %}{% endif %}
{% if item.history_object and item.history_object.QUALITY_DICT %}{% field_li "Record quality" item.record_quality|from_dict:item.history_object.QUALITY_DICT %}{% endif %}
+{% field_li "Report delivery date" item.report_delivery_date %}
+{% field_li "Report processing" item.report_processing %}
+{% field_li "Deadline for submission of the documentation" item.documentation_deadline %}
+{% field_li "Documentation received" item.documentation_received %}
+{% field_li "Deadline for submission of the finds" item.finds_deadline %}
+{% field_li "Finds received" item.finds_received %}
{% field_li_detail "Associated file" item.associated_file %}
{% field_li "Responsible for town planning service" item.associated_file.responsible_town_planning_service.full_address %}
{% if item.associated_file.town_planning_service %}
@@ -131,6 +135,11 @@
{% field_li "Number of indexed administrative acts" item.nb_indexed_acts %}
</ul>
+<h4>{% trans "Parcels" %}</h4>
+<ul class='form-flex'>
+{% field_li "Number of parcels" item.nb_parcels %}
+</ul>
+
<h4>{% trans "Context records" %}</h4>
<ul class='form-flex'>
{% field_li "Number of context records" item.nb_context_records %}
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py
index a8d627dd5..dd294550e 100644
--- a/archaeological_operations/tests.py
+++ b/archaeological_operations/tests.py
@@ -494,7 +494,7 @@ class OperationInitTest(object):
self.operations.append(create_operation(user, orga))
return self.operations
- def get_default_operation(self):
+ def get_default_operation(self, force=False):
return self.create_operation()[0]
def tearDown(self):
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py
index 013e329a1..6c7fdbd98 100644
--- a/archaeological_operations/views.py
+++ b/archaeological_operations/views.py
@@ -138,9 +138,14 @@ def get_available_operation_code(request, year=None):
get_operation = get_item(
models.Operation, 'get_operation', 'operation',
- bool_fields=['end_date__isnull', 'virtual_operation'],
+ bool_fields=['end_date__isnull', 'virtual_operation',
+ 'documentation_received', 'finds_received'],
dated_fields=['start_date__lte', 'start_date__gte',
- 'excavation_end_date__lte', 'excavation_end_date__gte'],
+ 'excavation_end_date__lte', 'excavation_end_date__gte',
+ 'documentation_deadline__lte', 'documentation_deadline__gte',
+ 'finds_deadline__lte', 'finds_deadline__gte',
+ ],
+ relative_session_names=[('file', 'associated_file__pk')],
extra_request_keys={
'common_name': 'common_name__icontains',
'comment': 'comment__icontains',
@@ -167,6 +172,10 @@ get_operation = get_item(
'history_modifier__ishtaruser__person__pk',
'archaeological_sites':
'archaeological_sites__pk',
+ 'documentation_deadline_before': 'documentation_deadline__lte',
+ 'documentation_deadline_after': 'documentation_deadline__gte',
+ 'finds_deadline_before': 'finds_deadline__lte',
+ 'finds_deadline_after': 'finds_deadline__gte',
},
)
show_operation = show_item(models.Operation, 'operation')
@@ -216,7 +225,7 @@ get_administrativeactop = get_item(
'operation__associated_file__parcels__public_domain'),
},
reversed_bool_fields=['index__isnull'],
- relative_session_names={'operation': 'operation__pk'})
+ relative_session_names=[('operation', 'operation__pk')])
get_administrativeact = get_item(
models.AdministrativeAct,
diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py
index ee8acd9c1..572a25ca0 100644
--- a/archaeological_operations/wizards.py
+++ b/archaeological_operations/wizards.py
@@ -287,6 +287,7 @@ class OperationDeletionWizard(DeletionWizard):
class OperationSourceWizard(SourceWizard):
model = models.OperationSource
+ wizard_done_window = reverse_lazy('show-operationsource')
def get_form_initial(self, step, data=None):
initial = super(OperationSourceWizard, self).get_form_initial(step)
diff --git a/ishtar_common/context_processors.py b/ishtar_common/context_processors.py
index f8a4a0f95..bb12a401d 100644
--- a/ishtar_common/context_processors.py
+++ b/ishtar_common/context_processors.py
@@ -19,29 +19,11 @@
from django.conf import settings
from django.contrib.sites.models import Site
-from django.utils.translation import ugettext_lazy as _
from ishtar_common.version import VERSION
-from ishtar_common.utils import shortify
from menus import Menu
-from ishtar_common.models import get_current_profile
-from archaeological_operations.models import Operation
-from archaeological_files.models import File
-from archaeological_context_records.models import ContextRecord
-from archaeological_finds.models import Find
-
-profile = get_current_profile()
-CURRENT_ITEMS = []
-if profile.files:
- CURRENT_ITEMS.append((_(u"Archaeological file"), File))
-CURRENT_ITEMS.append((_(u"Operation"), Operation))
-if profile.context_record:
- CURRENT_ITEMS.append((_(u"Context record"), ContextRecord))
-if profile.find:
- CURRENT_ITEMS.append((_(u"Find"), Find))
-
def get_base_context(request):
dct = {'URL_PATH': settings.URL_PATH}
@@ -74,21 +56,4 @@ def get_base_context(request):
dct['VERSION'] = u".".join([unicode(n) for n in VERSION])
if settings.EXTRA_VERSION:
dct['VERSION'] += unicode(settings.EXTRA_VERSION)
- dct['current_menu'] = []
- for lbl, model in CURRENT_ITEMS:
- model_name = model.__name__.lower()
- cls = ''
- current = model_name in request.session and request.session[model_name]
- items = []
- for item in model.get_owns(request.user):
- pk = unicode(item.pk)
- if item.IS_BASKET:
- pk = "basket-" + pk
- selected = pk == current
- if selected:
- cls = item.get_short_menu_class()
- items.append((pk, shortify(unicode(item), 60),
- selected, item.get_short_menu_class()))
- if items:
- dct['current_menu'].append((lbl, model_name, cls, items))
return dct
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 560a1abb3..e288745e2 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -107,6 +107,16 @@ class NewImportForm(forms.ModelForm):
fields = ('importer_type', 'imported_file', 'imported_images',
'conservative_import', 'encoding', 'skip_lines')
+ def clean(self):
+ data = self.cleaned_data
+ if data.get('conservative_import', None) \
+ and data.get('importer_type') \
+ and not data.get('importer_type').unicity_keys:
+ raise forms.ValidationError(
+ _(u"This import type have no unicity type defined. "
+ u"Conservative import is not possible."))
+ return data
+
def save(self, user, commit=True):
self.instance.user = user
return super(NewImportForm, self).save(commit)
diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot
index 771e1f2f2..7d64d9d63 100644
--- a/ishtar_common/locale/django.pot
+++ b/ishtar_common/locale/django.pot
@@ -20,22 +20,6 @@ msgstr ""
msgid "Related item"
msgstr ""
-#: context_processors.py:38
-msgid "Archaeological file"
-msgstr ""
-
-#: context_processors.py:39 models.py:1512
-msgid "Operation"
-msgstr ""
-
-#: context_processors.py:41
-msgid "Context record"
-msgstr ""
-
-#: context_processors.py:43
-msgid "Find"
-msgstr ""
-
#: data_importer.py:182
#, python-format
msgid "\"%(value)s\" is too long. The max length is %(length)d characters."
@@ -147,7 +131,7 @@ msgstr ""
msgid "Enter a valid name consisting of letters, spaces and hyphens."
msgstr ""
-#: forms.py:71 forms_common.py:510
+#: forms.py:71 forms_common.py:520
msgid "Confirm"
msgstr ""
@@ -171,12 +155,12 @@ msgstr ""
msgid "Add a new item"
msgstr ""
-#: forms.py:245 models.py:1276
+#: forms.py:245 models.py:1278
msgid "Template"
msgstr ""
-#: forms_common.py:40 forms_common.py:58 forms_common.py:171
-#: forms_common.py:298 models.py:1342 models.py:2655
+#: forms_common.py:40 forms_common.py:58 forms_common.py:181
+#: forms_common.py:308 models.py:1344 models.py:2658
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
@@ -192,70 +176,76 @@ msgid ""
"french town Saint-Denis in the Seine-Saint-Denis department.</p>"
msgstr ""
-#: forms_common.py:67 forms_common.py:747 ishtar_menu.py:47 models.py:1510
-#: models.py:2324 models.py:2478 models.py:2535
+#: forms_common.py:67 forms_common.py:757 ishtar_menu.py:47 models.py:1512
+#: models.py:2326 models.py:2480 models.py:2538
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr ""
-#: forms_common.py:159 forms_common.py:236 forms_common.py:343
-#: ishtar_menu.py:71 models.py:1511 models.py:2229
+#: forms_common.py:116
+msgid ""
+"This import type have no unicity type defined. Conservative import is not "
+"possible."
+msgstr ""
+
+#: forms_common.py:169 forms_common.py:246 forms_common.py:353
+#: ishtar_menu.py:71 models.py:1513 models.py:2231
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr ""
-#: forms_common.py:162 forms_common.py:199 forms_common.py:231
-#: forms_common.py:268 forms_common.py:338 models.py:943 models.py:1275
-#: models.py:1556 models.py:1774 models.py:2223 models.py:2310 models.py:2641
+#: forms_common.py:172 forms_common.py:209 forms_common.py:241
+#: forms_common.py:278 forms_common.py:348 models.py:945 models.py:1277
+#: models.py:1558 models.py:1776 models.py:2225 models.py:2312 models.py:2644
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr ""
-#: forms_common.py:163 models.py:1497 models.py:1905
+#: forms_common.py:173 models.py:1499 models.py:1907
msgid "Organization type"
msgstr ""
-#: forms_common.py:165 forms_common.py:292 models.py:1337
+#: forms_common.py:175 forms_common.py:302 models.py:1339
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr ""
-#: forms_common.py:167 forms_common.py:295 models.py:1338
+#: forms_common.py:177 forms_common.py:305 models.py:1340
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr ""
-#: forms_common.py:169 forms_common.py:296 models.py:1340
+#: forms_common.py:179 forms_common.py:306 models.py:1342
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr ""
-#: forms_common.py:172 forms_common.py:299 models.py:1343
+#: forms_common.py:182 forms_common.py:309 models.py:1345
msgid "Country"
msgstr ""
-#: forms_common.py:174 forms_common.py:233 forms_common.py:272
-#: forms_common.py:340 forms_common.py:464 models.py:1370
+#: forms_common.py:184 forms_common.py:243 forms_common.py:282
+#: forms_common.py:350 forms_common.py:474 models.py:1372
msgid "Email"
msgstr ""
-#: forms_common.py:175 forms_common.py:275 models.py:1355
+#: forms_common.py:185 forms_common.py:285 models.py:1357
#: templates/ishtar/sheet_organization.html:14
#: templates/ishtar/sheet_person.html:19
#: templates/ishtar/wizard/wizard_person.html:17
msgid "Phone"
msgstr ""
-#: forms_common.py:176 forms_common.py:284 models.py:1367
+#: forms_common.py:186 forms_common.py:294 models.py:1369
#: templates/ishtar/sheet_organization.html:15
#: templates/ishtar/sheet_person.html:37
#: templates/ishtar/wizard/wizard_person.html:35
msgid "Mobile phone"
msgstr ""
-#: forms_common.py:200 forms_common.py:234 forms_common.py:341 models.py:1933
-#: models.py:2225 models.py:2576 templates/sheet_ope.html:85
+#: forms_common.py:210 forms_common.py:244 forms_common.py:351 models.py:1935
+#: models.py:2227 models.py:2579 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,225 +253,225 @@ msgstr ""
msgid "Type"
msgstr ""
-#: forms_common.py:209 views.py:137
+#: forms_common.py:219 views.py:137
msgid "Organization search"
msgstr ""
-#: forms_common.py:232 forms_common.py:266 forms_common.py:339 models.py:2308
+#: forms_common.py:242 forms_common.py:276 forms_common.py:349 models.py:2310
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr ""
-#: forms_common.py:248 forms_common.py:326 views.py:102
+#: forms_common.py:258 forms_common.py:336 views.py:102
msgid "Person search"
msgstr ""
-#: forms_common.py:260 templates/ishtar/sheet_person.html:7
+#: forms_common.py:270 templates/ishtar/sheet_person.html:7
#: templates/ishtar/wizard/wizard_person.html:6
msgid "Identity"
msgstr ""
-#: forms_common.py:263 forms_common.py:665 forms_common.py:714 models.py:1906
-#: models.py:2302 models.py:2304 models.py:2573 templates/sheet_ope.html:104
+#: forms_common.py:273 forms_common.py:675 forms_common.py:724 models.py:1908
+#: models.py:2304 models.py:2306 models.py:2576 templates/sheet_ope.html:104
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr ""
-#: forms_common.py:264 models.py:2306
+#: forms_common.py:274 models.py:2308
msgid "Salutation"
msgstr ""
-#: forms_common.py:270 models.py:2312
+#: forms_common.py:280 models.py:2314
msgid "Raw name"
msgstr ""
-#: forms_common.py:273 models.py:1356
+#: forms_common.py:283 models.py:1358
msgid "Phone description"
msgstr ""
-#: forms_common.py:276 models.py:1358 models.py:1360
+#: forms_common.py:286 models.py:1360 models.py:1362
msgid "Phone description 2"
msgstr ""
-#: forms_common.py:278
+#: forms_common.py:288
msgid "Phone 2"
msgstr ""
-#: forms_common.py:280 models.py:1364
+#: forms_common.py:290 models.py:1366
msgid "Phone description 3"
msgstr ""
-#: forms_common.py:282 models.py:1362
+#: forms_common.py:292 models.py:1364
msgid "Phone 3"
msgstr ""
-#: forms_common.py:287
+#: forms_common.py:297
msgid "Current organization"
msgstr ""
-#: forms_common.py:301 models.py:1345
+#: forms_common.py:311 models.py:1347
msgid "Other address: address"
msgstr ""
-#: forms_common.py:304 models.py:1348
+#: forms_common.py:314 models.py:1350
msgid "Other address: address complement"
msgstr ""
-#: forms_common.py:306 models.py:1349
+#: forms_common.py:316 models.py:1351
msgid "Other address: postal code"
msgstr ""
-#: forms_common.py:308 models.py:1351
+#: forms_common.py:318 models.py:1353
msgid "Other address: town"
msgstr ""
-#: forms_common.py:310 models.py:1353
+#: forms_common.py:320 models.py:1355
msgid "Other address: country"
msgstr ""
-#: forms_common.py:322
+#: forms_common.py:332
msgid "Already has an account"
msgstr ""
-#: forms_common.py:337
+#: forms_common.py:347
msgid "Username"
msgstr ""
-#: forms_common.py:355
+#: forms_common.py:365
msgid "Account search"
msgstr ""
-#: forms_common.py:402 forms_common.py:442 forms_common.py:446 models.py:2277
+#: forms_common.py:412 forms_common.py:452 forms_common.py:456 models.py:2279
msgid "Person type"
msgstr ""
-#: forms_common.py:458 forms_common.py:463 ishtar_menu.py:32
+#: forms_common.py:468 forms_common.py:473 ishtar_menu.py:32
msgid "Account"
msgstr ""
-#: forms_common.py:467 wizards.py:1192
+#: forms_common.py:477 wizards.py:1192
msgid "New password"
msgstr ""
-#: forms_common.py:470
+#: forms_common.py:480
msgid "New password (confirmation)"
msgstr ""
-#: forms_common.py:491
+#: forms_common.py:501
msgid "Your password and confirmation password do not match."
msgstr ""
-#: forms_common.py:496
+#: forms_common.py:506
msgid "You must provide a correct password."
msgstr ""
-#: forms_common.py:504
+#: forms_common.py:514
msgid "This username already exists."
msgstr ""
-#: forms_common.py:511
+#: forms_common.py:521
msgid "Send the new password by email?"
msgstr ""
-#: forms_common.py:520 forms_common.py:533 models.py:2656
+#: forms_common.py:530 forms_common.py:543 models.py:2659
msgid "Towns"
msgstr ""
-#: forms_common.py:530
+#: forms_common.py:540
msgid "There are identical towns."
msgstr ""
-#: forms_common.py:614
+#: forms_common.py:624
msgid "Only one choice can be checked."
msgstr ""
-#: forms_common.py:662
+#: forms_common.py:672
msgid "Documentation informations"
msgstr ""
-#: forms_common.py:667 forms_common.py:715 models.py:1907 models.py:2556
+#: forms_common.py:677 forms_common.py:725 models.py:1909 models.py:2559
msgid "Source type"
msgstr ""
-#: forms_common.py:669 forms_common.py:716 templates/sheet_ope.html:84
+#: forms_common.py:679 forms_common.py:726 templates/sheet_ope.html:84
msgid "Reference"
msgstr ""
-#: forms_common.py:672 forms_common.py:717
+#: forms_common.py:682 forms_common.py:727
msgid "Internal reference"
msgstr ""
-#: forms_common.py:675 models.py:2587
+#: forms_common.py:685 models.py:2590
msgid "Numerical ressource (web address)"
msgstr ""
-#: forms_common.py:676 models.py:2589
+#: forms_common.py:686 models.py:2592
msgid "Receipt date"
msgstr ""
-#: forms_common.py:678 models.py:2060 models.py:2591
+#: forms_common.py:688 models.py:2062 models.py:2594
msgid "Creation date"
msgstr ""
-#: forms_common.py:681 models.py:2594
+#: forms_common.py:691 models.py:2597
msgid "Receipt date in documentation"
msgstr ""
-#: forms_common.py:683 forms_common.py:719 models.py:287 models.py:546
-#: models.py:1801 models.py:2316 models.py:2601
+#: forms_common.py:693 forms_common.py:729 models.py:289 models.py:548
+#: models.py:1803 models.py:2318 models.py:2604
msgid "Comment"
msgstr ""
-#: forms_common.py:685 forms_common.py:718 models.py:945 models.py:1560
-#: models.py:1733 models.py:1775 models.py:2600 templates/sheet_ope.html:128
+#: forms_common.py:695 forms_common.py:728 models.py:947 models.py:1562
+#: models.py:1735 models.py:1777 models.py:2603 templates/sheet_ope.html:128
msgid "Description"
msgstr ""
-#: forms_common.py:688 models.py:2602
+#: forms_common.py:698 models.py:2605
msgid "Additional information"
msgstr ""
-#: forms_common.py:690 forms_common.py:722 models.py:2604
+#: forms_common.py:700 forms_common.py:732 models.py:2607
msgid "Has a duplicate"
msgstr ""
-#: forms_common.py:693
+#: forms_common.py:703
msgid "Image"
msgstr ""
-#: forms_common.py:694
+#: forms_common.py:704
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
"p>"
msgstr ""
-#: forms_common.py:711 forms_common.py:740 forms_common.py:774 models.py:2540
+#: forms_common.py:721 forms_common.py:750 forms_common.py:784 models.py:2543
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr ""
-#: forms_common.py:721
+#: forms_common.py:731
msgid "Additional informations"
msgstr ""
-#: forms_common.py:732
+#: forms_common.py:742
msgid "Would you like to delete this documentation?"
msgstr ""
-#: forms_common.py:748 models.py:1908 models.py:2530 models.py:2537
+#: forms_common.py:758 models.py:1910 models.py:2533 models.py:2540
msgid "Author type"
msgstr ""
-#: forms_common.py:767
+#: forms_common.py:777
msgid "Author selection"
msgstr ""
-#: forms_common.py:781
+#: forms_common.py:791
msgid "There are identical authors."
msgstr ""
-#: forms_common.py:785 models.py:2541 models.py:2583
+#: forms_common.py:795 models.py:2544 models.py:2586
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
@@ -499,7 +489,7 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:39 models.py:1071 views.py:1239
+#: ishtar_menu.py:39 models.py:1073 views.py:1365
msgid "Global variables"
msgstr ""
@@ -523,20 +513,20 @@ msgstr ""
msgid "Merge"
msgstr ""
-#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2097 widgets.py:110
+#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2099 widgets.py:110
#: templates/ishtar/form_delete.html:11
msgid "Delete"
msgstr ""
-#: ishtar_menu.py:101 models.py:2071
+#: ishtar_menu.py:101 models.py:2073
msgid "Imports"
msgstr ""
-#: ishtar_menu.py:104 views.py:1247
+#: ishtar_menu.py:104 views.py:1373
msgid "New import"
msgstr ""
-#: ishtar_menu.py:108 views.py:1261
+#: ishtar_menu.py:108 views.py:1387
msgid "Current imports"
msgstr ""
@@ -556,200 +546,200 @@ msgstr ""
msgid "This item already exists."
msgstr ""
-#: models.py:283 models.py:545 models.py:1310 models.py:1322
+#: models.py:285 models.py:547 models.py:1312 models.py:1324
msgid "Label"
msgstr ""
-#: models.py:285
+#: models.py:287
msgid "Textual ID"
msgstr ""
-#: models.py:288 models.py:548 models.py:1279
+#: models.py:290 models.py:550 models.py:1281
msgid "Available"
msgstr ""
-#: models.py:567 models.py:1847
+#: models.py:569 models.py:1849
msgid "Key"
msgstr ""
-#: models.py:573
+#: models.py:575
msgid "Specific key to an import"
msgstr ""
-#: models.py:664
+#: models.py:666
msgid "Last editor"
msgstr ""
-#: models.py:667
+#: models.py:669
msgid "Creator"
msgstr ""
-#: models.py:807 models.py:2667
+#: models.py:809 models.py:2670
msgid "Order"
msgstr ""
-#: models.py:808
+#: models.py:810
msgid "Symmetrical"
msgstr ""
-#: models.py:809
+#: models.py:811
msgid "Tiny label"
msgstr ""
-#: models.py:823
+#: models.py:825
msgid "Cannot have symmetrical and an inverse_relation"
msgstr ""
-#: models.py:937
+#: models.py:939
msgid "Euro"
msgstr ""
-#: models.py:938
+#: models.py:940
msgid "US dollar"
msgstr ""
-#: models.py:944 models.py:1558
+#: models.py:946 models.py:1560
msgid "Slug"
msgstr ""
-#: models.py:946
+#: models.py:948
msgid "Files module"
msgstr ""
-#: models.py:947
+#: models.py:949
msgid "Context records module"
msgstr ""
-#: models.py:949
+#: models.py:951
msgid "Finds module"
msgstr ""
-#: models.py:950
+#: models.py:952
msgid "Need context records module"
msgstr ""
-#: models.py:952
+#: models.py:954
msgid "Warehouses module"
msgstr ""
-#: models.py:953
+#: models.py:955
msgid "Need finds module"
msgstr ""
-#: models.py:955
+#: models.py:957
msgid "Home page"
msgstr ""
-#: models.py:956
+#: models.py:958
#, python-brace-format
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
"markdown syntax. {random_image} can be used to display a random image."
msgstr ""
-#: models.py:960
+#: models.py:962
msgid "File external id"
msgstr ""
-#: models.py:962
+#: models.py:964
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:967
+#: models.py:969
msgid "Parcel external id"
msgstr ""
-#: models.py:970
+#: models.py:972
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:975
+#: models.py:977
msgid "Context record external id"
msgstr ""
-#: models.py:977
+#: models.py:979
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:982
+#: models.py:984
msgid "Base find external id"
msgstr ""
-#: models.py:984
+#: models.py:986
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:989
+#: models.py:991
msgid "Find external id"
msgstr ""
-#: models.py:991
+#: models.py:993
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:996
+#: models.py:998
msgid "Raw name for person"
msgstr ""
-#: models.py:998
+#: models.py:1000
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:1002
+#: models.py:1004
msgid "Current active"
msgstr ""
-#: models.py:1003
+#: models.py:1005
msgid "Currency"
msgstr ""
-#: models.py:1007
+#: models.py:1009
msgid "Ishtar site profile"
msgstr ""
-#: models.py:1008
+#: models.py:1010
msgid "Ishtar site profiles"
msgstr ""
-#: models.py:1064
+#: models.py:1066
msgid "Variable name"
msgstr ""
-#: models.py:1065
+#: models.py:1067
msgid "Description of the variable"
msgstr ""
-#: models.py:1067 models.py:1848
+#: models.py:1069 models.py:1850
msgid "Value"
msgstr ""
-#: models.py:1070
+#: models.py:1072
msgid "Global variable"
msgstr ""
-#: models.py:1180 models.py:1210
+#: models.py:1182 models.py:1212
msgid "Total"
msgstr ""
-#: models.py:1187 models.py:1311 models.py:1323
+#: models.py:1189 models.py:1313 models.py:1325
#: templates/ishtar/sheet_person.html:22
#: templates/ishtar/dashboards/dashboard_main_detail.html:141
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
@@ -757,589 +747,593 @@ msgstr ""
msgid "Number"
msgstr ""
-#: models.py:1274
+#: models.py:1276
msgid "Administrative Act"
msgstr ""
-#: models.py:1278
+#: models.py:1280
msgid "Associated object"
msgstr ""
-#: models.py:1282
+#: models.py:1284
msgid "Document template"
msgstr ""
-#: models.py:1283
+#: models.py:1285
msgid "Document templates"
msgstr ""
-#: models.py:1314 models.py:1324 models.py:2055
+#: models.py:1316 models.py:1326 models.py:2057
msgid "State"
msgstr ""
-#: models.py:1328 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1330 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr ""
-#: models.py:1329
+#: models.py:1331
msgid "Departments"
msgstr ""
-#: models.py:1366
+#: models.py:1368
msgid "Raw phone"
msgstr ""
-#: models.py:1372
+#: models.py:1374
msgid "Alternative address is prefered"
msgstr ""
-#: models.py:1411
+#: models.py:1413
msgid "Tel: "
msgstr ""
-#: models.py:1415
+#: models.py:1417
msgid "Mobile: "
msgstr ""
-#: models.py:1419
+#: models.py:1421
msgid "Email: "
msgstr ""
-#: models.py:1424
+#: models.py:1426
msgid "Merge key"
msgstr ""
-#: models.py:1498
+#: models.py:1500
msgid "Organization types"
msgstr ""
-#: models.py:1514
+#: models.py:1514 views.py:211
+msgid "Operation"
+msgstr ""
+
+#: models.py:1516
msgid "Archaeological site"
msgstr ""
-#: models.py:1515
+#: models.py:1517
msgid "Parcels"
msgstr ""
-#: models.py:1517
+#: models.py:1519
msgid "Operation source"
msgstr ""
-#: models.py:1520 views.py:1064 views.py:1115
+#: models.py:1522 views.py:1190 views.py:1241
msgid "Archaeological files"
msgstr ""
-#: models.py:1522 views.py:1067 views.py:1123
+#: models.py:1524 views.py:1193 views.py:1249
msgid "Context records"
msgstr ""
-#: models.py:1524
+#: models.py:1526
msgid "Context record relations"
msgstr ""
-#: models.py:1526 views.py:1069 views.py:1126
+#: models.py:1528 views.py:1195 views.py:1252
msgid "Finds"
msgstr ""
-#: models.py:1562 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1564 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr ""
-#: models.py:1564
+#: models.py:1566
msgid "Associated model"
msgstr ""
-#: models.py:1567
+#: models.py:1569
msgid "Is template"
msgstr ""
-#: models.py:1568
+#: models.py:1570
msgid "Unicity keys (separator \";\")"
msgstr ""
-#: models.py:1572
+#: models.py:1574
msgid "Importer - Type"
msgstr ""
-#: models.py:1573
+#: models.py:1575
msgid "Importer - Types"
msgstr ""
-#: models.py:1663
+#: models.py:1665
msgid "Importer - Default"
msgstr ""
-#: models.py:1664
+#: models.py:1666
msgid "Importer - Defaults"
msgstr ""
-#: models.py:1699
+#: models.py:1701
msgid "Importer - Default value"
msgstr ""
-#: models.py:1700
+#: models.py:1702
msgid "Importer - Default values"
msgstr ""
-#: models.py:1732
+#: models.py:1734
msgid "Column number"
msgstr ""
-#: models.py:1735
+#: models.py:1737
msgid "Required"
msgstr ""
-#: models.py:1738
+#: models.py:1740
msgid "Importer - Column"
msgstr ""
-#: models.py:1739
+#: models.py:1741
msgid "Importer - Columns"
msgstr ""
-#: models.py:1759
+#: models.py:1761
msgid "Field name"
msgstr ""
-#: models.py:1761 models.py:1795
+#: models.py:1763 models.py:1797
msgid "Force creation of new items"
msgstr ""
-#: models.py:1763 models.py:1797
+#: models.py:1765 models.py:1799
msgid "Concatenate with existing"
msgstr ""
-#: models.py:1765 models.py:1799
+#: models.py:1767 models.py:1801
msgid "Concatenate character"
msgstr ""
-#: models.py:1769
+#: models.py:1771
msgid "Importer - Duplicate field"
msgstr ""
-#: models.py:1770
+#: models.py:1772
msgid "Importer - Duplicate fields"
msgstr ""
-#: models.py:1777
+#: models.py:1779
msgid "Regular expression"
msgstr ""
-#: models.py:1780
+#: models.py:1782
msgid "Importer - Regular expression"
msgstr ""
-#: models.py:1781
+#: models.py:1783
msgid "Importer - Regular expressions"
msgstr ""
-#: models.py:1804
+#: models.py:1806
msgid "Importer - Target"
msgstr ""
-#: models.py:1805
+#: models.py:1807
msgid "Importer - Targets"
msgstr ""
-#: models.py:1829 views.py:350
+#: models.py:1831 views.py:476
msgid "True"
msgstr ""
-#: models.py:1830 views.py:352
+#: models.py:1832 views.py:478
msgid "False"
msgstr ""
-#: models.py:1849
+#: models.py:1851
msgid "Is set"
msgstr ""
-#: models.py:1856
+#: models.py:1858
msgid "Importer - Target key"
msgstr ""
-#: models.py:1857
+#: models.py:1859
msgid "Importer - Targets keys"
msgstr ""
-#: models.py:1909 models.py:2568 models.py:2579
+#: models.py:1911 models.py:2571 models.py:2582
msgid "Format"
msgstr ""
-#: models.py:1910 models.py:2671
+#: models.py:1912 models.py:2674
msgid "Operation type"
msgstr ""
-#: models.py:1911
+#: models.py:1913
msgid "Period"
msgstr ""
-#: models.py:1912
+#: models.py:1914
msgid "Report state"
msgstr ""
-#: models.py:1913
+#: models.py:1915
msgid "Unit"
msgstr ""
-#: models.py:1914
+#: models.py:1916
msgid "Material"
msgstr ""
-#: models.py:1916
+#: models.py:1918
msgid "Conservatory state"
msgstr ""
-#: models.py:1917
+#: models.py:1919
msgid "Preservation type"
msgstr ""
-#: models.py:1918
+#: models.py:1920
msgid "Object type"
msgstr ""
-#: models.py:1920
+#: models.py:1922
msgid "Identification type"
msgstr ""
-#: models.py:1922
+#: models.py:1924
msgid "Context record relation type"
msgstr ""
-#: models.py:1923 models.py:2562
+#: models.py:1925 models.py:2565
msgid "Support type"
msgstr ""
-#: models.py:1929
+#: models.py:1931
msgid "Integer"
msgstr ""
-#: models.py:1930
+#: models.py:1932
msgid "Float"
msgstr ""
-#: models.py:1931
+#: models.py:1933
msgid "String"
msgstr ""
-#: models.py:1932 templates/sheet_ope.html:86
+#: models.py:1934 templates/sheet_ope.html:86
msgid "Date"
msgstr ""
-#: models.py:1934 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: models.py:1936 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
#: templates/ishtar/dashboards/dashboard_main_detail.html:126
msgid "Year"
msgstr ""
-#: models.py:1935
+#: models.py:1937
msgid "String to boolean"
msgstr ""
-#: models.py:1936
+#: models.py:1938
msgctxt "filesystem"
msgid "File"
msgstr ""
-#: models.py:1937
+#: models.py:1939
msgid "Unknow type"
msgstr ""
-#: models.py:1953
+#: models.py:1955
msgid "4 digit year. e.g.: \"2015\""
msgstr ""
-#: models.py:1954
+#: models.py:1956
msgid "4 digit year/month/day. e.g.: \"2015/02/04\""
msgstr ""
-#: models.py:1955
+#: models.py:1957
msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""
msgstr ""
-#: models.py:1965
+#: models.py:1967
msgid "Options"
msgstr ""
-#: models.py:1967
+#: models.py:1969
msgid "Split character(s)"
msgstr ""
-#: models.py:1971
+#: models.py:1973
msgid "Importer - Formater type"
msgstr ""
-#: models.py:1972
+#: models.py:1974
msgid "Importer - Formater types"
msgstr ""
-#: models.py:2019 templates/ishtar/dashboards/dashboard_main_detail.html:63
+#: models.py:2021 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr ""
-#: models.py:2020
+#: models.py:2022
msgid "Analyse in progress"
msgstr ""
-#: models.py:2021
+#: models.py:2023
msgid "Analysed"
msgstr ""
-#: models.py:2022
+#: models.py:2024
msgid "Import pending"
msgstr ""
-#: models.py:2023
+#: models.py:2025
msgid "Import in progress"
msgstr ""
-#: models.py:2024
+#: models.py:2026
msgid "Finished with errors"
msgstr ""
-#: models.py:2025
+#: models.py:2027
msgid "Finished"
msgstr ""
-#: models.py:2026
+#: models.py:2028
msgid "Archived"
msgstr ""
-#: models.py:2038
+#: models.py:2040
msgid "Imported file"
msgstr ""
-#: models.py:2041
+#: models.py:2043
msgid "Associated images (zip file)"
msgstr ""
-#: models.py:2043
+#: models.py:2045
msgid "Encoding"
msgstr ""
-#: models.py:2045
+#: models.py:2047
msgid "Skip lines"
msgstr ""
-#: models.py:2046 templates/ishtar/import_list.html:47
+#: models.py:2048 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr ""
-#: models.py:2049
+#: models.py:2051
msgid "Result file"
msgstr ""
-#: models.py:2052 templates/ishtar/import_list.html:53
+#: models.py:2054 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr ""
-#: models.py:2058
+#: models.py:2060
msgid "Conservative import"
msgstr ""
-#: models.py:2063
+#: models.py:2065
msgid "End date"
msgstr ""
-#: models.py:2065
+#: models.py:2067
msgid "Remaining seconds"
msgstr ""
-#: models.py:2070
+#: models.py:2072
msgid "Import"
msgstr ""
-#: models.py:2087
+#: models.py:2089
msgid "Analyse"
msgstr ""
-#: models.py:2089 models.py:2092
+#: models.py:2091 models.py:2094
msgid "Re-analyse"
msgstr ""
-#: models.py:2090
+#: models.py:2092
msgid "Launch import"
msgstr ""
-#: models.py:2093
+#: models.py:2095
msgid "Re-import"
msgstr ""
-#: models.py:2094
+#: models.py:2096
msgid "Archive"
msgstr ""
-#: models.py:2096
+#: models.py:2098
msgid "Unarchive"
msgstr ""
-#: models.py:2230
+#: models.py:2232
msgid "Organizations"
msgstr ""
-#: models.py:2232
+#: models.py:2234
msgid "Can view all Organizations"
msgstr ""
-#: models.py:2233
+#: models.py:2235
msgid "Can view own Organization"
msgstr ""
-#: models.py:2234
+#: models.py:2236
msgid "Can add own Organization"
msgstr ""
-#: models.py:2236
+#: models.py:2238
msgid "Can change own Organization"
msgstr ""
-#: models.py:2238
+#: models.py:2240
msgid "Can delete own Organization"
msgstr ""
-#: models.py:2273
+#: models.py:2275
msgid "Groups"
msgstr ""
-#: models.py:2278
+#: models.py:2280
msgid "Person types"
msgstr ""
-#: models.py:2284
+#: models.py:2286
msgid "Title type"
msgstr ""
-#: models.py:2285
+#: models.py:2287
msgid "Title types"
msgstr ""
-#: models.py:2292
+#: models.py:2294
msgid "Mr"
msgstr ""
-#: models.py:2293
+#: models.py:2295
msgid "Miss"
msgstr ""
-#: models.py:2294
+#: models.py:2296
msgid "Mr and Mrs"
msgstr ""
-#: models.py:2295
+#: models.py:2297
msgid "Mrs"
msgstr ""
-#: models.py:2296
+#: models.py:2298
msgid "Doctor"
msgstr ""
-#: models.py:2314
+#: models.py:2316
msgid "Contact type"
msgstr ""
-#: models.py:2317 models.py:2366
+#: models.py:2319 models.py:2368
msgid "Types"
msgstr ""
-#: models.py:2320
+#: models.py:2322
msgid "Is attached to"
msgstr ""
-#: models.py:2325
+#: models.py:2327
msgid "Persons"
msgstr ""
-#: models.py:2327
+#: models.py:2329
msgid "Can view all Persons"
msgstr ""
-#: models.py:2328
+#: models.py:2330
msgid "Can view own Person"
msgstr ""
-#: models.py:2329
+#: models.py:2331
msgid "Can add own Person"
msgstr ""
-#: models.py:2330
+#: models.py:2332
msgid "Can change own Person"
msgstr ""
-#: models.py:2331
+#: models.py:2333
msgid "Can delete own Person"
msgstr ""
-#: models.py:2482
+#: models.py:2484
msgid "Ishtar user"
msgstr ""
-#: models.py:2483
+#: models.py:2485
msgid "Ishtar users"
msgstr ""
-#: models.py:2525
+#: models.py:2528
msgid "To modify the password use the form in Auth > User"
msgstr ""
-#: models.py:2531
+#: models.py:2534
msgid "Author types"
msgstr ""
-#: models.py:2557
+#: models.py:2560
msgid "Source types"
msgstr ""
-#: models.py:2563
+#: models.py:2566
msgid "Support types"
msgstr ""
-#: models.py:2569
+#: models.py:2572
msgid "Formats"
msgstr ""
-#: models.py:2574
+#: models.py:2577
msgid "External ID"
msgstr ""
-#: models.py:2577
+#: models.py:2580
msgid "Support"
msgstr ""
-#: models.py:2581
+#: models.py:2584
msgid "Scale"
msgstr ""
-#: models.py:2595
+#: models.py:2598
msgid "Item number"
msgstr ""
-#: models.py:2596
+#: models.py:2599
msgid "Ref."
msgstr ""
-#: models.py:2599
+#: models.py:2602
msgid "Internal ref."
msgstr ""
-#: models.py:2642
+#: models.py:2645
msgid "Surface (m2)"
msgstr ""
-#: models.py:2643 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2646 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr ""
-#: models.py:2668
+#: models.py:2671
msgid "Is preventive"
msgstr ""
-#: models.py:2672
+#: models.py:2675
msgid "Operation types"
msgstr ""
-#: models.py:2701
+#: models.py:2704
msgid "Preventive"
msgstr ""
-#: models.py:2702
+#: models.py:2705
msgid "Research"
msgstr ""
@@ -1383,28 +1377,40 @@ msgstr ""
msgid "Account deletion"
msgstr ""
-#: views.py:977 views.py:1046
+#: views.py:210
+msgid "Archaeological file"
+msgstr ""
+
+#: views.py:213
+msgid "Context record"
+msgstr ""
+
+#: views.py:215
+msgid "Find"
+msgstr ""
+
+#: views.py:1103 views.py:1172
msgid "Operation not permitted."
msgstr ""
-#: views.py:979
+#: views.py:1105
#, python-format
msgid "New %s"
msgstr ""
-#: views.py:1065 views.py:1119
+#: views.py:1191 views.py:1245
msgid "Operations"
msgstr ""
-#: views.py:1308 templates/ishtar/import_list.html:43
+#: views.py:1434 templates/ishtar/import_list.html:43
msgid "Link unmatched items"
msgstr ""
-#: views.py:1323
+#: views.py:1449
msgid "Delete import"
msgstr ""
-#: views.py:1382 views.py:1398
+#: views.py:1508 views.py:1524
msgid "Corporation manager"
msgstr ""
@@ -1471,29 +1477,29 @@ msgstr ""
msgid "The %(app_name)s team"
msgstr ""
-#: templates/base.html:36
+#: templates/base.html:41
msgid "Logged in"
msgstr ""
-#: templates/base.html:37
+#: templates/base.html:42
msgid "Log out"
msgstr ""
-#: templates/base.html:38
+#: templates/base.html:43
msgid "Change password"
msgstr ""
-#: templates/base.html:40 templates/registration/activate.html:10
+#: templates/base.html:45 templates/registration/activate.html:10
#: templates/registration/login.html:8 templates/registration/login.html:10
#: templates/registration/password_reset_complete.html:8
msgid "Log in"
msgstr ""
-#: templates/base.html:46
+#: templates/base.html:51
msgid "Lang"
msgstr ""
-#: templates/base.html:46 templates/base.html.py:93 templates/welcome.html:8
+#: templates/base.html:51 templates/base.html.py:75 templates/welcome.html:8
#: templates/welcome.html.py:9 templates/welcome.html:10
#: templates/welcome.html.py:11 templates/ishtar/manage_basket.html:4
#: templates/ishtar/blocks/window_field.html:1
@@ -1503,27 +1509,23 @@ msgstr ""
msgid ":"
msgstr ""
-#: templates/base.html:71
-msgid "Default selected items"
-msgstr ""
-
-#: templates/base.html:91
+#: templates/base.html:73
msgid "Current items"
msgstr ""
-#: templates/base.html:125
+#: templates/base.html:107
msgid "Processing..."
msgstr ""
-#: templates/base.html:126
+#: templates/base.html:108
msgid "This can be long."
msgstr ""
-#: templates/base.html:127
+#: templates/base.html:109
msgid "Time to take a coffee?"
msgstr ""
-#: templates/base.html:128
+#: templates/base.html:110
msgid "Time to take another coffee?"
msgstr ""
@@ -2070,6 +2072,17 @@ msgstr ""
msgid "Documents associated to finds"
msgstr ""
+#: templates/ishtar/blocks/shortcut_menu.html:6
+msgid ""
+"Pin an item in order to constrain default searches with this item. By "
+"default only your items are displayed. New created and modified items are "
+"auto-pin."
+msgstr ""
+
+#: templates/ishtar/blocks/shortcut_menu.html:18
+msgid "Unpin"
+msgstr ""
+
#: templates/ishtar/blocks/window_nav.html:6
msgid "Previous version"
msgstr ""
@@ -2092,15 +2105,23 @@ msgstr ""
msgid "Next version"
msgstr ""
-#: templates/ishtar/blocks/window_nav.html:45
+#: templates/ishtar/blocks/window_nav.html:46
+msgid "Item pined in your shortcut menu."
+msgstr ""
+
+#: templates/ishtar/blocks/window_nav.html:46
+msgid "Pin"
+msgstr ""
+
+#: templates/ishtar/blocks/window_nav.html:52
msgid "Export as OpenOffice.org file"
msgstr ""
-#: templates/ishtar/blocks/window_nav.html:45
+#: templates/ishtar/blocks/window_nav.html:52
msgid "Export as PDF file"
msgstr ""
-#: templates/ishtar/blocks/window_nav.html:49
+#: templates/ishtar/blocks/window_nav.html:56
msgid "Relation between items are not historized."
msgstr ""
diff --git a/ishtar_common/menu_base.py b/ishtar_common/menu_base.py
index 7c309d376..64dfbae95 100644
--- a/ishtar_common/menu_base.py
+++ b/ishtar_common/menu_base.py
@@ -89,9 +89,9 @@ class MenuItem:
for access_control in self.access_controls:
access_control = prefix + access_control
if hasattr(user, 'ishtaruser') and \
- user.ishtaruser.has_perm(access_control, self.model) or\
+ user.ishtaruser.has_perm(access_control, self.model,
+ session=session) or \
access_control in user.get_group_permissions():
- # session=session) or \
return True
# manage by person type
if hasattr(user, 'ishtaruser'):
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 6150ab0aa..e4a72eab7 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -235,7 +235,7 @@ class OwnPerms:
return cls.objects.filter(query).count()
@classmethod
- def get_owns(cls, user):
+ def get_owns(cls, user, replace_query={}):
"""
Get Own items
"""
@@ -247,10 +247,12 @@ class OwnPerms:
if hasattr(cls, 'BASKET_MODEL'):
items = list(cls.BASKET_MODEL.objects.filter(user=user).all())
query = cls.get_query_owns(user)
- if not query:
+ if not query and not replace_query:
return cls.objects.filter(pk__isnull=True)
- items += list(
- cls.objects.filter(query).order_by(*cls._meta.ordering).all())
+ q = cls.objects.filter(query)
+ if replace_query:
+ q = cls.objects.filter(**replace_query)
+ items += list(q.order_by(*cls._meta.ordering).all())
return items
@@ -2412,10 +2414,10 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
bool(self.person_types.filter(
groups__permissions__codename=right_name).count()) or \
bool(self.ishtaruser.filter(
- groups__permissions__codename__in=right_name
+ groups__permissions__codename__in=[right_name]
).count()) or\
bool(self.ishtaruser.filter(
- user_permissions__codename__in=right_name).count())
+ user_permissions__codename__in=[right_name]).count())
# or self.person_types.filter(wizard__url_name=right_name).count())
if session:
cache.set(cache_key, res, settings.CACHE_SMALLTIMEOUT)
@@ -2512,8 +2514,9 @@ class IshtarUser(User):
def has_perm(self, perm, model=None, session=None, obj=None):
if not session:
return super(IshtarUser, self).has_perm(perm, model)
- cache_key = 'usersession-{}-{}'.format(session.session_key, perm,
- model or 'no')
+ cache_key = 'usersession-{}-{}-{}-{}'.format(
+ session.session_key, perm, model.__name__ if model else 'no',
+ obj.pk if obj else 'no')
res = cache.get(cache_key)
if res in (True, False):
return res
diff --git a/ishtar_common/static/js/chosen/chosen-sprite.png b/ishtar_common/static/js/chosen/chosen-sprite.png
new file mode 100644
index 000000000..c57da70b4
--- /dev/null
+++ b/ishtar_common/static/js/chosen/chosen-sprite.png
Binary files differ
diff --git a/ishtar_common/static/js/chosen/chosen.jquery.min.js b/ishtar_common/static/js/chosen/chosen.jquery.min.js
new file mode 100644
index 000000000..806018e6c
--- /dev/null
+++ b/ishtar_common/static/js/chosen/chosen.jquery.min.js
@@ -0,0 +1,2 @@
+/* Chosen v1.6.2 | (c) 2011-2016 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
+(function(){var a,AbstractChosen,Chosen,SelectParser,b,c={}.hasOwnProperty,d=function(a,b){function d(){this.constructor=a}for(var e in b)c.call(b,e)&&(a[e]=b[e]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a};SelectParser=function(){function SelectParser(){this.options_index=0,this.parsed=[]}return SelectParser.prototype.add_node=function(a){return"OPTGROUP"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},SelectParser.prototype.add_group=function(a){var b,c,d,e,f,g;for(b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:this.escapeExpression(a.label),title:a.title?a.title:void 0,children:0,disabled:a.disabled,classes:a.className}),f=a.childNodes,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},SelectParser.prototype.add_option=function(a,b,c){return"OPTION"===a.nodeName.toUpperCase()?(""!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,title:a.title?a.title:void 0,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,group_label:null!=b?this.parsed[b].label:null,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},SelectParser.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&amp;"})):a},SelectParser}(),SelectParser.select_to_array=function(a){var b,c,d,e,f;for(c=new SelectParser,f=a.childNodes,d=0,e=f.length;e>d;d++)b=f[d],c.add_node(b);return c.parsed},AbstractChosen=function(){function AbstractChosen(a,b){this.form_field=a,this.options=null!=b?b:{},AbstractChosen.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return AbstractChosen.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1,this.max_shown_results=this.options.max_shown_results||Number.POSITIVE_INFINITY,this.case_sensitive_search=this.options.case_sensitive_search||!1},AbstractChosen.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||AbstractChosen.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||AbstractChosen.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||AbstractChosen.default_no_result_text},AbstractChosen.prototype.choice_label=function(a){return this.include_group_label_in_selected&&null!=a.group_label?"<b class='group-name'>"+a.group_label+"</b>"+a.html:a.html},AbstractChosen.prototype.mouse_enter=function(){return this.mouse_on_container=!0},AbstractChosen.prototype.mouse_leave=function(){return this.mouse_on_container=!1},AbstractChosen.prototype.input_focus=function(a){var b=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return b.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},AbstractChosen.prototype.input_blur=function(a){var b=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return b.blur_test()},100))},AbstractChosen.prototype.results_option_build=function(a){var b,c,d,e,f,g,h;for(b="",e=0,h=this.results_data,f=0,g=h.length;g>f&&(c=h[f],d="",d=c.group?this.result_add_group(c):this.result_add_option(c),""!==d&&(e++,b+=d),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(c))),!(e>=this.max_shown_results));f++);return b},AbstractChosen.prototype.result_add_option=function(a){var b,c;return a.search_match&&this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push("active-result"),!a.disabled||a.selected&&this.is_multiple||b.push("disabled-result"),a.selected&&b.push("result-selected"),null!=a.group_array_index&&b.push("group-option"),""!==a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.style.cssText=a.style,c.setAttribute("data-option-array-index",a.array_index),c.innerHTML=a.search_text,a.title&&(c.title=a.title),this.outerHTML(c)):""},AbstractChosen.prototype.result_add_group=function(a){var b,c;return(a.search_match||a.group_match)&&a.active_options>0?(b=[],b.push("group-result"),a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.innerHTML=a.search_text,a.title&&(c.title=a.title),this.outerHTML(c)):""},AbstractChosen.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing?this.winnow_results():void 0},AbstractChosen.prototype.reset_single_select_options=function(){var a,b,c,d,e;for(d=this.results_data,e=[],b=0,c=d.length;c>b;b++)a=d[b],a.selected?e.push(a.selected=!1):e.push(void 0);return e},AbstractChosen.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},AbstractChosen.prototype.results_search=function(a){return this.results_showing?this.winnow_results():this.results_show()},AbstractChosen.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l;for(this.no_results_clear(),d=0,f=this.get_search_text(),a=f.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),i=new RegExp(a,"i"),c=this.get_search_regex(a),l=this.results_data,j=0,k=l.length;k>j;j++)b=l[j],b.search_match=!1,e=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(e=this.results_data[b.group_array_index],0===e.active_options&&e.search_match&&(d+=1),e.active_options+=1),b.search_text=b.group?b.label:b.html,(!b.group||this.group_search)&&(b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(d+=1),b.search_match?(f.length&&(g=b.search_text.search(i),h=b.search_text.substr(0,g+f.length)+"</em>"+b.search_text.substr(g+f.length),b.search_text=h.substr(0,g)+"<em>"+h.substr(g)),null!=e&&(e.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>d&&f.length?(this.update_results_content(""),this.no_results(f)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},AbstractChosen.prototype.get_search_regex=function(a){var b,c;return b=this.search_contains?"":"^",c=this.case_sensitive_search?"":"i",new RegExp(b+a,c)},AbstractChosen.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(" ")>=0||0===a.indexOf("["))&&(d=a.replace(/\[|\]/g,"").split(" "),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},AbstractChosen.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},AbstractChosen.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},AbstractChosen.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:case 18:break;default:return this.results_search()}},AbstractChosen.prototype.clipboard_event_checker=function(a){var b=this;return setTimeout(function(){return b.results_search()},50)},AbstractChosen.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},AbstractChosen.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},AbstractChosen.prototype.search_results_touchstart=function(a){return this.touch_started=!0,this.search_results_mouseover(a)},AbstractChosen.prototype.search_results_touchmove=function(a){return this.touch_started=!1,this.search_results_mouseout(a)},AbstractChosen.prototype.search_results_touchend=function(a){return this.touch_started?this.search_results_mouseup(a):void 0},AbstractChosen.prototype.outerHTML=function(a){var b;return a.outerHTML?a.outerHTML:(b=document.createElement("div"),b.appendChild(a),b.innerHTML)},AbstractChosen.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent)?!1:!0},AbstractChosen.default_multiple_text="Select Some Options",AbstractChosen.default_single_text="Select an Option",AbstractChosen.default_no_result_text="No results match",AbstractChosen}(),a=jQuery,a.fn.extend({chosen:function(b){return AbstractChosen.browser_is_supported()?this.each(function(c){var d,e;return d=a(this),e=d.data("chosen"),"destroy"===b?void(e instanceof Chosen&&e.destroy()):void(e instanceof Chosen||d.data("chosen",new Chosen(this,b)))}):this}}),Chosen=function(c){function Chosen(){return b=Chosen.__super__.constructor.apply(this,arguments)}return d(Chosen,c),Chosen.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},Chosen.prototype.set_up_html=function(){var b,c;return b=["chosen-container"],b.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push("chosen-rtl"),c={"class":b.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("<div />",c),this.is_multiple?this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>'):this.container.html('<a class="chosen-single chosen-default"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>'),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},Chosen.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},Chosen.prototype.register_observers=function(){var a=this;return this.container.bind("touchstart.chosen",function(b){return a.container_mousedown(b),b.preventDefault()}),this.container.bind("touchend.chosen",function(b){return a.container_mouseup(b),b.preventDefault()}),this.container.bind("mousedown.chosen",function(b){a.container_mousedown(b)}),this.container.bind("mouseup.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mouseenter.chosen",function(b){a.mouse_enter(b)}),this.container.bind("mouseleave.chosen",function(b){a.mouse_leave(b)}),this.search_results.bind("mouseup.chosen",function(b){a.search_results_mouseup(b)}),this.search_results.bind("mouseover.chosen",function(b){a.search_results_mouseover(b)}),this.search_results.bind("mouseout.chosen",function(b){a.search_results_mouseout(b)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(b){a.search_results_mousewheel(b)}),this.search_results.bind("touchstart.chosen",function(b){a.search_results_touchstart(b)}),this.search_results.bind("touchmove.chosen",function(b){a.search_results_touchmove(b)}),this.search_results.bind("touchend.chosen",function(b){a.search_results_touchend(b)}),this.form_field_jq.bind("chosen:updated.chosen",function(b){a.results_update_field(b)}),this.form_field_jq.bind("chosen:activate.chosen",function(b){a.activate_field(b)}),this.form_field_jq.bind("chosen:open.chosen",function(b){a.container_mousedown(b)}),this.form_field_jq.bind("chosen:close.chosen",function(b){a.input_blur(b)}),this.search_field.bind("blur.chosen",function(b){a.input_blur(b)}),this.search_field.bind("keyup.chosen",function(b){a.keyup_checker(b)}),this.search_field.bind("keydown.chosen",function(b){a.keydown_checker(b)}),this.search_field.bind("focus.chosen",function(b){a.input_focus(b)}),this.search_field.bind("cut.chosen",function(b){a.clipboard_event_checker(b)}),this.search_field.bind("paste.chosen",function(b){a.clipboard_event_checker(b)}),this.is_multiple?this.search_choices.bind("click.chosen",function(b){a.choices_click(b)}):this.container.bind("click.chosen",function(a){a.preventDefault()})},Chosen.prototype.destroy=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},Chosen.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},Chosen.prototype.container_mousedown=function(b){return this.is_disabled||(b&&"mousedown"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass("search-choice-close"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents("a.chosen-single").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},Chosen.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},Chosen.prototype.search_results_mousewheel=function(a){var b;return a.originalEvent&&(b=a.originalEvent.deltaY||-a.originalEvent.wheelDelta||a.originalEvent.detail),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},Chosen.prototype.blur_test=function(a){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},Chosen.prototype.close_field=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},Chosen.prototype.activate_field=function(){return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},Chosen.prototype.test_active_click=function(b){var c;return c=a(b.target).closest(".chosen-container"),c.length&&this.container[0]===c[0]?this.active_field=!0:this.close_field()},Chosen.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=SelectParser.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},Chosen.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},Chosen.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},Chosen.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},Chosen.prototype.update_results_content=function(a){return this.search_results.html(a)},Chosen.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},Chosen.prototype.set_tab_index=function(a){var b;return this.form_field.tabIndex?(b=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=b):void 0},Chosen.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0?this.form_field_label.bind("click.chosen",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},Chosen.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},Chosen.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},Chosen.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c?this.result_do_highlight(c):void 0},Chosen.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},Chosen.prototype.choice_build=function(b){var c,d,e=this;return c=a("<li />",{"class":"search-choice"}).html("<span>"+this.choice_label(b)+"</span>"),b.disabled?c.addClass("search-choice-disabled"):(d=a("<a />",{"class":"search-choice-close","data-option-array-index":b.array_index}),d.bind("click.chosen",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},Chosen.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},Chosen.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute("data-option-array-index"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents("li").first().remove(),this.search_field_scale()):void 0},Chosen.prototype.results_reset=function(){return this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field?this.results_hide():void 0},Chosen.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},Chosen.prototype.result_select=function(a){var b,c;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?b.removeClass("active-result"):this.reset_single_select_options(),b.addClass("result-selected"),c=this.results_data[b[0].getAttribute("data-option-array-index")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(this.choice_label(c)),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.show_search_field_default(),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,a.preventDefault(),this.search_field_scale())):void 0},Chosen.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(a)},Chosen.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},Chosen.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")):void 0},Chosen.prototype.get_search_text=function(){return a("<div/>").text(a.trim(this.search_field.val())).html()},Chosen.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first(),null!=a?this.result_do_highlight(a):void 0},Chosen.prototype.no_results=function(b){var c;return c=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>'),c.find("span").first().html(b),this.search_results.append(c),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},Chosen.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},Chosen.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(a):void 0:this.results_show()},Chosen.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},Chosen.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(a=this.search_container.siblings("li.search-choice").last(),a.length&&!a.hasClass("search-choice-disabled")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},Chosen.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},Chosen.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:this.results_showing&&a.preventDefault();break;case 32:this.disable_search&&a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},Chosen.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return b=a("<div />",{style:f}),b.text(this.search_field.val()),a("body").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+"px"})}},Chosen}(AbstractChosen)}).call(this); \ No newline at end of file
diff --git a/ishtar_common/static/js/chosen/chosen.min.css b/ishtar_common/static/js/chosen/chosen.min.css
new file mode 100644
index 000000000..60b117182
--- /dev/null
+++ b/ishtar_common/static/js/chosen/chosen.min.css
@@ -0,0 +1,3 @@
+/* Chosen v1.6.2 | (c) 2011-2016 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
+
+.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container .search-choice .group-name,.chosen-container .chosen-single .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .search-choice .group-name:after,.chosen-container .chosen-single .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:#fff url(chosen-sprite.png) no-repeat 100% -20px;background:url(chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;height:25px;outline:0;border:0!important;background:transparent!important;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 5px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:0;background:transparent}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single-nosearch .chosen-search,.chosen-rtl .chosen-drop{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:0}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:#fff url(chosen-sprite.png) no-repeat -30px -20px;background:url(chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi),only screen and (min-resolution:1.5dppx){.chosen-rtl .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-container-single .chosen-search input[type=text],.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span{background-image:url(chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}} \ No newline at end of file
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index 4d82cb238..fecefe0a9 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -1,5 +1,5 @@
-
/* CSRFToken management */
+
$.ajaxSetup({
beforeSend: function(xhr, settings) {
function getCookie(name) {
@@ -23,6 +23,8 @@ beforeSend: function(xhr, settings) {
}
}});
+var shortcut_url = '';
+
function manage_async_link(event){
event.preventDefault();
var url = $(this).attr('href');
@@ -36,30 +38,66 @@ function manage_async_link(event){
function get_next_table_id(){}
function get_previous_table_id(){}
-$(document).ready(function(){
- $("#main_menu > ul > li > ul").hide();
- $("#main_menu ul ul .selected").parents().show();
- var items = new Array('file', 'operation');
+function init_shortcut_menu(html){
+ $("#progress").hide();
+ $("#context_menu").html(html);
+ $(".chosen-select").chosen();
$("#current_file").change(function(){
$.post('/' + url_path + 'update-current-item/',
- {item:'file', value:$("#current_file").val()}
+ {item:'file', value:$("#current_file").val()},
+ load_shortcut_menu
);
});
$("#current_operation").change(function(){
$.post('/' + url_path + 'update-current-item/',
- {item:'operation', value:$("#current_operation").val()}
+ {item:'operation', value:$("#current_operation").val()},
+ load_shortcut_menu
);
});
$("#current_contextrecord").change(function(){
$.post('/' + url_path + 'update-current-item/',
- {item:'contextrecord', value:$("#current_contextrecord").val()}
+ {item:'contextrecord', value:$("#current_contextrecord").val()},
+ load_shortcut_menu
);
});
$("#current_find").change(function(){
$.post('/' + url_path + 'update-current-item/',
- {item:'find', value:$("#current_find").val()}
+ {item:'find', value:$("#current_find").val()},
+ load_shortcut_menu
);
});
+}
+
+function display_info(msg){
+ $('#message .information .content').html(msg);
+ $('#message').fadeIn('slow');
+ $('#message .information').fadeIn('slow');
+ setTimeout(
+ function(){
+ $('#message .information').fadeOut('slow');
+ $('#message').fadeOut('slow');
+ }, 5000);
+}
+
+function load_shortcut_menu(){
+ if (!shortcut_url) return;
+ $("#progress").show();
+ $.ajax({
+ url: shortcut_url,
+ cache: false,
+ success:function(html){
+ init_shortcut_menu(html);
+ },
+ error:function(XMLHttpRequest, textStatus, errorThrows){
+ $("#progress").hide();
+ }
+ });
+}
+
+$(document).ready(function(){
+ $("#main_menu > ul > li > ul").hide();
+ $("#main_menu ul ul .selected").parents().show();
+ var items = new Array('file', 'operation');
if ($(document).height() < 1.5*$(window).height()){
$('#to_bottom_arrow').hide();
$('#to_top_arrow').hide();
@@ -67,6 +105,7 @@ $(document).ready(function(){
$('#language_selector').change(function(){
$('#language_form').submit();
});
+ load_shortcut_menu();
if ($.isFunction($(".prettyPhoto a").prettyPhoto)){
$(".prettyPhoto a").prettyPhoto({'social_tools':''});
}
@@ -74,6 +113,7 @@ $(document).ready(function(){
$(this).attr('class', $(this).children("option:selected").attr('class'));
});
$("a.async-link").click(manage_async_link);
+ $(".chosen-select").chosen();
});
$(document).on("click", '#to_bottom_arrow', function(){
diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css
index 4de3cd315..bff3ef473 100644
--- a/ishtar_common/static/media/style.css
+++ b/ishtar_common/static/media/style.css
@@ -21,6 +21,8 @@ div.form, ul.form {
}
/* color */
+
+.pin-action,
#window hr,
#context_menu .red,
a, a.remove {
@@ -46,6 +48,7 @@ a.add-button,
color:#000;
}
+.chosen-container,
#context_menu .green,
#context_menu .red,
#context_menu .orange,
@@ -244,6 +247,17 @@ button.ui-widget-header:hover {
background: #f8b950;
}
+#ui-datepicker-div{
+ z-index: 100 !important;
+}
+
+.chosen-container-active.chosen-with-drop .chosen-single,
+.chosen-container-single .chosen-single{
+ background: none;
+ background-color: #fff;
+ border-radius:4px;
+}
+
textarea,
input[type=text],
input[type=password],
@@ -289,6 +303,26 @@ div.nav-button{
border: 0 solid transparent;
}
+#message,
+#message div{
+ display: none;
+}
+
+#message {
+ z-index: 42200;
+ position: absolute;
+ top: 5px;
+ right: 5px;
+ background: #fff;
+ padding: 0.5em 1em;
+ border: 1px solid;
+ border-radius: 3px;
+}
+
+#message span{
+ padding: 0 1em;
+}
+
#to_bottom_arrow{
bottom:80px;
}
@@ -391,6 +425,15 @@ div#context_menu fieldset{
border-radius: 0;
}
+div#context_menu table{
+ display: inline;
+ vertical-align: top;
+}
+
+div#context_menu .icon{
+ padding: 0.6em 0.5em;
+}
+
div#context_menu ul{
margin:0;
padding:2px;
@@ -595,6 +638,7 @@ ul.form-flex {
ul.form-flex li{
width: 395px;
+ padding-top: 0.3em;
}
@media screen and (min-width: 1051px) {
@@ -717,6 +761,10 @@ ul.form .help_text{
font-style: normal;
}
+.pin-action:hover{
+ cursor:pointer;
+}
+
.autocomplete{
width:350px;
}
diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html
index 4b8b68f8a..703644a35 100644
--- a/ishtar_common/templates/base.html
+++ b/ishtar_common/templates/base.html
@@ -14,12 +14,14 @@
<script language="javascript" type="text/javascript" src="{{JQUERY_URL}}?ver={{VERSION}}"></script>
<script language="javascript" type="text/javascript" src="{{JQUERY_UI_URL}}jquery-ui.js?ver={{VERSION}}"></script>
<script language="javascript" type="text/javascript" src="{{JQUERY_UI_URL}}ui/i18n/jquery.ui.datepicker-{{COUNTRY}}.js?ver={{VERSION}}"></script>
+ <script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/chosen/chosen.jquery.min.js?ver={{VERSION}}"></script>
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}/js/prettyPhoto/js/jquery.prettyPhoto.js?ver={{VERSION}}"></script>
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/i18n/grid.locale-{{COUNTRY}}.js?ver={{VERSION}}"></script>
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jquery.jqGrid.min.js?ver={{VERSION}}"></script>
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/grid.tbltogrid.js?ver={{VERSION}}"></script>
<script language="javascript" type="text/javascript" src="{{STATIC_URL}}/js/ishtar.js?ver={{VERSION}}"></script>
<link type="text/css" href="{{JQUERY_UI_URL}}jquery-ui.css?ver={{VERSION}}" rel="stylesheet" />
+ <link type="text/css" href="{{STATIC_URL}}js/chosen/chosen.min.css?ver={{VERSION}}" rel="stylesheet" />
<link rel="stylesheet" href="{{STATIC_URL}}/font-awesome/css/font-awesome.min.css?ver={{VERSION}}" />
<link rel="stylesheet" href="{{STATIC_URL}}/js/prettyPhoto/css/prettyPhoto.css?ver={{VERSION}}" />
<link rel="stylesheet" href="{{STATIC_URL}}media/ui.jqgrid.css?ver={{VERSION}}" />
@@ -28,6 +30,9 @@
{% include "blocks/extra_head.html" %}
{% block extra_head %}
{% endblock %}
+ <script type='text/javascript'>
+ var shortcut_url = '{% url "shortcut-menu" %}';
+ </script>
</head>
<body{% if current_theme%} id='{{current_theme}}'{%endif%}>
<div id="header">
@@ -64,31 +69,8 @@
<a href='{% url "start" %}' id="logo">
{% if APP_NAME %}<p id="app_name">{{APP_NAME}}</p>{%endif%}
</a>
- {% if not reminders %}<div id="context_menu">
- {% block context %}{% if current_menu %}
- <form method="post" action="{% url 'update-current-item' %}">
- <fieldset>
- <legend>{% trans "Default selected items"%}</legend>
- <table id='current_items'>
- {% for lbl, model_name, main_cls, items in current_menu %}
- <tr>
- <td><label for="current_{{model_name}}">{{lbl}}</label></td>
- <td>
- <select class='{{main_cls}}' id='current_{{model_name}}'>
- <option class='normal' value=''>--</option>
- {% for val, label, selected, cls in items %}<option{% if cls %} class='{{cls}}'{% endif %} value='{{val}}'{% if selected %} selected="selected"{% endif %}>{% ifequal cls 'basket' %}&#xf291; {% endifequal %}{% ifequal cls 'green' %}&#xf058; {% endifequal %}{% ifequal cls 'orange' %}&#xf06a; {% endifequal %}{% ifequal cls 'red' %}&#xf071; {% endifequal %}{{label}}</option>
- {% endfor %}</select>
- </td>{% with 'show-'|add:model_name as model_url%}
- <td><a href='#' onclick='load_current_window("{% url model_url 0 %}", "{{model_name}}");' class='display_details'><i class="fa fa-info-circle" aria-hidden="true"></i></a></td>
- {% endwith %}
- </tr>
- {% endfor %}
- </table>
- </fieldset>
- </form>
- {% endif %}{% endblock %}
- </div>{% endif %}
-{% if reminders %}<fieldset id='reminder'><legend>{% trans "Current items" %}</legend>
+ {% if not reminders %}<div id="context_menu"></div>
+ {% else %}<fieldset id='reminder'><legend>{% trans "Current items" %}</legend>
{% for lbl, value in reminders %}
<p><strong class='lbl'>{{lbl}}{% trans ":"%}</strong> <span class='value'>{{value}}</span></p>
{% endfor %}
@@ -128,6 +110,9 @@
<p class='progress-detail progress-4'>{% trans "Time to take another coffee?" %} <i class="fa fa-coffee" aria-hidden="true"></i></p>
</div>
</div>
+ <div id='message'>
+ <div class='information'><i class="fa fa-info-circle" aria-hidden="true"></i> <span class='content'></span></div>
+ </div>
</body>
</html>
diff --git a/ishtar_common/templates/ishtar/blocks/shortcut_menu.html b/ishtar_common/templates/ishtar/blocks/shortcut_menu.html
new file mode 100644
index 000000000..c1100ae01
--- /dev/null
+++ b/ishtar_common/templates/ishtar/blocks/shortcut_menu.html
@@ -0,0 +1,27 @@
+{% load i18n %}
+{% load url from future%}
+{% if current_menu %}
+<form method="post" action="{% url 'update-current-item' %}">
+<fieldset>
+<i class="icon fa fa-thumb-tack fa-2x" aria-hidden="true" title="{% trans 'Pin an item in order to constrain default searches with this item. By default only your items are displayed. New created and modified items are auto-pin.' %}"></i>
+<table id='current_items'>
+{% for lbl, model_name, main_cls, items in current_menu %}
+<tr>
+ <td><label for="current_{{model_name}}">{{lbl}}</label></td>
+ <td>
+ <select class='{{main_cls}} chosen-select' id='current_{{model_name}}'>
+ <option class='normal' value=''>--</option>
+ {% for val, label, selected, cls in items %}<option{% if cls %} class='{{cls}}'{% endif %} value='{{val}}'{% if selected %} selected="selected"{% endif %}>{% ifequal cls 'basket' %}&#xf291; {% endifequal %}{% ifequal cls 'green' %}&#xf058; {% endifequal %}{% ifequal cls 'orange' %}&#xf06a; {% endifequal %}{% ifequal cls 'red' %}&#xf071; {% endifequal %}{{label}}</option>
+ {% endfor %}</select>
+ </td>{% with 'show-'|add:model_name as model_url%}
+ <td><a href='#' onclick='load_current_window("{% url model_url 0 %}", "{{model_name}}");' class='display_details'><i class="fa fa-info-circle" aria-hidden="true"></i></a></td>
+ <td><span class='pin-action' onclick='$.get("{% url 'unpin' model_name %}", function(){load_shortcut_menu();});' title="{% trans 'Unpin' %}">
+ <i class="fa fa-times"></i>
+ </span></td>
+ {% endwith %}
+</tr>
+{% endfor %}
+</table>
+</fieldset>
+</form>
+{% endif %}
diff --git a/ishtar_common/templates/ishtar/blocks/window_nav.html b/ishtar_common/templates/ishtar/blocks/window_nav.html
index 13069b1eb..4ce316217 100644
--- a/ishtar_common/templates/ishtar/blocks/window_nav.html
+++ b/ishtar_common/templates/ishtar/blocks/window_nav.html
@@ -42,6 +42,13 @@
<i class="fa fa-pencil fa-stack-1x fa-inverse"></i>
</span>
</a>{% endif %}
+ {% if pin_action and item.SLUG %}
+ <span class='pin-action' onclick='$.get("{% url 'pin' item.SLUG item.pk %}", function(){load_shortcut_menu(); display_info("{% trans 'Item pined in your shortcut menu.' %}")});' title="{% trans 'Pin' %}">
+ <span class="fa-stack fa-lg">
+ <i class="fa fa-circle fa-stack-2x"></i>
+ <i class="fa fa-thumb-tack fa-stack-1x fa-inverse"></i>
+ </span>
+ </span>{% endif %}
<a class='badge' href='{% url show_url item.pk "odt" %}' title='{% trans "Export as OpenOffice.org file"%}'>ODT</a> <a class='badge' href='{% url show_url item.pk "pdf" %}' title='{% trans "Export as PDF file"%}'>PDF</a>
</div>
<hr class='clear'>
diff --git a/ishtar_common/templates/window.html b/ishtar_common/templates/window.html
index 8e8eac41e..0748cd4cd 100644
--- a/ishtar_common/templates/window.html
+++ b/ishtar_common/templates/window.html
@@ -23,7 +23,7 @@
<body>
{% if new_item_label %}
<script type='text/javascript' language='javascript'>
-save_and_close_window{% if many %}_many{% endif %}("{{parent_name}}", "{{parent_pk}}", "{{new_item_label}}", "{{new_item_pk}}");
+save_and_close_window{% if many %}_many{% endif %}("{{parent_name}}", "{{parent_pk}}", "{{new_item_label|safe}}", "{{new_item_pk}}");
</script>
{% endif %}
<div id="window_content">
diff --git a/ishtar_common/templatetags/window_header.py b/ishtar_common/templatetags/window_header.py
index b137f24a5..5322c4478 100644
--- a/ishtar_common/templatetags/window_header.py
+++ b/ishtar_common/templatetags/window_header.py
@@ -6,7 +6,7 @@ register = template.Library()
@register.inclusion_tag('ishtar/blocks/window_nav.html')
def window_nav(item, window_id, show_url, modify_url='', histo_url='',
- revert_url='', previous=None, nxt=None):
+ revert_url='', previous=None, nxt=None, pin_action=False):
return {
'show_url': show_url,
'modify_url': modify_url,
@@ -15,7 +15,8 @@ def window_nav(item, window_id, show_url, modify_url='', histo_url='',
'item': item,
'window_id': window_id,
'previous': previous,
- 'next': nxt}
+ 'next': nxt,
+ 'pin_action': pin_action}
@register.inclusion_tag('ishtar/blocks/window_file_nav.html')
@@ -34,4 +35,5 @@ def window_file_nav(item, window_id, previous=None, nxt=None):
'extra_action': mark_safe(add_operation),
'window_id': window_id,
'previous': previous,
- 'next': nxt}
+ 'next': nxt,
+ 'pin_action': True}
diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py
index a6f24beed..049bcaf7b 100644
--- a/ishtar_common/urls.py
+++ b/ishtar_common/urls.py
@@ -34,6 +34,7 @@ urlpatterns = patterns(
# internationalization
url(r'^i18n/', include('django.conf.urls.i18n')),
# General
+ url(r'shortcut_menu/', views.shortcut_menu, name='shortcut-menu'),
url(r'person_search/(?P<step>.+)?$',
check_rights(['add_person'])(
views.person_search_wizard), name='person_search'),
@@ -129,6 +130,9 @@ urlpatterns += patterns(
name='dashboard-main-detail'),
url(r'update-current-item/$', 'update_current_item',
name='update-current-item'),
+ url(r'pin/(?P<item_type>[a-z-]+)/(?P<pk>\d+)/$', 'update_current_item',
+ name='pin'),
+ url(r'unpin/(?P<item_type>[a-z-]+)/$', 'unpin', name='unpin'),
url(r'new-person/(?:(?P<parent_name>[^/]+)/)?(?:(?P<limits>[^/]+)/)?$',
'new_person', name='new-person'),
url(r'new-person-noorga/'
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 46a8ceb6a..d55181067 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -62,7 +62,7 @@ from archaeological_operations.forms import DashboardForm as DashboardFormOpe
from archaeological_files.forms import DashboardForm as DashboardFormFile
from ishtar_common.forms import FinalForm, FinalDeleteForm
-from ishtar_common.utils import get_random_item_image_link
+from ishtar_common.utils import get_random_item_image_link, shortify
from ishtar_common import forms_common as forms
from ishtar_common import wizards
from ishtar_common.models import HistoryError, PRIVATE_FIELDS, \
@@ -198,11 +198,137 @@ def get_autocomplete_generic(model, extra={'available': True}):
return func
-def update_current_item(request):
- if not request.is_ajax() and not request.method == 'POST':
- raise Http404
- if 'value' in request.POST and 'item' in request.POST:
- request.session[request.POST['item']] = request.POST['value']
+def shortcut_menu(request):
+ from archaeological_operations.models import Operation
+ from archaeological_files.models import File
+ from archaeological_context_records.models import ContextRecord
+ from archaeological_finds.models import Find
+
+ profile = get_current_profile()
+ CURRENT_ITEMS = []
+ if profile.files:
+ CURRENT_ITEMS.append((_(u"Archaeological file"), File))
+ CURRENT_ITEMS.append((_(u"Operation"), Operation))
+ if profile.context_record:
+ CURRENT_ITEMS.append((_(u"Context record"), ContextRecord))
+ if profile.find:
+ CURRENT_ITEMS.append((_(u"Find"), Find))
+ dct = {'current_menu': []}
+ current_selected_item = None
+ for lbl, model in CURRENT_ITEMS:
+ new_selected_item = None
+ model_name = model.SLUG
+ cls = ''
+ current = model_name in request.session and request.session[model_name]
+ items = []
+ for item in model.get_owns(request.user,
+ menu_filtr=current_selected_item):
+ pk = unicode(item.pk)
+ if item.IS_BASKET:
+ pk = "basket-" + pk
+ selected = pk == current
+ if selected:
+ cls = item.get_short_menu_class()
+ new_selected_item = item
+ items.append((pk, shortify(unicode(item), 60),
+ selected, item.get_short_menu_class()))
+ # selected is not in owns - add it to the list
+ if not new_selected_item and current:
+ try:
+ item = model.objects.get(pk=int(current))
+ new_selected_item = item
+ items.append((item.pk, shortify(unicode(item), 60),
+ True, item.get_short_menu_class()))
+ except (model.DoesNotExist, ValueError):
+ pass
+ if items:
+ dct['current_menu'].append((lbl, model_name, cls, items))
+ current_selected_item = new_selected_item
+ return render_to_response('ishtar/blocks/shortcut_menu.html', dct,
+ context_instance=RequestContext(request))
+
+
+def get_current_items(request):
+ from archaeological_files.models import File
+ from archaeological_operations.models import Operation
+ from archaeological_context_records.models import ContextRecord
+ from archaeological_finds.models import Find
+ currents = {}
+ for key, model in (('file', File),
+ ('operation', Operation),
+ ('contextrecord', ContextRecord),
+ ('find', Find)):
+ currents[key] = None
+ if key in request.session and request.session[key]:
+ try:
+ currents[key] = model.objects.get(pk=int(request.session[key]))
+ except (ValueError, File.DoesNotExist):
+ continue
+ return currents
+
+
+def unpin(request, item_type):
+ request.session['find'] = ''
+ if item_type == 'find':
+ return HttpResponse('ok')
+ request.session['contextrecord'] = ''
+ if item_type == 'contextrecord':
+ return HttpResponse('ok')
+ request.session['operation'] = ''
+ if item_type == 'operation':
+ return HttpResponse('ok')
+ request.session['file'] = ''
+ return HttpResponse('ok')
+
+
+def update_current_item(request, item_type=None, pk=None):
+ if not item_type or not pk:
+ if not request.is_ajax() and not request.method == 'POST':
+ raise Http404
+ item_type = request.POST['item']
+ if 'value' in request.POST and 'item' in request.POST:
+ request.session[item_type] = request.POST['value']
+ else:
+ request.session[item_type] = str(pk)
+
+ currents = get_current_items(request)
+ # reinit when descending item are not relevant
+ if item_type == 'file' and currents['file'] and currents['operation'] and \
+ currents['operation'].associated_file != currents['file']:
+ request.session["operation"] = ''
+ currents['operation'] = None
+ if item_type in ('operation', 'file') and currents['contextrecord'] and \
+ (not request.session["operation"] or
+ currents['contextrecord'].operation != currents['operation']):
+ request.session["contextrecord"] = ''
+ currents['contextrecord'] = None
+ from archaeological_finds.models import Find
+ if item_type in ('contextrecord', 'operation', 'file') and currents['find'] and\
+ (not request.session["contextrecord"] or
+ not Find.objects.filter(
+ downstream_treatment__isnull=True,
+ base_finds__context_record__pk=request.session["contextrecord"],
+ pk=currents['find'].pk).count()):
+ request.session["find"] = ''
+ currents['find'] = None
+
+ # re-init ascending item with relevant values
+ if item_type == "find" and currents['find']:
+ from archaeological_context_records.models import ContextRecord
+ q = ContextRecord.objects.filter(
+ base_finds__find__pk=currents['find'].pk)
+ if q.count():
+ currents['contextrecord'] = q.all()[0]
+ request.session['contextrecord'] = str(
+ currents['contextrecord'].pk)
+ if item_type in ("find", 'contextrecord') and currents['contextrecord']:
+ currents['operation'] = currents['contextrecord'].operation
+ request.session['operation'] = str(currents['operation'].pk)
+ if item_type in ("find", 'contextrecord', 'operation') and \
+ currents['operation']:
+ currents['file'] = currents['operation'].associated_file
+ request.session['file'] = str(currents['file'].pk) if currents['file'] \
+ else None
return HttpResponse('ok')
@@ -452,6 +578,8 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
reqs = reqs | q
and_reqs.append(reqs)
if 'submited' not in request_items:
+ # default search
+ # an item is selected in the default menu
if default_name in request.session and \
request.session[default_name]:
value = request.session[default_name]
@@ -460,11 +588,11 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
request.session[default_name].split('-')[-1]}
else:
dct = {"pk": request.session[default_name]}
- elif not dct:
- for name in relative_session_names.keys():
+ elif dct == base_request:
+ # a parent item may be selected in the default menu
+ for name, key in relative_session_names:
if name in request.session and request.session[name]:
- k = relative_session_names[name]
- dct = {k: request.session[name]}
+ dct.update({key: request.session[name]})
break
if (not dct or data_type == 'csv') \
and func_name in request.session:
diff --git a/translations/de/ishtar_common.po b/translations/de/ishtar_common.po
index 750b795b9..c314a120e 100644
--- a/translations/de/ishtar_common.po
+++ b/translations/de/ishtar_common.po
@@ -23,22 +23,6 @@ msgstr ""
msgid "Related item"
msgstr ""
-#: context_processors.py:38
-msgid "Archaeological file"
-msgstr ""
-
-#: context_processors.py:39 models.py:1512
-msgid "Operation"
-msgstr ""
-
-#: context_processors.py:41
-msgid "Context record"
-msgstr ""
-
-#: context_processors.py:43
-msgid "Find"
-msgstr ""
-
#: data_importer.py:182
#, python-format
msgid "\"%(value)s\" is too long. The max length is %(length)d characters."
@@ -150,7 +134,7 @@ msgstr ""
msgid "Enter a valid name consisting of letters, spaces and hyphens."
msgstr ""
-#: forms.py:71 forms_common.py:510
+#: forms.py:71 forms_common.py:520
msgid "Confirm"
msgstr ""
@@ -174,12 +158,12 @@ msgstr ""
msgid "Add a new item"
msgstr ""
-#: forms.py:245 models.py:1276
+#: forms.py:245 models.py:1278
msgid "Template"
msgstr ""
-#: forms_common.py:40 forms_common.py:58 forms_common.py:171
-#: forms_common.py:298 models.py:1342 models.py:2655
+#: forms_common.py:40 forms_common.py:58 forms_common.py:181
+#: forms_common.py:308 models.py:1344 models.py:2658
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
@@ -195,70 +179,76 @@ msgid ""
"french town Saint-Denis in the Seine-Saint-Denis department.</p>"
msgstr ""
-#: forms_common.py:67 forms_common.py:747 ishtar_menu.py:47 models.py:1510
-#: models.py:2324 models.py:2478 models.py:2535
+#: forms_common.py:67 forms_common.py:757 ishtar_menu.py:47 models.py:1512
+#: models.py:2326 models.py:2480 models.py:2538
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr ""
-#: forms_common.py:159 forms_common.py:236 forms_common.py:343
-#: ishtar_menu.py:71 models.py:1511 models.py:2229
+#: forms_common.py:116
+msgid ""
+"This import type have no unicity type defined. Conservative import is not "
+"possible."
+msgstr ""
+
+#: forms_common.py:169 forms_common.py:246 forms_common.py:353
+#: ishtar_menu.py:71 models.py:1513 models.py:2231
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr ""
-#: forms_common.py:162 forms_common.py:199 forms_common.py:231
-#: forms_common.py:268 forms_common.py:338 models.py:943 models.py:1275
-#: models.py:1556 models.py:1774 models.py:2223 models.py:2310 models.py:2641
+#: forms_common.py:172 forms_common.py:209 forms_common.py:241
+#: forms_common.py:278 forms_common.py:348 models.py:945 models.py:1277
+#: models.py:1558 models.py:1776 models.py:2225 models.py:2312 models.py:2644
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr ""
-#: forms_common.py:163 models.py:1497 models.py:1905
+#: forms_common.py:173 models.py:1499 models.py:1907
msgid "Organization type"
msgstr ""
-#: forms_common.py:165 forms_common.py:292 models.py:1337
+#: forms_common.py:175 forms_common.py:302 models.py:1339
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr ""
-#: forms_common.py:167 forms_common.py:295 models.py:1338
+#: forms_common.py:177 forms_common.py:305 models.py:1340
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr ""
-#: forms_common.py:169 forms_common.py:296 models.py:1340
+#: forms_common.py:179 forms_common.py:306 models.py:1342
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr ""
-#: forms_common.py:172 forms_common.py:299 models.py:1343
+#: forms_common.py:182 forms_common.py:309 models.py:1345
msgid "Country"
msgstr ""
-#: forms_common.py:174 forms_common.py:233 forms_common.py:272
-#: forms_common.py:340 forms_common.py:464 models.py:1370
+#: forms_common.py:184 forms_common.py:243 forms_common.py:282
+#: forms_common.py:350 forms_common.py:474 models.py:1372
msgid "Email"
msgstr ""
-#: forms_common.py:175 forms_common.py:275 models.py:1355
+#: forms_common.py:185 forms_common.py:285 models.py:1357
#: templates/ishtar/sheet_organization.html:14
#: templates/ishtar/sheet_person.html:19
#: templates/ishtar/wizard/wizard_person.html:17
msgid "Phone"
msgstr ""
-#: forms_common.py:176 forms_common.py:284 models.py:1367
+#: forms_common.py:186 forms_common.py:294 models.py:1369
#: templates/ishtar/sheet_organization.html:15
#: templates/ishtar/sheet_person.html:37
#: templates/ishtar/wizard/wizard_person.html:35
msgid "Mobile phone"
msgstr ""
-#: forms_common.py:200 forms_common.py:234 forms_common.py:341 models.py:1933
-#: models.py:2225 models.py:2576 templates/sheet_ope.html:85
+#: forms_common.py:210 forms_common.py:244 forms_common.py:351 models.py:1935
+#: models.py:2227 models.py:2579 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,225 +256,225 @@ msgstr ""
msgid "Type"
msgstr ""
-#: forms_common.py:209 views.py:137
+#: forms_common.py:219 views.py:137
msgid "Organization search"
msgstr ""
-#: forms_common.py:232 forms_common.py:266 forms_common.py:339 models.py:2308
+#: forms_common.py:242 forms_common.py:276 forms_common.py:349 models.py:2310
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr ""
-#: forms_common.py:248 forms_common.py:326 views.py:102
+#: forms_common.py:258 forms_common.py:336 views.py:102
msgid "Person search"
msgstr ""
-#: forms_common.py:260 templates/ishtar/sheet_person.html:7
+#: forms_common.py:270 templates/ishtar/sheet_person.html:7
#: templates/ishtar/wizard/wizard_person.html:6
msgid "Identity"
msgstr ""
-#: forms_common.py:263 forms_common.py:665 forms_common.py:714 models.py:1906
-#: models.py:2302 models.py:2304 models.py:2573 templates/sheet_ope.html:104
+#: forms_common.py:273 forms_common.py:675 forms_common.py:724 models.py:1908
+#: models.py:2304 models.py:2306 models.py:2576 templates/sheet_ope.html:104
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr ""
-#: forms_common.py:264 models.py:2306
+#: forms_common.py:274 models.py:2308
msgid "Salutation"
msgstr ""
-#: forms_common.py:270 models.py:2312
+#: forms_common.py:280 models.py:2314
msgid "Raw name"
msgstr ""
-#: forms_common.py:273 models.py:1356
+#: forms_common.py:283 models.py:1358
msgid "Phone description"
msgstr ""
-#: forms_common.py:276 models.py:1358 models.py:1360
+#: forms_common.py:286 models.py:1360 models.py:1362
msgid "Phone description 2"
msgstr ""
-#: forms_common.py:278
+#: forms_common.py:288
msgid "Phone 2"
msgstr ""
-#: forms_common.py:280 models.py:1364
+#: forms_common.py:290 models.py:1366
msgid "Phone description 3"
msgstr ""
-#: forms_common.py:282 models.py:1362
+#: forms_common.py:292 models.py:1364
msgid "Phone 3"
msgstr ""
-#: forms_common.py:287
+#: forms_common.py:297
msgid "Current organization"
msgstr ""
-#: forms_common.py:301 models.py:1345
+#: forms_common.py:311 models.py:1347
msgid "Other address: address"
msgstr ""
-#: forms_common.py:304 models.py:1348
+#: forms_common.py:314 models.py:1350
msgid "Other address: address complement"
msgstr ""
-#: forms_common.py:306 models.py:1349
+#: forms_common.py:316 models.py:1351
msgid "Other address: postal code"
msgstr ""
-#: forms_common.py:308 models.py:1351
+#: forms_common.py:318 models.py:1353
msgid "Other address: town"
msgstr ""
-#: forms_common.py:310 models.py:1353
+#: forms_common.py:320 models.py:1355
msgid "Other address: country"
msgstr ""
-#: forms_common.py:322
+#: forms_common.py:332
msgid "Already has an account"
msgstr ""
-#: forms_common.py:337
+#: forms_common.py:347
msgid "Username"
msgstr ""
-#: forms_common.py:355
+#: forms_common.py:365
msgid "Account search"
msgstr ""
-#: forms_common.py:402 forms_common.py:442 forms_common.py:446 models.py:2277
+#: forms_common.py:412 forms_common.py:452 forms_common.py:456 models.py:2279
msgid "Person type"
msgstr ""
-#: forms_common.py:458 forms_common.py:463 ishtar_menu.py:32
+#: forms_common.py:468 forms_common.py:473 ishtar_menu.py:32
msgid "Account"
msgstr ""
-#: forms_common.py:467 wizards.py:1192
+#: forms_common.py:477 wizards.py:1192
msgid "New password"
msgstr ""
-#: forms_common.py:470
+#: forms_common.py:480
msgid "New password (confirmation)"
msgstr ""
-#: forms_common.py:491
+#: forms_common.py:501
msgid "Your password and confirmation password do not match."
msgstr ""
-#: forms_common.py:496
+#: forms_common.py:506
msgid "You must provide a correct password."
msgstr ""
-#: forms_common.py:504
+#: forms_common.py:514
msgid "This username already exists."
msgstr ""
-#: forms_common.py:511
+#: forms_common.py:521
msgid "Send the new password by email?"
msgstr ""
-#: forms_common.py:520 forms_common.py:533 models.py:2656
+#: forms_common.py:530 forms_common.py:543 models.py:2659
msgid "Towns"
msgstr ""
-#: forms_common.py:530
+#: forms_common.py:540
msgid "There are identical towns."
msgstr ""
-#: forms_common.py:614
+#: forms_common.py:624
msgid "Only one choice can be checked."
msgstr ""
-#: forms_common.py:662
+#: forms_common.py:672
msgid "Documentation informations"
msgstr ""
-#: forms_common.py:667 forms_common.py:715 models.py:1907 models.py:2556
+#: forms_common.py:677 forms_common.py:725 models.py:1909 models.py:2559
msgid "Source type"
msgstr ""
-#: forms_common.py:669 forms_common.py:716 templates/sheet_ope.html:84
+#: forms_common.py:679 forms_common.py:726 templates/sheet_ope.html:84
msgid "Reference"
msgstr ""
-#: forms_common.py:672 forms_common.py:717
+#: forms_common.py:682 forms_common.py:727
msgid "Internal reference"
msgstr ""
-#: forms_common.py:675 models.py:2587
+#: forms_common.py:685 models.py:2590
msgid "Numerical ressource (web address)"
msgstr ""
-#: forms_common.py:676 models.py:2589
+#: forms_common.py:686 models.py:2592
msgid "Receipt date"
msgstr ""
-#: forms_common.py:678 models.py:2060 models.py:2591
+#: forms_common.py:688 models.py:2062 models.py:2594
msgid "Creation date"
msgstr ""
-#: forms_common.py:681 models.py:2594
+#: forms_common.py:691 models.py:2597
msgid "Receipt date in documentation"
msgstr ""
-#: forms_common.py:683 forms_common.py:719 models.py:287 models.py:546
-#: models.py:1801 models.py:2316 models.py:2601
+#: forms_common.py:693 forms_common.py:729 models.py:289 models.py:548
+#: models.py:1803 models.py:2318 models.py:2604
msgid "Comment"
msgstr ""
-#: forms_common.py:685 forms_common.py:718 models.py:945 models.py:1560
-#: models.py:1733 models.py:1775 models.py:2600 templates/sheet_ope.html:128
+#: forms_common.py:695 forms_common.py:728 models.py:947 models.py:1562
+#: models.py:1735 models.py:1777 models.py:2603 templates/sheet_ope.html:128
msgid "Description"
msgstr ""
-#: forms_common.py:688 models.py:2602
+#: forms_common.py:698 models.py:2605
msgid "Additional information"
msgstr ""
-#: forms_common.py:690 forms_common.py:722 models.py:2604
+#: forms_common.py:700 forms_common.py:732 models.py:2607
msgid "Has a duplicate"
msgstr ""
-#: forms_common.py:693
+#: forms_common.py:703
msgid "Image"
msgstr ""
-#: forms_common.py:694
+#: forms_common.py:704
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
"p>"
msgstr ""
-#: forms_common.py:711 forms_common.py:740 forms_common.py:774 models.py:2540
+#: forms_common.py:721 forms_common.py:750 forms_common.py:784 models.py:2543
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr ""
-#: forms_common.py:721
+#: forms_common.py:731
msgid "Additional informations"
msgstr ""
-#: forms_common.py:732
+#: forms_common.py:742
msgid "Would you like to delete this documentation?"
msgstr ""
-#: forms_common.py:748 models.py:1908 models.py:2530 models.py:2537
+#: forms_common.py:758 models.py:1910 models.py:2533 models.py:2540
msgid "Author type"
msgstr ""
-#: forms_common.py:767
+#: forms_common.py:777
msgid "Author selection"
msgstr ""
-#: forms_common.py:781
+#: forms_common.py:791
msgid "There are identical authors."
msgstr ""
-#: forms_common.py:785 models.py:2541 models.py:2583
+#: forms_common.py:795 models.py:2544 models.py:2586
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
@@ -502,7 +492,7 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:39 models.py:1071 views.py:1239
+#: ishtar_menu.py:39 models.py:1073 views.py:1365
msgid "Global variables"
msgstr ""
@@ -526,20 +516,20 @@ msgstr ""
msgid "Merge"
msgstr ""
-#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2097 widgets.py:110
+#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2099 widgets.py:110
#: templates/ishtar/form_delete.html:11
msgid "Delete"
msgstr ""
-#: ishtar_menu.py:101 models.py:2071
+#: ishtar_menu.py:101 models.py:2073
msgid "Imports"
msgstr ""
-#: ishtar_menu.py:104 views.py:1247
+#: ishtar_menu.py:104 views.py:1373
msgid "New import"
msgstr ""
-#: ishtar_menu.py:108 views.py:1261
+#: ishtar_menu.py:108 views.py:1387
msgid "Current imports"
msgstr ""
@@ -559,200 +549,200 @@ msgstr ""
msgid "This item already exists."
msgstr ""
-#: models.py:283 models.py:545 models.py:1310 models.py:1322
+#: models.py:285 models.py:547 models.py:1312 models.py:1324
msgid "Label"
msgstr ""
-#: models.py:285
+#: models.py:287
msgid "Textual ID"
msgstr ""
-#: models.py:288 models.py:548 models.py:1279
+#: models.py:290 models.py:550 models.py:1281
msgid "Available"
msgstr ""
-#: models.py:567 models.py:1847
+#: models.py:569 models.py:1849
msgid "Key"
msgstr ""
-#: models.py:573
+#: models.py:575
msgid "Specific key to an import"
msgstr ""
-#: models.py:664
+#: models.py:666
msgid "Last editor"
msgstr ""
-#: models.py:667
+#: models.py:669
msgid "Creator"
msgstr ""
-#: models.py:807 models.py:2667
+#: models.py:809 models.py:2670
msgid "Order"
msgstr ""
-#: models.py:808
+#: models.py:810
msgid "Symmetrical"
msgstr ""
-#: models.py:809
+#: models.py:811
msgid "Tiny label"
msgstr ""
-#: models.py:823
+#: models.py:825
msgid "Cannot have symmetrical and an inverse_relation"
msgstr ""
-#: models.py:937
+#: models.py:939
msgid "Euro"
msgstr ""
-#: models.py:938
+#: models.py:940
msgid "US dollar"
msgstr ""
-#: models.py:944 models.py:1558
+#: models.py:946 models.py:1560
msgid "Slug"
msgstr ""
-#: models.py:946
+#: models.py:948
msgid "Files module"
msgstr ""
-#: models.py:947
+#: models.py:949
msgid "Context records module"
msgstr ""
-#: models.py:949
+#: models.py:951
msgid "Finds module"
msgstr ""
-#: models.py:950
+#: models.py:952
msgid "Need context records module"
msgstr ""
-#: models.py:952
+#: models.py:954
msgid "Warehouses module"
msgstr ""
-#: models.py:953
+#: models.py:955
msgid "Need finds module"
msgstr ""
-#: models.py:955
+#: models.py:957
msgid "Home page"
msgstr ""
-#: models.py:956
+#: models.py:958
#, python-brace-format
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
"markdown syntax. {random_image} can be used to display a random image."
msgstr ""
-#: models.py:960
+#: models.py:962
msgid "File external id"
msgstr ""
-#: models.py:962
+#: models.py:964
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:967
+#: models.py:969
msgid "Parcel external id"
msgstr ""
-#: models.py:970
+#: models.py:972
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:975
+#: models.py:977
msgid "Context record external id"
msgstr ""
-#: models.py:977
+#: models.py:979
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:982
+#: models.py:984
msgid "Base find external id"
msgstr ""
-#: models.py:984
+#: models.py:986
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:989
+#: models.py:991
msgid "Find external id"
msgstr ""
-#: models.py:991
+#: models.py:993
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:996
+#: models.py:998
msgid "Raw name for person"
msgstr ""
-#: models.py:998
+#: models.py:1000
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:1002
+#: models.py:1004
msgid "Current active"
msgstr ""
-#: models.py:1003
+#: models.py:1005
msgid "Currency"
msgstr ""
-#: models.py:1007
+#: models.py:1009
msgid "Ishtar site profile"
msgstr ""
-#: models.py:1008
+#: models.py:1010
msgid "Ishtar site profiles"
msgstr ""
-#: models.py:1064
+#: models.py:1066
msgid "Variable name"
msgstr ""
-#: models.py:1065
+#: models.py:1067
msgid "Description of the variable"
msgstr ""
-#: models.py:1067 models.py:1848
+#: models.py:1069 models.py:1850
msgid "Value"
msgstr ""
-#: models.py:1070
+#: models.py:1072
msgid "Global variable"
msgstr ""
-#: models.py:1180 models.py:1210
+#: models.py:1182 models.py:1212
msgid "Total"
msgstr ""
-#: models.py:1187 models.py:1311 models.py:1323
+#: models.py:1189 models.py:1313 models.py:1325
#: templates/ishtar/sheet_person.html:22
#: templates/ishtar/dashboards/dashboard_main_detail.html:141
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
@@ -760,589 +750,593 @@ msgstr ""
msgid "Number"
msgstr ""
-#: models.py:1274
+#: models.py:1276
msgid "Administrative Act"
msgstr ""
-#: models.py:1278
+#: models.py:1280
msgid "Associated object"
msgstr ""
-#: models.py:1282
+#: models.py:1284
msgid "Document template"
msgstr ""
-#: models.py:1283
+#: models.py:1285
msgid "Document templates"
msgstr ""
-#: models.py:1314 models.py:1324 models.py:2055
+#: models.py:1316 models.py:1326 models.py:2057
msgid "State"
msgstr ""
-#: models.py:1328 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1330 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr ""
-#: models.py:1329
+#: models.py:1331
msgid "Departments"
msgstr ""
-#: models.py:1366
+#: models.py:1368
msgid "Raw phone"
msgstr ""
-#: models.py:1372
+#: models.py:1374
msgid "Alternative address is prefered"
msgstr ""
-#: models.py:1411
+#: models.py:1413
msgid "Tel: "
msgstr ""
-#: models.py:1415
+#: models.py:1417
msgid "Mobile: "
msgstr ""
-#: models.py:1419
+#: models.py:1421
msgid "Email: "
msgstr ""
-#: models.py:1424
+#: models.py:1426
msgid "Merge key"
msgstr ""
-#: models.py:1498
+#: models.py:1500
msgid "Organization types"
msgstr ""
-#: models.py:1514
+#: models.py:1514 views.py:211
+msgid "Operation"
+msgstr ""
+
+#: models.py:1516
msgid "Archaeological site"
msgstr ""
-#: models.py:1515
+#: models.py:1517
msgid "Parcels"
msgstr ""
-#: models.py:1517
+#: models.py:1519
msgid "Operation source"
msgstr ""
-#: models.py:1520 views.py:1064 views.py:1115
+#: models.py:1522 views.py:1190 views.py:1241
msgid "Archaeological files"
msgstr ""
-#: models.py:1522 views.py:1067 views.py:1123
+#: models.py:1524 views.py:1193 views.py:1249
msgid "Context records"
msgstr ""
-#: models.py:1524
+#: models.py:1526
msgid "Context record relations"
msgstr ""
-#: models.py:1526 views.py:1069 views.py:1126
+#: models.py:1528 views.py:1195 views.py:1252
msgid "Finds"
msgstr ""
-#: models.py:1562 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1564 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr ""
-#: models.py:1564
+#: models.py:1566
msgid "Associated model"
msgstr ""
-#: models.py:1567
+#: models.py:1569
msgid "Is template"
msgstr ""
-#: models.py:1568
+#: models.py:1570
msgid "Unicity keys (separator \";\")"
msgstr ""
-#: models.py:1572
+#: models.py:1574
msgid "Importer - Type"
msgstr ""
-#: models.py:1573
+#: models.py:1575
msgid "Importer - Types"
msgstr ""
-#: models.py:1663
+#: models.py:1665
msgid "Importer - Default"
msgstr ""
-#: models.py:1664
+#: models.py:1666
msgid "Importer - Defaults"
msgstr ""
-#: models.py:1699
+#: models.py:1701
msgid "Importer - Default value"
msgstr ""
-#: models.py:1700
+#: models.py:1702
msgid "Importer - Default values"
msgstr ""
-#: models.py:1732
+#: models.py:1734
msgid "Column number"
msgstr ""
-#: models.py:1735
+#: models.py:1737
msgid "Required"
msgstr ""
-#: models.py:1738
+#: models.py:1740
msgid "Importer - Column"
msgstr ""
-#: models.py:1739
+#: models.py:1741
msgid "Importer - Columns"
msgstr ""
-#: models.py:1759
+#: models.py:1761
msgid "Field name"
msgstr ""
-#: models.py:1761 models.py:1795
+#: models.py:1763 models.py:1797
msgid "Force creation of new items"
msgstr ""
-#: models.py:1763 models.py:1797
+#: models.py:1765 models.py:1799
msgid "Concatenate with existing"
msgstr ""
-#: models.py:1765 models.py:1799
+#: models.py:1767 models.py:1801
msgid "Concatenate character"
msgstr ""
-#: models.py:1769
+#: models.py:1771
msgid "Importer - Duplicate field"
msgstr ""
-#: models.py:1770
+#: models.py:1772
msgid "Importer - Duplicate fields"
msgstr ""
-#: models.py:1777
+#: models.py:1779
msgid "Regular expression"
msgstr ""
-#: models.py:1780
+#: models.py:1782
msgid "Importer - Regular expression"
msgstr ""
-#: models.py:1781
+#: models.py:1783
msgid "Importer - Regular expressions"
msgstr ""
-#: models.py:1804
+#: models.py:1806
msgid "Importer - Target"
msgstr ""
-#: models.py:1805
+#: models.py:1807
msgid "Importer - Targets"
msgstr ""
-#: models.py:1829 views.py:350
+#: models.py:1831 views.py:476
msgid "True"
msgstr ""
-#: models.py:1830 views.py:352
+#: models.py:1832 views.py:478
msgid "False"
msgstr ""
-#: models.py:1849
+#: models.py:1851
msgid "Is set"
msgstr ""
-#: models.py:1856
+#: models.py:1858
msgid "Importer - Target key"
msgstr ""
-#: models.py:1857
+#: models.py:1859
msgid "Importer - Targets keys"
msgstr ""
-#: models.py:1909 models.py:2568 models.py:2579
+#: models.py:1911 models.py:2571 models.py:2582
msgid "Format"
msgstr ""
-#: models.py:1910 models.py:2671
+#: models.py:1912 models.py:2674
msgid "Operation type"
msgstr ""
-#: models.py:1911
+#: models.py:1913
msgid "Period"
msgstr ""
-#: models.py:1912
+#: models.py:1914
msgid "Report state"
msgstr ""
-#: models.py:1913
+#: models.py:1915
msgid "Unit"
msgstr ""
-#: models.py:1914
+#: models.py:1916
msgid "Material"
msgstr ""
-#: models.py:1916
+#: models.py:1918
msgid "Conservatory state"
msgstr ""
-#: models.py:1917
+#: models.py:1919
msgid "Preservation type"
msgstr ""
-#: models.py:1918
+#: models.py:1920
msgid "Object type"
msgstr ""
-#: models.py:1920
+#: models.py:1922
msgid "Identification type"
msgstr ""
-#: models.py:1922
+#: models.py:1924
msgid "Context record relation type"
msgstr ""
-#: models.py:1923 models.py:2562
+#: models.py:1925 models.py:2565
msgid "Support type"
msgstr ""
-#: models.py:1929
+#: models.py:1931
msgid "Integer"
msgstr ""
-#: models.py:1930
+#: models.py:1932
msgid "Float"
msgstr ""
-#: models.py:1931
+#: models.py:1933
msgid "String"
msgstr ""
-#: models.py:1932 templates/sheet_ope.html:86
+#: models.py:1934 templates/sheet_ope.html:86
msgid "Date"
msgstr ""
-#: models.py:1934 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: models.py:1936 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
#: templates/ishtar/dashboards/dashboard_main_detail.html:126
msgid "Year"
msgstr ""
-#: models.py:1935
+#: models.py:1937
msgid "String to boolean"
msgstr ""
-#: models.py:1936
+#: models.py:1938
msgctxt "filesystem"
msgid "File"
msgstr ""
-#: models.py:1937
+#: models.py:1939
msgid "Unknow type"
msgstr ""
-#: models.py:1953
+#: models.py:1955
msgid "4 digit year. e.g.: \"2015\""
msgstr ""
-#: models.py:1954
+#: models.py:1956
msgid "4 digit year/month/day. e.g.: \"2015/02/04\""
msgstr ""
-#: models.py:1955
+#: models.py:1957
msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""
msgstr ""
-#: models.py:1965
+#: models.py:1967
msgid "Options"
msgstr ""
-#: models.py:1967
+#: models.py:1969
msgid "Split character(s)"
msgstr ""
-#: models.py:1971
+#: models.py:1973
msgid "Importer - Formater type"
msgstr ""
-#: models.py:1972
+#: models.py:1974
msgid "Importer - Formater types"
msgstr ""
-#: models.py:2019 templates/ishtar/dashboards/dashboard_main_detail.html:63
+#: models.py:2021 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr ""
-#: models.py:2020
+#: models.py:2022
msgid "Analyse in progress"
msgstr ""
-#: models.py:2021
+#: models.py:2023
msgid "Analysed"
msgstr ""
-#: models.py:2022
+#: models.py:2024
msgid "Import pending"
msgstr ""
-#: models.py:2023
+#: models.py:2025
msgid "Import in progress"
msgstr ""
-#: models.py:2024
+#: models.py:2026
msgid "Finished with errors"
msgstr ""
-#: models.py:2025
+#: models.py:2027
msgid "Finished"
msgstr ""
-#: models.py:2026
+#: models.py:2028
msgid "Archived"
msgstr ""
-#: models.py:2038
+#: models.py:2040
msgid "Imported file"
msgstr ""
-#: models.py:2041
+#: models.py:2043
msgid "Associated images (zip file)"
msgstr ""
-#: models.py:2043
+#: models.py:2045
msgid "Encoding"
msgstr ""
-#: models.py:2045
+#: models.py:2047
msgid "Skip lines"
msgstr ""
-#: models.py:2046 templates/ishtar/import_list.html:47
+#: models.py:2048 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr ""
-#: models.py:2049
+#: models.py:2051
msgid "Result file"
msgstr ""
-#: models.py:2052 templates/ishtar/import_list.html:53
+#: models.py:2054 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr ""
-#: models.py:2058
+#: models.py:2060
msgid "Conservative import"
msgstr ""
-#: models.py:2063
+#: models.py:2065
msgid "End date"
msgstr ""
-#: models.py:2065
+#: models.py:2067
msgid "Remaining seconds"
msgstr ""
-#: models.py:2070
+#: models.py:2072
msgid "Import"
msgstr ""
-#: models.py:2087
+#: models.py:2089
msgid "Analyse"
msgstr ""
-#: models.py:2089 models.py:2092
+#: models.py:2091 models.py:2094
msgid "Re-analyse"
msgstr ""
-#: models.py:2090
+#: models.py:2092
msgid "Launch import"
msgstr ""
-#: models.py:2093
+#: models.py:2095
msgid "Re-import"
msgstr ""
-#: models.py:2094
+#: models.py:2096
msgid "Archive"
msgstr ""
-#: models.py:2096
+#: models.py:2098
msgid "Unarchive"
msgstr ""
-#: models.py:2230
+#: models.py:2232
msgid "Organizations"
msgstr ""
-#: models.py:2232
+#: models.py:2234
msgid "Can view all Organizations"
msgstr ""
-#: models.py:2233
+#: models.py:2235
msgid "Can view own Organization"
msgstr ""
-#: models.py:2234
+#: models.py:2236
msgid "Can add own Organization"
msgstr ""
-#: models.py:2236
+#: models.py:2238
msgid "Can change own Organization"
msgstr ""
-#: models.py:2238
+#: models.py:2240
msgid "Can delete own Organization"
msgstr ""
-#: models.py:2273
+#: models.py:2275
msgid "Groups"
msgstr ""
-#: models.py:2278
+#: models.py:2280
msgid "Person types"
msgstr ""
-#: models.py:2284
+#: models.py:2286
msgid "Title type"
msgstr ""
-#: models.py:2285
+#: models.py:2287
msgid "Title types"
msgstr ""
-#: models.py:2292
+#: models.py:2294
msgid "Mr"
msgstr ""
-#: models.py:2293
+#: models.py:2295
msgid "Miss"
msgstr ""
-#: models.py:2294
+#: models.py:2296
msgid "Mr and Mrs"
msgstr ""
-#: models.py:2295
+#: models.py:2297
msgid "Mrs"
msgstr ""
-#: models.py:2296
+#: models.py:2298
msgid "Doctor"
msgstr ""
-#: models.py:2314
+#: models.py:2316
msgid "Contact type"
msgstr ""
-#: models.py:2317 models.py:2366
+#: models.py:2319 models.py:2368
msgid "Types"
msgstr ""
-#: models.py:2320
+#: models.py:2322
msgid "Is attached to"
msgstr ""
-#: models.py:2325
+#: models.py:2327
msgid "Persons"
msgstr ""
-#: models.py:2327
+#: models.py:2329
msgid "Can view all Persons"
msgstr ""
-#: models.py:2328
+#: models.py:2330
msgid "Can view own Person"
msgstr ""
-#: models.py:2329
+#: models.py:2331
msgid "Can add own Person"
msgstr ""
-#: models.py:2330
+#: models.py:2332
msgid "Can change own Person"
msgstr ""
-#: models.py:2331
+#: models.py:2333
msgid "Can delete own Person"
msgstr ""
-#: models.py:2482
+#: models.py:2484
msgid "Ishtar user"
msgstr ""
-#: models.py:2483
+#: models.py:2485
msgid "Ishtar users"
msgstr ""
-#: models.py:2525
+#: models.py:2528
msgid "To modify the password use the form in Auth > User"
msgstr ""
-#: models.py:2531
+#: models.py:2534
msgid "Author types"
msgstr ""
-#: models.py:2557
+#: models.py:2560
msgid "Source types"
msgstr ""
-#: models.py:2563
+#: models.py:2566
msgid "Support types"
msgstr ""
-#: models.py:2569
+#: models.py:2572
msgid "Formats"
msgstr ""
-#: models.py:2574
+#: models.py:2577
msgid "External ID"
msgstr ""
-#: models.py:2577
+#: models.py:2580
msgid "Support"
msgstr ""
-#: models.py:2581
+#: models.py:2584
msgid "Scale"
msgstr ""
-#: models.py:2595
+#: models.py:2598
msgid "Item number"
msgstr ""
-#: models.py:2596
+#: models.py:2599
msgid "Ref."
msgstr ""
-#: models.py:2599
+#: models.py:2602
msgid "Internal ref."
msgstr ""
-#: models.py:2642
+#: models.py:2645
msgid "Surface (m2)"
msgstr ""
-#: models.py:2643 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2646 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr ""
-#: models.py:2668
+#: models.py:2671
msgid "Is preventive"
msgstr ""
-#: models.py:2672
+#: models.py:2675
msgid "Operation types"
msgstr ""
-#: models.py:2701
+#: models.py:2704
msgid "Preventive"
msgstr ""
-#: models.py:2702
+#: models.py:2705
msgid "Research"
msgstr ""
@@ -1386,28 +1380,40 @@ msgstr ""
msgid "Account deletion"
msgstr ""
-#: views.py:977 views.py:1046
+#: views.py:210
+msgid "Archaeological file"
+msgstr ""
+
+#: views.py:213
+msgid "Context record"
+msgstr ""
+
+#: views.py:215
+msgid "Find"
+msgstr ""
+
+#: views.py:1103 views.py:1172
msgid "Operation not permitted."
msgstr ""
-#: views.py:979
+#: views.py:1105
#, python-format
msgid "New %s"
msgstr ""
-#: views.py:1065 views.py:1119
+#: views.py:1191 views.py:1245
msgid "Operations"
msgstr ""
-#: views.py:1308 templates/ishtar/import_list.html:43
+#: views.py:1434 templates/ishtar/import_list.html:43
msgid "Link unmatched items"
msgstr ""
-#: views.py:1323
+#: views.py:1449
msgid "Delete import"
msgstr ""
-#: views.py:1382 views.py:1398
+#: views.py:1508 views.py:1524
msgid "Corporation manager"
msgstr ""
@@ -1474,29 +1480,29 @@ msgstr ""
msgid "The %(app_name)s team"
msgstr ""
-#: templates/base.html:36
+#: templates/base.html:41
msgid "Logged in"
msgstr ""
-#: templates/base.html:37
+#: templates/base.html:42
msgid "Log out"
msgstr ""
-#: templates/base.html:38
+#: templates/base.html:43
msgid "Change password"
msgstr ""
-#: templates/base.html:40 templates/registration/activate.html:10
+#: templates/base.html:45 templates/registration/activate.html:10
#: templates/registration/login.html:8 templates/registration/login.html:10
#: templates/registration/password_reset_complete.html:8
msgid "Log in"
msgstr ""
-#: templates/base.html:46
+#: templates/base.html:51
msgid "Lang"
msgstr ""
-#: templates/base.html:46 templates/base.html.py:93 templates/welcome.html:8
+#: templates/base.html:51 templates/base.html.py:75 templates/welcome.html:8
#: templates/welcome.html.py:9 templates/welcome.html:10
#: templates/welcome.html.py:11 templates/ishtar/manage_basket.html:4
#: templates/ishtar/blocks/window_field.html:1
@@ -1506,27 +1512,23 @@ msgstr ""
msgid ":"
msgstr ""
-#: templates/base.html:71
-msgid "Default selected items"
-msgstr ""
-
-#: templates/base.html:91
+#: templates/base.html:73
msgid "Current items"
msgstr ""
-#: templates/base.html:125
+#: templates/base.html:107
msgid "Processing..."
msgstr ""
-#: templates/base.html:126
+#: templates/base.html:108
msgid "This can be long."
msgstr ""
-#: templates/base.html:127
+#: templates/base.html:109
msgid "Time to take a coffee?"
msgstr ""
-#: templates/base.html:128
+#: templates/base.html:110
msgid "Time to take another coffee?"
msgstr ""
@@ -2073,6 +2075,17 @@ msgstr ""
msgid "Documents associated to finds"
msgstr ""
+#: templates/ishtar/blocks/shortcut_menu.html:6
+msgid ""
+"Pin an item in order to constrain default searches with this item. By "
+"default only your items are displayed. New created and modified items are "
+"auto-pin."
+msgstr ""
+
+#: templates/ishtar/blocks/shortcut_menu.html:18
+msgid "Unpin"
+msgstr ""
+
#: templates/ishtar/blocks/window_nav.html:6
msgid "Previous version"
msgstr ""
@@ -2095,15 +2108,23 @@ msgstr ""
msgid "Next version"
msgstr ""
-#: templates/ishtar/blocks/window_nav.html:45
+#: templates/ishtar/blocks/window_nav.html:46
+msgid "Item pined in your shortcut menu."
+msgstr ""
+
+#: templates/ishtar/blocks/window_nav.html:46
+msgid "Pin"
+msgstr ""
+
+#: templates/ishtar/blocks/window_nav.html:52
msgid "Export as OpenOffice.org file"
msgstr ""
-#: templates/ishtar/blocks/window_nav.html:45
+#: templates/ishtar/blocks/window_nav.html:52
msgid "Export as PDF file"
msgstr ""
-#: templates/ishtar/blocks/window_nav.html:49
+#: templates/ishtar/blocks/window_nav.html:56
msgid "Relation between items are not historized."
msgstr ""
diff --git a/translations/fr/archaeological_context_records.po b/translations/fr/archaeological_context_records.po
index 6af8693f3..acf3c35a8 100644
--- a/translations/fr/archaeological_context_records.po
+++ b/translations/fr/archaeological_context_records.po
@@ -9,18 +9,18 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-09-08 03:59-0400\n"
+"PO-Revision-Date: 2016-09-09 11:38-0400\n"
"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
"X-Generator: Zanata 3.9.5\n"
-#: forms.py:47 forms.py:51 models.py:130 wizards.py:77
+#: forms.py:47 forms.py:51 models.py:133 wizards.py:77
msgid "Operation"
msgstr "Opération"
-#: forms.py:59 forms.py:137 models.py:132
+#: forms.py:59 forms.py:137 models.py:135
#: templates/ishtar/sheet_contextrecord.html:65
msgid "ID"
msgstr "Identifiant"
@@ -45,7 +45,7 @@ msgstr "Entité Archéologique"
msgid "Search within operation relations"
msgstr "Rechercher parmi les opérations reliées"
-#: forms.py:77 forms.py:230 models.py:49
+#: forms.py:77 forms.py:230 models.py:51
msgid "Period"
msgstr "Période"
@@ -73,41 +73,41 @@ msgstr "Vous devez sélectionner au moins une Unité d'Enregistrement."
msgid "General"
msgstr "Général"
-#: forms.py:136 models.py:118 models.py:128
+#: forms.py:136 models.py:121 models.py:131
#: templates/ishtar/sheet_contextrecord.html:69
msgid "Parcel"
msgstr "Parcelle"
-#: forms.py:139 models.py:133 templates/ishtar/sheet_contextrecord.html:25
+#: forms.py:139 models.py:136 templates/ishtar/sheet_contextrecord.html:25
#: templates/ishtar/sheet_contextrecord.html:68
msgid "Description"
msgstr "Description"
-#: forms.py:141 models.py:134
+#: forms.py:141 models.py:137
msgid "General comment"
msgstr "Commentaire général"
-#: forms.py:143 models.py:138
+#: forms.py:143 models.py:141
msgid "Length (m)"
msgstr "Taille (m)"
-#: forms.py:144 models.py:139
+#: forms.py:144 models.py:142
msgid "Width (m)"
msgstr "Largeur (m)"
-#: forms.py:145 models.py:140
+#: forms.py:145 models.py:143
msgid "Thickness (m)"
msgstr "Épaisseur (m)"
-#: forms.py:146 models.py:142
+#: forms.py:146 models.py:145
msgid "Depth (m)"
msgstr "Profondeur (m)"
-#: forms.py:147 models.py:150
+#: forms.py:147 models.py:153
msgid "Unit"
msgstr "Unité"
-#: forms.py:149 models.py:144
+#: forms.py:149 models.py:147
msgid "Location"
msgstr "Lieu"
@@ -128,27 +128,27 @@ msgstr ""
msgid "This ID already exists for this operation."
msgstr "Cet identifiant existe déjà pour cette opération."
-#: forms.py:225 forms.py:252 models.py:60
+#: forms.py:225 forms.py:252 models.py:62
msgid "Dating"
msgstr "Datation"
-#: forms.py:231 models.py:50
+#: forms.py:231 models.py:52
msgid "Start date"
msgstr "Date de début"
-#: forms.py:232 models.py:51 models.py:137
+#: forms.py:232 models.py:53 models.py:140
msgid "End date"
msgstr "Date de fin"
-#: forms.py:233 models.py:54
+#: forms.py:233 models.py:56
msgid "Quality"
msgstr "Qualité"
-#: forms.py:234 models.py:36 models.py:52
+#: forms.py:234 models.py:38 models.py:54
msgid "Dating type"
msgstr "Type de datation"
-#: forms.py:261 ishtar_menu.py:29 models.py:356
+#: forms.py:261 ishtar_menu.py:29 models.py:373
msgid "Context record"
msgstr "Unité d'Enregistrement"
@@ -156,7 +156,7 @@ msgstr "Unité d'Enregistrement"
msgid "Relations"
msgstr "Relations"
-#: forms.py:286 forms.py:296 models.py:155
+#: forms.py:286 forms.py:296 models.py:158
#: templates/ishtar/sheet_contextrecord.html:37
msgid "Interpretation"
msgstr "Interprétation"
@@ -165,35 +165,35 @@ msgstr "Interprétation"
msgid "Comments on dating"
msgstr "Commentaires sur la datation"
-#: forms.py:292 models.py:152
+#: forms.py:292 models.py:155
msgid "Has furniture?"
msgstr "Contient du mobilier ?"
-#: forms.py:294 models.py:154
+#: forms.py:294 models.py:157
msgid "Filling"
msgstr "Remplissage"
-#: forms.py:298 models.py:175
+#: forms.py:298 models.py:178
msgid "Activity"
msgstr "Activité"
-#: forms.py:300 models.py:173
+#: forms.py:300 models.py:176
msgid "Identification"
msgstr "Identification"
-#: forms.py:302 models.py:158
+#: forms.py:302 models.py:161
msgid "TAQ"
msgstr "TAQ"
-#: forms.py:303 models.py:162
+#: forms.py:303 models.py:165
msgid "Estimated TAQ"
msgstr "TAQ estimé"
-#: forms.py:305 models.py:165
+#: forms.py:305 models.py:168
msgid "TPQ"
msgstr "TPQ"
-#: forms.py:306 models.py:169
+#: forms.py:306 models.py:172
msgid "Estimated TPQ"
msgstr "TPQ estimé"
@@ -265,79 +265,79 @@ msgstr "Documentation"
msgid "Add"
msgstr "Ajout"
-#: models.py:37
+#: models.py:39
msgid "Dating types"
msgstr "Types de datation"
-#: models.py:43
+#: models.py:45
msgid "Dating quality"
msgstr "Qualité de datation"
-#: models.py:44
+#: models.py:46
msgid "Dating qualities"
msgstr "Qualités de datation"
-#: models.py:56
+#: models.py:58
msgid "Precise dating"
msgstr "Datation précise"
-#: models.py:61
+#: models.py:63
msgid "Datings"
msgstr "Datations"
-#: models.py:72 models.py:86 models.py:98
+#: models.py:74 models.py:88 models.py:100
msgid "Order"
msgstr "Ordre"
-#: models.py:73
+#: models.py:75
msgid "Parent unit"
msgstr "Unité parente"
-#: models.py:77
+#: models.py:79
msgid "Unit Type"
msgstr "Type d'unité"
-#: models.py:78
+#: models.py:80
msgid "Unit Types"
msgstr "Types d'unité"
-#: models.py:89
+#: models.py:91
msgid "Activity Type"
msgstr "Type d'activité"
-#: models.py:90
+#: models.py:92
msgid "Activity Types"
msgstr "Types d'activité"
-#: models.py:101
+#: models.py:103
msgid "Identification Type"
msgstr "Type d'identification"
-#: models.py:102
+#: models.py:104
msgid "Identification Types"
msgstr "Types d'identification"
-#: models.py:125
+#: models.py:128
msgid "External ID"
msgstr "ID externe"
-#: models.py:127
+#: models.py:130
msgid "External ID is set automatically"
msgstr "L'identifiant externe est configuré automatiquement"
-#: models.py:135
+#: models.py:138
msgid "Date d'ouverture"
msgstr "Date d'ouverture"
-#: models.py:145
+#: models.py:148
msgid "A short description of the location of the context record"
msgstr "Une courte description de la localisation de l'Unité d'Enregistrement"
-#: models.py:148
+#: models.py:151
msgid "Comment on datings"
msgstr "Commentaire sur les datations"
-#: models.py:159
+#: models.py:162
msgid ""
"\"Terminus Ante Quem\" the context record can't have been created after this "
"date"
@@ -345,11 +345,11 @@ msgstr ""
"« Terminus Ante Quem » l'Unité d'Enregistrement ne peut avoir été créée "
"après cette date"
-#: models.py:163
+#: models.py:166
msgid "Estimation of a \"Terminus Ante Quem\""
msgstr "Estimation d'un « Terminus Ante Quem »"
-#: models.py:166
+#: models.py:169
msgid ""
"\"Terminus Post Quem\" the context record can't have been created before "
"this date"
@@ -357,72 +357,76 @@ msgstr ""
"« Terminus Post Quem » l'Unité d'Enregistrement ne peut avoir été créée "
"avant cette date"
-#: models.py:170
+#: models.py:173
msgid "Estimation of a \"Terminus Post Quem\""
msgstr "Estimation d'un « Terminus Post Quem »"
-#: models.py:178
+#: models.py:181
msgid "Point"
msgstr "Point"
-#: models.py:179
+#: models.py:182
msgid "Polygon"
msgstr "Polygone"
-#: models.py:183 models.py:184 templates/ishtar/sheet_contextrecord.html:4
+#: models.py:183
+msgid "Cached name"
+msgstr "Nom en cache"
+
+#: models.py:187 models.py:188 templates/ishtar/sheet_contextrecord.html:4
msgid "Context Record"
msgstr "Unité d'Enregistrement"
-#: models.py:186
+#: models.py:190
msgid "Can view all Context Records"
msgstr "Peut voir toutes les Unités d'Enregistrement"
-#: models.py:188
+#: models.py:192
msgid "Can view own Context Record"
msgstr "Peut voir sa propre Unité d'Enregistrement"
-#: models.py:190
+#: models.py:194
msgid "Can add own Context Record"
msgstr "Peut ajouter sa propre Unité d'Enregistrement"
-#: models.py:192
+#: models.py:196
msgid "Can change own Context Record"
msgstr "Peut modifier sa propre Unité d'Enregistrement"
-#: models.py:194
+#: models.py:198
msgid "Can delete own Context Record"
msgstr "Peut supprimer sa propre Unité d'Enregistrement"
-#: models.py:203
+#: models.py:208
msgctxt "short"
msgid "Context record"
msgstr "UE"
-#: models.py:322
+#: models.py:339
msgid "Inverse relation"
msgstr "Relation inverse"
-#: models.py:326 templates/ishtar/sheet_contextrecord.html:64
+#: models.py:343 templates/ishtar/sheet_contextrecord.html:64
msgid "Relation type"
msgstr "Type de relation"
-#: models.py:327
+#: models.py:344
msgid "Relation types"
msgstr "Types de relation"
-#: models.py:340
+#: models.py:357
msgid "Record relation"
msgstr "Relation entre Unités d'Enregistrement"
-#: models.py:341
+#: models.py:358
msgid "Record relations"
msgstr "Relations entre Unités d'Enregistrement"
-#: models.py:353
+#: models.py:370
msgid "Context record documentation"
msgstr "Documentation d'une Unité d'Enregistrement"
-#: models.py:354
+#: models.py:371
msgid "Context record documentations"
msgstr "Documentations des Unités d'Enregistrement"
diff --git a/translations/fr/archaeological_files.po b/translations/fr/archaeological_files.po
index 40bb635bb..73861f338 100644
--- a/translations/fr/archaeological_files.po
+++ b/translations/fr/archaeological_files.po
@@ -18,11 +18,11 @@ msgstr ""
"X-Generator: Zanata 3.9.5\n"
#: forms.py:52 forms.py:212 forms.py:257 forms.py:404 forms.py:431
-#: models.py:77 templates/ishtar/sheet_file.html:146
+#: models.py:78 templates/ishtar/sheet_file.html:146
msgid "Year"
msgstr "Année"
-#: forms.py:53 forms.py:217 forms.py:259 models.py:80
+#: forms.py:53 forms.py:217 forms.py:259 models.py:81
msgid "Numeric reference"
msgstr "Référence numérique"
@@ -34,7 +34,7 @@ msgstr "Autre référence"
msgid "Parcel (section/number/public domain)"
msgstr "Parcelle (section/nombre/domaine public)"
-#: forms.py:60 forms.py:415 forms.py:442 models.py:513
+#: forms.py:60 forms.py:415 forms.py:442 models.py:514
msgid "Department"
msgstr "Département"
@@ -42,7 +42,7 @@ msgstr "Département"
msgid "File name"
msgstr "Nom du dossier"
-#: forms.py:62 forms.py:158 forms.py:223 models.py:88
+#: forms.py:62 forms.py:158 forms.py:223 models.py:89
msgid "File type"
msgstr "Type de dossier"
@@ -54,15 +54,15 @@ msgstr "Est actif ?"
msgid "Saisine type"
msgstr "Type de saisine"
-#: forms.py:65 forms.py:311 models.py:58 models.py:119
+#: forms.py:65 forms.py:311 models.py:58 models.py:120
msgid "Permit type"
msgstr "Type de permis"
-#: forms.py:67 forms.py:314 models.py:120
+#: forms.py:67 forms.py:314 models.py:121
msgid "Permit reference"
msgstr "Référence du permis"
-#: forms.py:68 forms.py:229 forms.py:372 models.py:149
+#: forms.py:68 forms.py:229 forms.py:372 models.py:150
#: templates/ishtar/sheet_file.html:99
msgid "Comment"
msgstr "Commentaire"
@@ -71,7 +71,7 @@ msgstr "Commentaire"
msgid "In charge"
msgstr "Responsable"
-#: forms.py:77 forms.py:289 forms.py:453 models.py:95
+#: forms.py:77 forms.py:289 forms.py:453 models.py:96
msgid "General contractor"
msgstr "Aménageur"
@@ -95,11 +95,11 @@ msgstr "Recherche de dossiers archéologiques"
msgid "You should select a file."
msgstr "Vous devez sélectionner un dossier archéologique."
-#: forms.py:146 forms.py:221 models.py:128
+#: forms.py:146 forms.py:221 models.py:129
msgid "Creation date"
msgstr "Date de création"
-#: forms.py:147 forms.py:324 models.py:130
+#: forms.py:147 forms.py:324 models.py:131
msgid "Reception date"
msgstr "Date de réception"
@@ -127,23 +127,23 @@ msgstr "Date avant"
msgid "General"
msgstr "Général"
-#: forms.py:206 models.py:90
+#: forms.py:206 models.py:91
msgid "Person in charge"
msgstr "Responsable"
-#: forms.py:220 models.py:87
+#: forms.py:220 models.py:88
msgid "Name"
msgstr "Nom"
-#: forms.py:225 models.py:132
+#: forms.py:225 models.py:133
msgid "Related file"
msgstr "Dossier associé"
-#: forms.py:233 models.py:140
+#: forms.py:233 models.py:141
msgid "Total surface (m2)"
msgstr "Surface totale (m2)"
-#: forms.py:236 models.py:146
+#: forms.py:236 models.py:147
msgid "Main address"
msgstr "Adresse des terrains"
@@ -164,11 +164,11 @@ msgstr "Un autre dossier avec cet identifiant numérique existe."
msgid "Preventive informations"
msgstr "Information archéologie préventive"
-#: forms.py:301 models.py:107
+#: forms.py:301 models.py:108
msgid "Responsible for town planning service"
msgstr "Responsable au service instructeur"
-#: forms.py:317 models.py:143
+#: forms.py:317 models.py:144
msgid "Total developed surface (m2)"
msgstr "Surface totale aménagée (m2)"
@@ -177,15 +177,15 @@ msgstr "Surface totale aménagée (m2)"
msgid "Research archaeology"
msgstr "Archéologie programmée"
-#: forms.py:348 models.py:152 templates/ishtar/sheet_file.html:90
+#: forms.py:348 models.py:153 templates/ishtar/sheet_file.html:90
msgid "Departments"
msgstr "Départements"
-#: forms.py:359 models.py:161
+#: forms.py:359 models.py:162
msgid "Scientist in charge"
msgstr "Responsable scientifique"
-#: forms.py:361 models.py:155 templates/ishtar/sheet_file.html:92
+#: forms.py:361 models.py:156 templates/ishtar/sheet_file.html:92
msgid "Requested operation type"
msgstr "Type d'opération demandée"
@@ -193,11 +193,11 @@ msgstr "Type d'opération demandée"
msgid "Lead organization"
msgstr "Organisation porteuse du projet"
-#: forms.py:379 models.py:165 templates/ishtar/sheet_file.html:97
+#: forms.py:379 models.py:166 templates/ishtar/sheet_file.html:97
msgid "Classified area"
msgstr "Au sein d'un site classé"
-#: forms.py:381 models.py:167 templates/ishtar/sheet_file.html:98
+#: forms.py:381 models.py:168 templates/ishtar/sheet_file.html:98
msgid "Protected area"
msgstr "Au sein d'un secteur sauvegardé"
@@ -257,7 +257,7 @@ msgstr "Dossier : responsable"
msgid "File permit reference"
msgstr "Dossier : réf. du permis"
-#: ishtar_menu.py:33 models.py:189 templates/ishtar/sheet_file.html:4
+#: ishtar_menu.py:33 models.py:190 templates/ishtar/sheet_file.html:4
msgid "Archaeological file"
msgstr "Dossier"
@@ -301,7 +301,7 @@ msgstr "Tableau de bord"
msgid "General informations"
msgstr "Informations générales"
-#: ishtar_menu.py:87 models.py:190
+#: ishtar_menu.py:87 models.py:191
#: templates/ishtar/dashboards/dashboard_file.html:8
msgid "Archaeological files"
msgstr "Dossiers archéologiques"
@@ -322,111 +322,111 @@ msgstr "Types de permis"
msgid "Delay (in days)"
msgstr "Délai (en jours)"
-#: models.py:81
+#: models.py:82
msgid "Internal reference"
msgstr "Référence interne"
-#: models.py:83
+#: models.py:84
msgid "External ID"
msgstr "ID externe"
-#: models.py:86
+#: models.py:87
msgid "External ID is set automatically"
msgstr "L'identifiant externe est configuré automatiquement"
-#: models.py:98
+#: models.py:99
msgid "General contractor (raw)"
msgstr "Aménageur (brut)"
-#: models.py:102
+#: models.py:103
msgid "General contractor organization"
msgstr "Organisation de l'aménageur"
-#: models.py:110
+#: models.py:111
msgid "Town planning service (raw)"
msgstr "Service instructeur (brut)"
-#: models.py:116
+#: models.py:117
msgid "Town planning service organization"
msgstr "Service instructeur"
-#: models.py:122
+#: models.py:123
msgid "Closing date"
msgstr "Date de clôture"
-#: models.py:123
+#: models.py:124
msgid "Town"
msgstr "Commune"
-#: models.py:125
+#: models.py:126
msgid "Towns"
msgstr "Communes"
-#: models.py:138
+#: models.py:139
msgid "Instruction deadline"
msgstr "Date limite d'instruction"
-#: models.py:144
+#: models.py:145
msgid "Locality"
msgstr "Lieu-dit"
-#: models.py:147
+#: models.py:148
msgid "Main address - postal code"
msgstr "Adresse des terrains - code postal"
-#: models.py:157 templates/ishtar/sheet_file.html:93
+#: models.py:158 templates/ishtar/sheet_file.html:93
msgid "Organization"
msgstr "Organisation"
-#: models.py:162
+#: models.py:163
msgid "Research archaeology comment"
msgstr "Commentaire archéologie programmée"
-#: models.py:176
+#: models.py:177
msgid "Cached name"
msgstr "Nom en cache"
-#: models.py:177
+#: models.py:178
msgid "Imported line"
msgstr "Ligne importée"
-#: models.py:192
+#: models.py:193
msgid "Can view all Archaelogical files"
msgstr "Peut voir tous les Dossiers"
-#: models.py:193
+#: models.py:194
msgid "Can view own Archaelogical file"
msgstr "Peut voir son propre Dossier"
-#: models.py:194
+#: models.py:195
msgid "Can add own Archaelogical file"
msgstr "Peut ajouter son propre Dossier"
-#: models.py:196
+#: models.py:197
msgid "Can change own Archaelogical file"
msgstr "Peut modifier son propre Dossier"
-#: models.py:198
+#: models.py:199
msgid "Can delete own Archaelogical file"
msgstr "Peut supprimer son propre Dossier"
-#: models.py:199
+#: models.py:200
msgid "Can close File"
msgstr "Peut fermer un Dossier"
-#: models.py:205
+#: models.py:206
msgid "FILE"
msgstr "DOSSIER"
-#: models.py:374
+#: models.py:375
msgid "Multi-town"
msgstr "Intercommunal"
-#: models.py:380
+#: models.py:381
msgid "No town"
msgstr "Pas de commune"
-#: models.py:512
+#: models.py:513
msgid "File"
msgstr "Dossier"
diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po
index f757eeb4c..c3528997c 100644
--- a/translations/fr/archaeological_finds.po
+++ b/translations/fr/archaeological_finds.po
@@ -10,7 +10,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-08-25 07:45-0400\n"
+"PO-Revision-Date: 2016-09-09 11:38-0400\n"
"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"
"Language-Team: \n"
"Language: fr\n"
@@ -21,113 +21,113 @@ msgstr ""
msgid "Context record"
msgstr "Unité d'Enregistrement"
-#: forms.py:83 ishtar_menu.py:31 models.py:382 models.py:647 models.py:745
-#: models.py:889 templates/ishtar/sheet_find.html:5
+#: forms.py:83 ishtar_menu.py:31 models.py:386 models.py:670 models.py:768
+#: models.py:912 templates/ishtar/sheet_find.html:5
msgid "Find"
msgstr "Mobilier"
-#: forms.py:94 forms.py:218 forms.py:422 models.py:113 models.py:321
+#: forms.py:94 forms.py:218 forms.py:422 models.py:115 models.py:324
msgid "Free ID"
msgstr "ID libre"
-#: forms.py:96 models.py:369
+#: forms.py:96 models.py:372
msgid "Previous ID"
msgstr "Identifiant précédent"
-#: forms.py:97 forms.py:247 forms.py:588 models.py:117 models.py:322
-#: models.py:679
+#: forms.py:97 forms.py:247 forms.py:588 models.py:119 models.py:325
+#: models.py:702
msgid "Description"
msgstr "Description"
-#: forms.py:100 forms.py:249 models.py:128
+#: forms.py:100 forms.py:249 models.py:130
msgid "Batch/object"
msgstr "Lot/objet"
-#: forms.py:102 models.py:350
+#: forms.py:102 models.py:353
msgid "Is complete?"
msgstr "Est complet ?"
-#: forms.py:105 forms.py:238 forms.py:426 models.py:48
+#: forms.py:105 forms.py:238 forms.py:426 models.py:50
msgid "Material type"
msgstr "Type de matériau"
-#: forms.py:106 forms.py:242 models.py:58 models.py:326
+#: forms.py:106 forms.py:242 models.py:60 models.py:329
msgid "Conservatory state"
msgstr "État sanitaire"
-#: forms.py:109 models.py:328
+#: forms.py:109 models.py:331
msgid "Conservatory comment"
msgstr "Commentaire relatif à la conservation"
-#: forms.py:112 models.py:90 models.py:353
+#: forms.py:112 models.py:92 models.py:356
msgid "Object types"
msgstr "Types d'objet"
-#: forms.py:114 forms.py:241 models.py:65
+#: forms.py:114 forms.py:241 models.py:67
msgid "Preservation type"
msgstr "Type de conservation"
-#: forms.py:117 forms.py:244 models.py:355
+#: forms.py:117 forms.py:244 models.py:358
msgid "Integrity"
msgstr "Intégrité"
-#: forms.py:120 forms.py:245 models.py:357
+#: forms.py:120 forms.py:245 models.py:360
msgid "Remarkability"
msgstr "Remarquabilité"
-#: forms.py:122 models.py:359
+#: forms.py:122 models.py:362
msgid "Length (cm)"
msgstr "Longueur (cm)"
-#: forms.py:123 models.py:360
+#: forms.py:123 models.py:363
msgid "Width (cm)"
msgstr "Largeur (cm)"
-#: forms.py:124 models.py:361
+#: forms.py:124 models.py:364
msgid "Height (cm)"
msgstr "Hauteur (cm)"
-#: forms.py:125 models.py:362
+#: forms.py:125 models.py:365
msgid "Diameter (cm)"
msgstr "Diamètre (cm)"
-#: forms.py:126 forms.py:427 models.py:333
+#: forms.py:126 forms.py:427 models.py:336
msgid "Volume (l)"
msgstr "Volume (l)"
-#: forms.py:127 forms.py:428 models.py:334
+#: forms.py:127 forms.py:428 models.py:337
msgid "Weight (g)"
msgstr "Poids (g)"
-#: forms.py:129 models.py:363
+#: forms.py:129 models.py:366
msgid "Dimensions comment"
msgstr "Commentaire concernant les dimensions"
-#: forms.py:130 forms.py:429 models.py:337
+#: forms.py:130 forms.py:429 models.py:340
msgid "Find number"
msgstr "Mobilier (en nombre)"
-#: forms.py:131 models.py:365
+#: forms.py:131 models.py:368
msgid "Mark"
msgstr "Marque"
-#: forms.py:132 forms.py:251 models.py:371
+#: forms.py:132 forms.py:251 models.py:374
msgid "Check"
msgstr "Vérification"
-#: forms.py:134 models.py:373
+#: forms.py:134 models.py:376
msgid "Check date"
msgstr "Date de vérification"
-#: forms.py:135 models.py:118 models.py:366 models.py:680
+#: forms.py:135 models.py:120 models.py:369 models.py:703
msgid "Comment"
msgstr "Commentaires"
-#: forms.py:138 models.py:367
+#: forms.py:138 models.py:370
msgid "Comment on dating"
msgstr "Commentaire général sur les datations"
-#: forms.py:139 models.py:375
+#: forms.py:139 models.py:378
msgid "Estimated value"
msgstr "Valeur estimée"
@@ -144,7 +144,7 @@ msgstr ""
"<p>Les images trop grandes sont retaillées en : %(width)dx%(height)d (le "
"ratio est conservé).</p>"
-#: forms.py:181 forms.py:212 models.py:345
+#: forms.py:181 forms.py:212 models.py:348
msgid "Dating"
msgstr "Datation"
@@ -152,12 +152,12 @@ msgstr "Datation"
msgid "Period"
msgstr "Période"
-#: forms.py:187 forms.py:590 models.py:693 models.py:758 models.py:894
+#: forms.py:187 forms.py:590 models.py:716 models.py:781 models.py:917
#: templates/ishtar/sheet_find.html:85 templates/ishtar/sheet_find.html:114
msgid "Start date"
msgstr "Date de début"
-#: forms.py:189 forms.py:592 models.py:694 models.py:759 models.py:895
+#: forms.py:189 forms.py:592 models.py:717 models.py:782 models.py:918
#: templates/ishtar/sheet_find.html:86 templates/ishtar/sheet_find.html:115
msgid "End date"
msgstr "Date de fin"
@@ -174,11 +174,11 @@ msgstr "Type de datation"
msgid "Precise dating"
msgstr "Datation précise"
-#: forms.py:216 models.py:136
+#: forms.py:216 models.py:138
msgid "Short ID"
msgstr "ID court"
-#: forms.py:217 models.py:139
+#: forms.py:217 models.py:141
msgid "Complete ID"
msgstr "ID complet"
@@ -198,7 +198,7 @@ msgstr "Entité Archéologique"
msgid "Search within operation relations"
msgstr "Rechercher parmi les opérations reliées"
-#: forms.py:239 models.py:89
+#: forms.py:239 models.py:91
msgid "Object type"
msgstr "Type d'objet"
@@ -214,7 +214,7 @@ msgstr "Recherche de mobilier"
msgid "Upstream finds"
msgstr "Mobilier amont"
-#: forms.py:323 models.py:383
+#: forms.py:323 models.py:387
msgid "Finds"
msgstr "Mobilier"
@@ -290,16 +290,16 @@ msgstr "Panier"
msgid "Base treatment"
msgstr "Traitement de base"
-#: forms.py:575 models.py:669 models.py:682 models.py:757
+#: forms.py:575 models.py:692 models.py:705 models.py:780
msgid "Treatment type"
msgstr "Type de traitement"
-#: forms.py:577 models.py:691 models.py:762
+#: forms.py:577 models.py:714 models.py:785
#: templates/ishtar/sheet_find.html:83 templates/ishtar/sheet_find.html:112
msgid "Doer"
msgstr "Opérateur"
-#: forms.py:583 models.py:684 models.py:760
+#: forms.py:583 models.py:707 models.py:783
msgid "Location"
msgstr "Lieu"
@@ -339,343 +339,347 @@ msgstr "Gérer les éléments"
msgid "Documentation"
msgstr "Documentation"
-#: models.py:41
+#: models.py:43
msgid "Code"
msgstr "Code"
-#: models.py:42
+#: models.py:44
msgid "Recommendation"
msgstr "Recommandation"
-#: models.py:45
+#: models.py:47
msgid "Parent material"
msgstr "Matériau parent"
-#: models.py:49 models.py:324
+#: models.py:51 models.py:327
msgid "Material types"
msgstr "Types de matériau"
-#: models.py:55
+#: models.py:57
msgid "Parent conservatory state"
msgstr "État sanitaire - parent"
-#: models.py:59
+#: models.py:61
msgid "Conservatory states"
msgstr "États sanitaires"
-#: models.py:66
+#: models.py:68
msgid "Preservation types"
msgstr "Types de conservation"
-#: models.py:72
+#: models.py:74
msgid "Integrity type"
msgstr "Type d'intégrité"
-#: models.py:73
+#: models.py:75
msgid "Integrity types"
msgstr "Types d'intégrité"
-#: models.py:79
+#: models.py:81
msgid "Remarkability type"
msgstr "Type de remarquabilité"
-#: models.py:80
+#: models.py:82
msgid "Remarkability types"
msgstr "Types de remarquabilité"
-#: models.py:86
+#: models.py:88
msgid "Parent"
msgstr "Parent"
-#: models.py:105
+#: models.py:107
msgid "Unknow"
msgstr "Inconnu"
-#: models.py:106
+#: models.py:108
msgid "Object"
msgstr "Objet"
-#: models.py:107
+#: models.py:109
msgid "Batch"
msgstr "Lot"
-#: models.py:114 models.py:317 models.py:675
+#: models.py:116 models.py:320 models.py:698
msgid "External ID"
msgstr "ID externe"
-#: models.py:116 models.py:319
+#: models.py:118 models.py:322
msgid "External ID is set automatically"
msgstr "L'identifiant externe est configuré automatiquement"
-#: models.py:120
+#: models.py:122
msgid "Topographic localisation"
msgstr "Localisation topogaphique"
-#: models.py:121
+#: models.py:123
msgid "Special interest"
msgstr "Intérêt spécifique"
-#: models.py:125
+#: models.py:127
msgid "Context Record"
msgstr "Unité d'Enregistrement"
-#: models.py:126
+#: models.py:128
msgid "Discovery date"
msgstr "Date de découverte"
-#: models.py:131
+#: models.py:133
msgid "Material index"
msgstr "Index matériel"
-#: models.py:132
+#: models.py:134
msgid "Point"
msgstr "Point"
-#: models.py:133
+#: models.py:135
msgid "Line"
msgstr "Ligne"
-#: models.py:134
+#: models.py:136
msgid "Polygon"
msgstr "Polygon"
-#: models.py:137 models.py:140
+#: models.py:139 models.py:142
msgid "Cached value - do not edit"
msgstr "Valeur en cache - ne pas éditer"
-#: models.py:145 models.py:315
+#: models.py:147 models.py:318
msgid "Base find"
msgstr "Mobilier de base"
-#: models.py:146
+#: models.py:148
msgid "Base finds"
msgstr "Mobilier de base"
-#: models.py:148
+#: models.py:150
msgid "Can view all Base finds"
msgstr "Peut voir tout le Mobilier de base"
-#: models.py:149
+#: models.py:151
msgid "Can view own Base find"
msgstr "Peut voir son propre Mobilier de base"
-#: models.py:150
+#: models.py:152
msgid "Can add own Base find"
msgstr "Peut ajouter son propre Mobilier de base"
-#: models.py:151
+#: models.py:153
msgid "Can change own Base find"
msgstr "Peut modifier son propre Mobilier de base"
-#: models.py:152
+#: models.py:154
msgid "Can delete own Base find"
msgstr "Peut supprimer son propre Mobilier de base"
-#: models.py:261
+#: models.py:263
msgid "g"
msgstr "g"
-#: models.py:262
+#: models.py:264
msgid "kg"
msgstr "kg"
-#: models.py:264
+#: models.py:266
msgid "Not checked"
msgstr "Non vérifié"
-#: models.py:265
+#: models.py:267
msgid "Checked but incorrect"
msgstr "Vérifié mais incorrect"
-#: models.py:266
+#: models.py:268
msgid "Checked and correct"
msgstr "Vérifié et correct"
-#: models.py:305
+#: models.py:308
msgid "Base find - Short ID"
msgstr "Mobilier de base - ID court"
-#: models.py:306
+#: models.py:309
msgid "Base find - Complete ID"
msgstr "Mobilier de base - ID complet"
-#: models.py:307
+#: models.py:310
msgid "Base find - Comment"
msgstr "Mobilier de base - Commentaires"
-#: models.py:308
+#: models.py:311
msgid "Base find - Description"
msgstr "Mobilier de base - Description"
-#: models.py:309
+#: models.py:312
msgid "Base find - Topographic localisation"
msgstr "Mobilier de base - Localisation topographique"
-#: models.py:311
+#: models.py:314
msgid "Base find - Special interest"
msgstr "Mobilier de base - Intérêt spécifique"
-#: models.py:312
+#: models.py:315
msgid "Base find - Discovery date"
msgstr "Mobilier de base - Date de découverte"
-#: models.py:320 models.py:751
+#: models.py:323 models.py:774
msgid "Order"
msgstr "Ordre"
-#: models.py:331
+#: models.py:334
msgid "Type of preservation to consider"
msgstr "Mesures de conservation à envisager"
-#: models.py:335
+#: models.py:338
msgid "Weight unit"
msgstr "Unité de poids"
-#: models.py:341 templates/ishtar/sheet_find.html:76
+#: models.py:344 templates/ishtar/sheet_find.html:76
msgid "Upstream treatment"
msgstr "Traitement amont"
-#: models.py:344 templates/ishtar/sheet_find.html:105
+#: models.py:347 templates/ishtar/sheet_find.html:105
msgid "Downstream treatment"
msgstr "Traitement aval"
-#: models.py:348 models.py:677 models.py:761
+#: models.py:351 models.py:700 models.py:784
#: templates/ishtar/sheet_find.html:84 templates/ishtar/sheet_find.html:113
msgid "Container"
msgstr "Contenant"
-#: models.py:385
+#: models.py:380
+msgid "Cached name"
+msgstr "Nom en cache"
+
+#: models.py:389
msgid "Can view all Finds"
msgstr "Peut voir tout le Mobilier"
-#: models.py:386
+#: models.py:390
msgid "Can view own Find"
msgstr "Peut voir son propre Mobilier"
-#: models.py:387
+#: models.py:391
msgid "Can add own Find"
msgstr "Peut ajouter son propre Mobilier"
-#: models.py:388
+#: models.py:392
msgid "Can change own Find"
msgstr "Peut modifier son propre Mobilier"
-#: models.py:389
+#: models.py:393
msgid "Can delete own Find"
msgstr "Peut supprimer son propre Mobilier"
-#: models.py:394
+#: models.py:399
msgid "FIND"
msgstr "MOBILIER"
-#: models.py:645
+#: models.py:668
msgid "Find documentation"
msgstr "Documentation de mobilier"
-#: models.py:646
+#: models.py:669
msgid "Find documentations"
msgstr "Documentations de mobilier"
-#: models.py:656
+#: models.py:679
msgid "Virtual"
msgstr "Virtuel"
-#: models.py:658
+#: models.py:681
msgid "Upstream is many"
msgstr "Les éléments amonts sont multiple"
-#: models.py:660
+#: models.py:683
msgid "Check this if for this treatment from many finds you'll get one."
msgstr ""
"Cochez cela si pour ce traitement depuis plusieurs éléments vous en obtenez "
"un."
-#: models.py:663
+#: models.py:686
msgid "Downstream is many"
msgstr "Les éléments avals sont multiple"
-#: models.py:665
+#: models.py:688
msgid "Check this if for this treatment from one find you'll get many."
msgstr ""
"Cochez cela si pour ce traitement depuis un élément vous en obtenez "
"plusieurs."
-#: models.py:670
+#: models.py:693
msgid "Treatment types"
msgstr "Types de traitement"
-#: models.py:686
+#: models.py:709
msgid "Location where the treatment is done. Target warehouse for a move."
msgstr ""
"Endroit où le traitement est réalisé. Renseignez le dépôt de destination "
"pour un déplacement."
-#: models.py:688
+#: models.py:711
msgid "Other location"
msgstr "Autre lieu"
-#: models.py:698 models.py:747 models.py:881
+#: models.py:721 models.py:770 models.py:904
msgid "Treatment"
msgstr "Traitement"
-#: models.py:699 templates/ishtar/sheet_find.html:73
+#: models.py:722 templates/ishtar/sheet_find.html:73
msgid "Treatments"
msgstr "Traitements"
-#: models.py:701
+#: models.py:724
msgid "Can view all Treatments"
msgstr "Peut voir tous les Traitements"
-#: models.py:702
+#: models.py:725
msgid "Can view own Treatment"
msgstr "Peut voir son propre Traitement"
-#: models.py:703
+#: models.py:726
msgid "Can add own Treatment"
msgstr "Peut ajouter son propre Traitement"
-#: models.py:704
+#: models.py:727
msgid "Can change own Treatment"
msgstr "Peut modifier son propre Traitement"
-#: models.py:705
+#: models.py:728
msgid "Can delete own Treatment"
msgstr "Peut supprimer son propre Traitement"
-#: models.py:711
+#: models.py:734
msgid "by"
msgstr "par"
-#: models.py:763 models.py:764 templates/ishtar/sheet_find.html:82
+#: models.py:786 models.py:787 templates/ishtar/sheet_find.html:82
#: templates/ishtar/sheet_find.html:111
msgid "Related finds"
msgstr "Mobilier associé"
-#: models.py:867
+#: models.py:890
msgid "Is upstream"
msgstr "Est amont"
-#: models.py:878
+#: models.py:901
msgid "Treatment documentation"
msgstr "Documentation d'un traitement"
-#: models.py:879
+#: models.py:902
msgid "Treament documentations"
msgstr "Documentations des traitements"
-#: models.py:891
+#: models.py:914
msgid "Administrative act"
msgstr "Acte administratif"
-#: models.py:892
+#: models.py:915
msgid "Person"
msgstr "Individu"
-#: models.py:898
+#: models.py:921
msgid "Property"
msgstr "Propriété"
-#: models.py:899
+#: models.py:922
msgid "Properties"
msgstr "Propriétés"
diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po
index 257f5e095..8fd075bb2 100644
--- a/translations/fr/archaeological_operations.po
+++ b/translations/fr/archaeological_operations.po
@@ -10,19 +10,20 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-09-06 09:45-0400\n"
+"PO-Revision-Date: 2016-09-09 11:44-0400\n"
"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
"X-Generator: Zanata 3.9.5\n"
-#: forms.py:67 forms.py:369 forms.py:964 forms.py:986 forms.py:990
-#: models.py:1010 templates/ishtar/blocks/window_tables/parcels.html:10
+#: forms.py:67 forms.py:369 forms.py:999 forms.py:1021 forms.py:1025
+#: models.py:1035 templates/ishtar/sheet_operation.html:138
+#: templates/ishtar/blocks/window_tables/parcels.html:10
msgid "Parcels"
msgstr "Parcelles"
-#: forms.py:70 forms.py:203 forms.py:940 models.py:996
+#: forms.py:70 forms.py:203 forms.py:975 models.py:1021
#: templates/ishtar/blocks/window_tables/parcels.html:7
#: templates/ishtar/dashboards/dashboard_operation.html:432
#: templates/ishtar/dashboards/dashboard_operation.html:446
@@ -31,22 +32,22 @@ msgstr "Parcelles"
msgid "Town"
msgstr "Commune"
-#: forms.py:72 forms.py:459 forms.py:734 forms.py:1210 models.py:196
-#: models.py:813 models.py:994
+#: forms.py:72 forms.py:459 forms.py:753 forms.py:1245 models.py:197
+#: models.py:838 models.py:1019
#: templates/ishtar/blocks/window_tables/parcels.html:8
msgid "Year"
msgstr "Année"
-#: forms.py:75 models.py:997
+#: forms.py:75 models.py:1022
#: templates/ishtar/blocks/window_tables/parcels.html:9
msgid "Section"
msgstr "Section"
-#: forms.py:78 models.py:999
+#: forms.py:78 models.py:1024
msgid "Parcel number"
msgstr "Numéro de parcelle"
-#: forms.py:80 models.py:1001 models.py:1018 models.py:1067
+#: forms.py:80 models.py:1026 models.py:1043 models.py:1092
msgid "Public domain"
msgstr "Domaine public"
@@ -54,11 +55,15 @@ msgstr "Domaine public"
msgid "Town section is required."
msgstr "Vous devez renseigner le secteur."
-#: forms.py:168
+#: forms.py:160
+msgid "public domain"
+msgstr "domaine public"
+
+#: forms.py:167
msgid "Current parcels"
msgstr "Parcelles actuelles"
-#: forms.py:170
+#: forms.py:169
msgid "Deleted parcels"
msgstr "Parcelles supprimées"
@@ -78,8 +83,8 @@ msgstr "Il y a des parcelles identiques."
msgid "Relation type"
msgstr "Type de relation"
-#: forms.py:381 ishtar_menu.py:30 models.py:278 models.py:713 models.py:738
-#: models.py:754 models.py:805 models.py:993 wizards.py:338 wizards.py:349
+#: forms.py:381 ishtar_menu.py:30 models.py:289 models.py:738 models.py:763
+#: models.py:779 models.py:830 models.py:1018 wizards.py:339 wizards.py:350
#: templates/ishtar/sheet_operation.html:4
msgid "Operation"
msgstr "Opération"
@@ -88,7 +93,7 @@ msgstr "Opération"
msgid ":"
msgstr ": "
-#: forms.py:409 forms.py:587 forms.py:1175
+#: forms.py:409 forms.py:606 forms.py:1210
msgid "You should select an operation."
msgstr "Vous devez sélectionner une opération."
@@ -104,19 +109,19 @@ msgstr "Relations actuelles"
msgid "Deleted relations"
msgstr "Relations supprimées"
-#: forms.py:449 templates/ishtar/sheet_operation.html:78
+#: forms.py:449 templates/ishtar/sheet_operation.html:82
msgid "Relations"
msgstr "Relations"
-#: forms.py:460 forms.py:1181
+#: forms.py:460 forms.py:1216 models.py:198
msgid "Numeric reference"
msgstr "Identifiant numérique"
-#: forms.py:466 forms.py:1221
+#: forms.py:466 forms.py:1256
msgid "Parcel (section/number/public domain)"
msgstr "Parcelle (section/nombre/domaine public)"
-#: forms.py:469 forms.py:1224 models.py:714
+#: forms.py:469 forms.py:1259 models.py:739
#: templates/ishtar/dashboards/dashboard_operation.html:390
#: templates/ishtar/dashboards/dashboard_operation.html:411
#: templates/ishtar/dashboards/dashboard_operation.html:643
@@ -124,12 +129,12 @@ msgstr "Parcelle (section/nombre/domaine public)"
msgid "Department"
msgstr "Département"
-#: forms.py:470 forms.py:1052 models.py:79
+#: forms.py:470 forms.py:1087 models.py:79
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8
msgid "Name"
msgstr "Nom"
-#: forms.py:472 forms.py:654 forms.py:732 forms.py:1187 models.py:204
+#: forms.py:472 forms.py:673 forms.py:751 forms.py:1222 models.py:205
msgid "Operation type"
msgstr "Type d'opération"
@@ -137,24 +142,24 @@ msgstr "Type d'opération"
msgid "Is open?"
msgstr "Est ouvert ?"
-#: forms.py:483 forms.py:761 models.py:193
+#: forms.py:483 forms.py:780 models.py:194
msgid "In charge"
msgstr "Responsable"
-#: forms.py:490 models.py:799
+#: forms.py:490 models.py:824
msgid "Scientist in charge"
msgstr "Responsable scientifique"
-#: forms.py:492 forms.py:656 forms.py:752 models.py:191
+#: forms.py:492 forms.py:675 forms.py:771 models.py:192
msgid "Operator"
msgstr "Opérateur"
-#: forms.py:499 forms.py:1057 models.py:83 models.py:206
+#: forms.py:499 forms.py:1092 models.py:83 models.py:207
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:10
msgid "Remains"
msgstr "Vestiges"
-#: forms.py:500 forms.py:1035 forms.py:1054 models.py:81 models.py:211
+#: forms.py:500 forms.py:1070 forms.py:1089 models.py:81 models.py:212
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9
msgid "Periods"
msgstr "Périodes"
@@ -179,7 +184,7 @@ msgstr "Terminé après"
msgid "Search within relations"
msgstr "Recherche parmi les relations"
-#: forms.py:512 forms.py:800 models.py:257
+#: forms.py:512 forms.py:830 models.py:258
msgid "Comment"
msgstr "Commentaire"
@@ -187,148 +192,180 @@ msgstr "Commentaire"
msgid "Abstract (full text search)"
msgstr "Résumé (recherche texte intégral)"
-#: forms.py:514 forms.py:802 models.py:269
+#: forms.py:514 forms.py:832 models.py:270
msgid "Record quality"
msgstr "Qualité d'enregistrement"
-#: forms.py:515 forms.py:784 models.py:223
+#: forms.py:515 forms.py:803 models.py:224
msgid "Report processing"
msgstr "Traitement du rapport"
-#: forms.py:517 forms.py:805 models.py:264
+#: forms.py:517 forms.py:835 models.py:265
msgid "Virtual operation"
msgstr "Opération virtuelle"
-#: forms.py:519 forms.py:1101
+#: forms.py:519 forms.py:1136
msgid "Archaelogical site"
msgstr "Entité Archéologique"
-#: forms.py:525 forms.py:1228
+#: forms.py:525 forms.py:1263
msgid "Created by"
msgstr "Créé par"
-#: forms.py:531 forms.py:1234
+#: forms.py:531 forms.py:1269
msgid "Modified by"
msgstr "Modifié par"
-#: forms.py:574 forms.py:1173 views.py:247
+#: forms.py:538
+msgid "Documentation deadline before"
+msgstr "Date limite de rendu de la documentation avant"
+
+#: forms.py:540
+msgid "Documentation deadline after"
+msgstr "Date limite de rendu de la documentation après"
+
+#: forms.py:542 forms.py:823 models.py:277
+msgid "Documentation received"
+msgstr "Documentation reçue"
+
+#: forms.py:544
+msgid "Finds deadline before"
+msgstr "Date limite de rendu du mobilier avant"
+
+#: forms.py:546
+msgid "Finds deadline after"
+msgstr "Date limite de rendu du mobilier après"
+
+#: forms.py:548 forms.py:828 models.py:281
+msgid "Finds received"
+msgstr "Mobilier reçu"
+
+#: forms.py:593 forms.py:1208 views.py:255
msgid "Operation search"
msgstr "Recherche d'opérations"
-#: forms.py:618
+#: forms.py:637
msgid "Associated file"
msgstr "Dossier associé"
-#: forms.py:622 forms.py:888 models.py:810 wizards.py:76
+#: forms.py:641 forms.py:923 models.py:835 wizards.py:76
msgid "Archaelogical file"
msgstr "Dossier"
-#: forms.py:629 forms.py:631 models.py:271
+#: forms.py:648 forms.py:650 models.py:272
msgid "Abstract"
msgstr "Résumé"
-#: forms.py:634
+#: forms.py:653
msgid "months"
msgstr "mois"
-#: forms.py:634
+#: forms.py:653
msgid "years"
msgstr "années"
-#: forms.py:636 models.py:177
+#: forms.py:655 models.py:178
msgid "Creation date"
msgstr "Date de création"
-#: forms.py:637
+#: forms.py:656
msgid "Start of field work"
msgstr "Début du travail de terrain"
-#: forms.py:639
+#: forms.py:658
msgid "All"
msgstr "Tout"
-#: forms.py:640
+#: forms.py:659
msgid "Preventive"
msgstr "Préventif"
-#: forms.py:641
+#: forms.py:660
msgid "Research"
msgstr "Programmé"
-#: forms.py:645
+#: forms.py:664
msgid "Slicing"
msgstr "Découpage"
-#: forms.py:648
+#: forms.py:667
msgid "Department detail"
msgstr "Détail par département"
-#: forms.py:650
+#: forms.py:669
msgid "Date get from"
msgstr "Date obtenue depuis"
-#: forms.py:652
+#: forms.py:671
msgid "Preventive/Research"
msgstr "Préventif/Programmé"
-#: forms.py:658
+#: forms.py:677
msgid "Date after"
msgstr "Date après"
-#: forms.py:660
+#: forms.py:679
msgid "Date before"
msgstr "Date avant"
-#: forms.py:662
+#: forms.py:681
msgid "With reports"
msgstr "Avec un rapport"
-#: forms.py:663
+#: forms.py:682
msgid "With finds"
msgstr "Avec du mobilier"
-#: forms.py:715 forms.py:1282 templates/ishtar/sheet_administrativeact.html:13
+#: forms.py:734 forms.py:1317 templates/ishtar/sheet_administrativeact.html:13
#: templates/ishtar/sheet_operation.html:20
msgid "General"
msgstr "Général"
-#: forms.py:730 models.py:256
+#: forms.py:749 models.py:257
msgid "Generic name"
msgstr "Nom générique"
-#: forms.py:739 models.py:225
+#: forms.py:758 models.py:226
msgid "Old code"
msgstr "Ancien code"
-#: forms.py:742
+#: forms.py:761
msgid "Head scientist"
msgstr "Responsable scientifique"
-#: forms.py:758 models.py:255
+#: forms.py:777 models.py:256
msgid "Operator reference"
msgstr "Référence de l'opérateur"
-#: forms.py:770
+#: forms.py:789
msgid "Total surface (m2)"
msgstr "Surface totale (m2)"
-#: forms.py:777 models.py:51 models.py:180 models.py:1183
+#: forms.py:796 models.py:51 models.py:181 models.py:1208
msgid "Start date"
msgstr "Date de début"
-#: forms.py:779 models.py:182
+#: forms.py:798 models.py:183
msgid "Excavation end date"
msgstr "Date de fin de chantier"
-#: forms.py:782 models.py:183
+#: forms.py:801 models.py:184
msgid "Report delivery date"
msgstr "Date de livraison du rapport"
-#: forms.py:807
+#: forms.py:820 models.py:274
+msgid "Deadline for submission of the documentation"
+msgstr "Date limite de rendu de la documentation"
+
+#: forms.py:825 models.py:279
+msgid "Deadline for submission of the finds"
+msgstr "Date limite de rendu du mobilier"
+
+#: forms.py:837
msgid "Image"
msgstr "Image"
-#: forms.py:808
+#: forms.py:838
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
@@ -337,19 +374,19 @@ msgstr ""
"<p>Les images trop grandes sont retaillées en : %(width)dx%(height)d (le "
"ratio est conservé).</p>"
-#: forms.py:841
+#: forms.py:876
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:846
+#: forms.py:881
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:874
+#: forms.py:909
#, python-format
msgid ""
"Operation code already exist for year: %(year)d - use a value bigger than "
@@ -358,110 +395,110 @@ 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:878
+#: forms.py:913
msgid "Bad operation code"
msgstr "Mauvais code d'opération"
-#: forms.py:884 models.py:197 models.py:407
+#: forms.py:919 models.py:422
msgid "Operation code"
msgstr "Code de l'opération"
-#: forms.py:910
+#: forms.py:945
msgid "Preventive informations - excavation"
msgstr "Information archéologie préventive - fouille"
-#: forms.py:911 models.py:209
+#: forms.py:946 models.py:210
#: templates/ishtar/dashboards/dashboard_operation.html:699
msgid "Cost (euros)"
msgstr "Coût (euros)"
-#: forms.py:912 models.py:214
+#: forms.py:947 models.py:215
msgid "Scheduled man-days"
msgstr "Jours-hommes prévus"
-#: forms.py:914 models.py:217
+#: forms.py:949 models.py:218
msgid "Optional man-days"
msgstr "Jours-hommes optionnels"
-#: forms.py:916 models.py:220
+#: forms.py:951 models.py:221
msgid "Effective man-days"
msgstr "Jours-hommes effectifs"
-#: forms.py:926
+#: forms.py:961
msgid "Preventive informations - diagnostic"
msgstr "Information archéologie préventive - diagnostic"
-#: forms.py:929 models.py:239
+#: forms.py:964 models.py:240
msgid "Prescription on zoning"
msgstr "Prescription sur zonage"
-#: forms.py:931 models.py:242
+#: forms.py:966 models.py:243
msgid "Prescription on large area"
msgstr "Prescription sur une vaste surface"
-#: forms.py:934 models.py:244
+#: forms.py:969 models.py:245
msgid "Prescription on geoarchaeological context"
msgstr "Prescription sur un contexte géoarchéologique"
-#: forms.py:938 forms.py:960 models.py:208 models.py:823
+#: forms.py:973 forms.py:995 models.py:209 models.py:848
msgid "Towns"
msgstr "Communes"
-#: forms.py:967 models.py:1009 models.py:1181
+#: forms.py:1002 models.py:1034 models.py:1206
msgid "Parcel"
msgstr "Parcelle"
-#: forms.py:1019 models.py:45
+#: forms.py:1054 models.py:45
msgid "Remain types"
msgstr "Types de vestige"
-#: forms.py:1023 models.py:44
+#: forms.py:1058 models.py:44
msgid "Remain type"
msgstr "Type de vestige"
-#: forms.py:1039 templates/ishtar/sheet_operation.html:149
-#: templates/ishtar/sheet_operation.html:180
+#: forms.py:1074 templates/ishtar/sheet_operation.html:158
+#: templates/ishtar/sheet_operation.html:189
msgid "Period"
msgstr "Période"
-#: forms.py:1051 models.py:78
+#: forms.py:1086 models.py:78
msgid "Reference"
msgstr "Référence"
-#: forms.py:1080
+#: forms.py:1115
msgid "This reference already exists."
msgstr "Cette référence existe déjà."
-#: forms.py:1097 models.py:87
+#: forms.py:1132 models.py:87
msgid "Archaeological site"
msgstr "Entité archéologique"
-#: forms.py:1112 models.py:88 models.py:261
-#: templates/ishtar/sheet_operation.html:89
+#: forms.py:1147 models.py:88 models.py:262
+#: templates/ishtar/sheet_operation.html:93
msgid "Archaeological sites"
msgstr "Entités archéologiques"
-#: forms.py:1116
+#: forms.py:1151
msgid "Associated archaelogical sites"
msgstr "Entités archéologiques associées"
-#: forms.py:1122 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
+#: forms.py:1157 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
msgid "Search"
msgstr "Recherche"
-#: forms.py:1127
+#: forms.py:1162
msgid "Would you like to close this operation?"
msgstr "Voulez-vous clore cette opération ?"
-#: forms.py:1132
+#: forms.py:1167
msgid "Would you like to delete this operation?"
msgstr "Voulez-vous supprimer cette opération ?"
-#: forms.py:1141 forms.py:1211 forms.py:1347 models.py:740 models.py:790
+#: forms.py:1176 forms.py:1246 forms.py:1382 models.py:765 models.py:815
msgid "Index"
msgstr "Index"
-#: forms.py:1167
+#: forms.py:1202
#, python-format
msgid ""
"Index already exists for operation: %(operation)s - use a value bigger than "
@@ -470,48 +507,48 @@ msgstr ""
"Cet index existe déjà pour l'opération : %(operation)s, utilisez une valeur "
"plus grande que %(last_val)d"
-#: forms.py:1179
+#: forms.py:1214
msgid "Operation's year"
msgstr "Année de l'opération"
-#: forms.py:1186
+#: forms.py:1221
msgid "Operation's town"
msgstr "Commune de l'opération"
-#: forms.py:1199
+#: forms.py:1234
msgid "Documentation search"
msgstr "Recherche de document"
-#: forms.py:1201
+#: forms.py:1236
msgid "You should select a document."
msgstr "Vous devez sélectionner un document."
-#: forms.py:1218 forms.py:1285 models.py:765 models.py:784
+#: forms.py:1253 forms.py:1320 models.py:790 models.py:809
msgid "Act type"
msgstr "Type d'acte"
-#: forms.py:1219 forms.py:1417
+#: forms.py:1254 forms.py:1452
msgid "Indexed?"
msgstr "Indexé ?"
-#: forms.py:1225 forms.py:1290 models.py:814
+#: forms.py:1260 forms.py:1325 models.py:839
#: templates/ishtar/blocks/window_tables/administrativacts.html:10
msgid "Object"
msgstr "Objet"
-#: forms.py:1262 views.py:403
+#: forms.py:1297 views.py:411
msgid "Administrative act search"
msgstr "Recherche d'actes administratifs"
-#: forms.py:1277 forms.py:1375 forms.py:1442
+#: forms.py:1312 forms.py:1410 forms.py:1477
msgid "You should select an administrative act."
msgstr "Vous devez sélectionner un acte administratif."
-#: forms.py:1293 models.py:811
+#: forms.py:1328 models.py:836
msgid "Signature date"
msgstr "Date de signature"
-#: forms.py:1335
+#: forms.py:1370
#, python-format
msgid ""
"This index already exist for year: %(year)d - use a value bigger than "
@@ -520,31 +557,31 @@ msgstr ""
"Cet index existe déjà pour l'année : %(year)d, utilisez une valeur plus "
"grande que %(last_val)d"
-#: forms.py:1339
+#: forms.py:1374
msgid "Bad index"
msgstr "Mauvais index"
-#: forms.py:1352
+#: forms.py:1387
msgid "Would you like to delete this administrative act?"
msgstr "Voulez-vous supprimer cet acte administratif ?"
-#: forms.py:1357
+#: forms.py:1392
msgid "Template"
msgstr "Patron"
-#: forms.py:1381 forms.py:1385
+#: forms.py:1416 forms.py:1420
msgid "This document is not intended for this type of act."
msgstr "Ce document n'est pas destiné à ce type d'acte."
-#: forms.py:1403
+#: forms.py:1438
msgid "Doc generation"
msgstr "Génération de document"
-#: forms.py:1405
+#: forms.py:1440
msgid "Generate the associated doc?"
msgstr "Générer le document associé ?"
-#: forms.py:1426 ishtar_menu.py:121 views.py:456
+#: forms.py:1461 ishtar_menu.py:121 views.py:464
msgctxt "admin act register"
msgid "Register"
msgstr "Registre"
@@ -565,7 +602,7 @@ msgstr "Clôture"
msgid "Deletion"
msgstr "Suppression"
-#: ishtar_menu.py:58 models.py:830
+#: ishtar_menu.py:58 models.py:855
#: templates/ishtar/sheet_administrativeact.html:4
msgid "Administrative act"
msgstr "Acte administratif"
@@ -594,16 +631,16 @@ msgstr "Tableau de bord"
msgid "General informations"
msgstr "Informations générales"
-#: ishtar_menu.py:136 models.py:279
+#: ishtar_menu.py:136 models.py:290
#: templates/ishtar/dashboards/dashboard_operation.html:9
msgid "Operations"
msgstr "Opérations"
-#: models.py:50 models.py:66 models.py:1645
+#: models.py:50 models.py:66 models.py:1670
msgid "Order"
msgstr "Ordre"
-#: models.py:52 models.py:1184
+#: models.py:52 models.py:1209
msgid "End date"
msgstr "Date de fin"
@@ -620,12 +657,12 @@ msgid "Types Period"
msgstr "Types de période"
#: models.py:69
-msgid "Report state"
-msgstr "État de rapport"
+msgid "Type of report state"
+msgstr "Type d'état de rapport"
#: models.py:70
-msgid "Report states"
-msgstr "États de rapports"
+msgid "Types of report state"
+msgstr "Types d'état de rapport"
#: models.py:91
msgid "Can view all Archaeological sites"
@@ -659,347 +696,351 @@ msgstr "Arbitraire"
msgid "Reliable"
msgstr "Fiable"
-#: models.py:179
+#: models.py:180
msgid "Closing date"
msgstr "Date de clôture"
-#: models.py:186
+#: models.py:187
msgid "In charge scientist"
msgstr "Responsable scientifique"
-#: models.py:201 models.py:989
+#: models.py:202 models.py:1014
msgid "File"
msgstr "Dossier"
-#: models.py:205
+#: models.py:206
msgid "Surface (m2)"
msgstr "Surface (m2)"
-#: models.py:258
+#: models.py:259
msgid "Cached name"
msgstr "Nom en cache"
-#: models.py:266
+#: models.py:267
msgid ""
"If checked, it means that this operation have not been officialy registered."
msgstr ""
"Si coché, cela signifie que cette opération n'a pas été officiellement "
"enregistrée."
-#: models.py:272
+#: models.py:283
msgid "Point"
msgstr "Point"
-#: models.py:273
+#: models.py:284
msgid "Multi polygon"
msgstr "Polygones multiples"
-#: models.py:281
+#: models.py:292
msgid "Can view all Operations"
msgstr "Peut voir toutes les Opérations"
-#: models.py:282
+#: models.py:293
msgid "Can view own Operation"
msgstr "Peut voir sa propre Opération"
-#: models.py:283
+#: models.py:294
msgid "Can add own Operation"
msgstr "Peut ajouter sa propre Opération"
-#: models.py:284
+#: models.py:295
msgid "Can change own Operation"
msgstr "Peut modifier sa propre Opération"
-#: models.py:285
+#: models.py:296
msgid "Can delete own Operation"
msgstr "Peut supprimer sa propre Opération"
-#: models.py:286
+#: models.py:297
msgid "Can close Operation"
msgstr "Peut fermer une Opération"
-#: models.py:309
+#: models.py:324
msgid "OPE"
msgstr "OPE"
-#: models.py:366
+#: models.py:381
msgid "Intercommunal"
msgstr "Intercommunal"
-#: models.py:392 models.py:753
+#: models.py:407 models.py:778
msgid "Archaeological file"
msgstr "Dossier archéologique"
-#: models.py:393
+#: models.py:408
msgid "Code patriarche"
msgstr "Code patriarche"
-#: models.py:433
+#: models.py:448
msgid "This operation code already exists for this year"
msgstr "Ce code d'opération existe déjà pour cette année."
-#: models.py:483
+#: models.py:481
+msgid "Number of parcels"
+msgstr "Nombre de parcelles"
+
+#: models.py:499
msgid "Number of administrative acts"
msgstr "Nombre d'actes administratifs"
-#: models.py:491
+#: models.py:507
msgid "Number of indexed administrative acts"
msgstr "Nombre d'actes administratifs indexés"
-#: models.py:499
+#: models.py:515
msgid "Number of context records"
msgstr "Nombre d'Unités d'Enregistrement"
-#: models.py:535
+#: models.py:551
msgid "Number of finds"
msgstr "Nombre d'élément de mobilier"
-#: models.py:576
+#: models.py:596
msgid "No type"
msgstr "Pas de type"
-#: models.py:603
+#: models.py:627
msgid "Number of sources"
msgstr "Nombre de documents"
-#: models.py:644 templates/ishtar/dashboards/dashboard_operation.html:309
+#: models.py:669 templates/ishtar/dashboards/dashboard_operation.html:309
#: templates/ishtar/dashboards/dashboard_operation.html:575
#: templates/ishtar/dashboards/dashboard_operation.html:611
msgid "Mean"
msgstr "Moyenne"
-#: models.py:684
+#: models.py:709
msgid "Inverse relation"
msgstr "Relation inverse"
-#: models.py:688
+#: models.py:713
msgid "Operation relation type"
msgstr "Type de relation entre opérations"
-#: models.py:689
+#: models.py:714
msgid "Operation relation types"
msgstr "Types de relation entre opérations"
-#: models.py:702
+#: models.py:727
msgid "Operation record relation"
msgstr "Relation entre opérations"
-#: models.py:703
+#: models.py:728
msgid "Operation record relations"
msgstr "Relations entre opérations"
-#: models.py:724
+#: models.py:749
msgid "Operation documentation"
msgstr "Documentation d'une opération"
-#: models.py:725
+#: models.py:750
msgid "Operation documentations"
msgstr "Documentations des opérations"
-#: models.py:728
+#: models.py:753
msgid "Can view all Operation sources"
msgstr "Peut voir toutes les Documentations d'opération"
-#: models.py:730
+#: models.py:755
msgid "Can view own Operation source"
msgstr "Peut voir sa propre Documentation d'opération"
-#: models.py:732
+#: models.py:757
msgid "Can add own Operation source"
msgstr "Peut ajouter sa propre Documentation d'opération"
-#: models.py:734
+#: models.py:759
msgid "Can change own Operation source"
msgstr "Peut modifier sa propre Documentation d'opération"
-#: models.py:736
+#: models.py:761
msgid "Can delete own Operation source"
msgstr "Peut supprimer sa propre Documentation d'opération"
-#: models.py:756
+#: models.py:781
msgid "Intended to"
msgstr "Destiné à"
-#: models.py:758
+#: models.py:783
msgid "Code"
msgstr "Code"
-#: models.py:761
+#: models.py:786
msgid "Associated template"
msgstr "Patron associé"
-#: models.py:762
+#: models.py:787
msgid "Indexed"
msgstr "Indexé"
-#: models.py:766
+#: models.py:791
msgid "Act types"
msgstr "Types d'acte"
-#: models.py:788
+#: models.py:813
msgid "Person in charge of the operation"
msgstr "Responsable d'opération"
-#: models.py:794
+#: models.py:819
msgid "Archaeological preventive operator"
msgstr "Opérateur d'archéologie préventive"
-#: models.py:802
+#: models.py:827
msgid "Signatory"
msgstr "Signataire"
-#: models.py:820
+#: models.py:845
msgid "Departments"
msgstr "Départements"
-#: models.py:821
+#: models.py:846
msgid "Cached values get from associated departments"
msgstr "Valeur en cache des départements associés"
-#: models.py:824
+#: models.py:849
msgid "Cached values get from associated towns"
msgstr "Valeur en cache des communes associées"
-#: models.py:831 templates/ishtar/sheet_operation.html:97
-#: templates/ishtar/sheet_operation.html:128
+#: models.py:856 templates/ishtar/sheet_operation.html:101
+#: templates/ishtar/sheet_operation.html:132
msgid "Administrative acts"
msgstr "Actes administratifs"
-#: models.py:834
+#: models.py:859
msgid "Can view all Administrative acts"
msgstr "Peut voir tous les Actes administratifs"
-#: models.py:836
+#: models.py:861
msgid "Can view own Administrative act"
msgstr "Peut voir son propre Acte administratif"
-#: models.py:838
+#: models.py:863
msgid "Can add own Administrative act"
msgstr "Peut ajouter son propre Acte administratif"
-#: models.py:840
+#: models.py:865
msgid "Can change own Administrative act"
msgstr "Peut modifier son propre Acte administratif"
-#: models.py:842
+#: models.py:867
msgid "Can delete own Administrative act"
msgstr "Peut supprimer son propre Acte administratif"
-#: models.py:851
+#: models.py:876
#: templates/ishtar/blocks/window_tables/administrativacts.html:7
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7
msgid "Ref."
msgstr "Réf."
-#: models.py:934
+#: models.py:959
msgid "This index already exists for this year"
msgstr "Cet index existe déjà pour cette année."
-#: models.py:1002
+#: models.py:1027
msgid "External ID"
msgstr "ID externe"
-#: models.py:1005
+#: models.py:1030
msgid "External ID is set automatically"
msgstr "L'identifiant externe est configuré automatiquement"
-#: models.py:1006
+#: models.py:1031
msgid "Address - Locality"
msgstr "Adresse - Lieu-dit"
-#: models.py:1179
+#: models.py:1204
msgid "Owner"
msgstr "Propriétaire"
-#: models.py:1187
+#: models.py:1212
msgid "Parcel owner"
msgstr "Propriétaire de parcelle"
-#: models.py:1188
+#: models.py:1213
msgid "Parcel owners"
msgstr "Propriétaires de parcelle"
-#: models.py:1214
+#: models.py:1239
msgid "Recorded"
msgstr "Enregistré"
-#: models.py:1215
+#: models.py:1240
msgid "Effective"
msgstr "Effectif"
-#: models.py:1216
+#: models.py:1241
msgid "Active"
msgstr "Actif"
-#: models.py:1217
+#: models.py:1242
msgid "Field completed"
msgstr "Terrain achevé"
-#: models.py:1218
+#: models.py:1243
msgid "Associated report"
msgstr "Rapport associé"
-#: models.py:1219
+#: models.py:1244
msgid "Closed"
msgstr "Clos"
-#: models.py:1220
+#: models.py:1245
msgid "Documented and closed"
msgstr "Documenté et clos"
-#: models.py:1646
+#: models.py:1671
msgid "Is preventive"
msgstr "Préventif"
-#: models.py:1649
+#: models.py:1674
msgid "Operation type old"
msgstr "Type d'opération - ancien"
-#: models.py:1650
+#: models.py:1675
msgid "Operation types old"
msgstr "Types d'opération - ancien"
-#: views.py:293
+#: views.py:301
msgid "New operation"
msgstr "Nouvelle opération"
-#: views.py:312
+#: views.py:320
msgid "Operation modification"
msgstr "Modification d'une opération"
-#: views.py:355
+#: views.py:363
msgid "Operation closing"
msgstr "Clôture d'une opération"
-#: views.py:361
+#: views.py:369
msgid "Operation deletion"
msgstr "Suppression d'une opération"
-#: views.py:366
+#: views.py:374
msgid "Operation: source search"
msgstr "Opération : recherche de documentation associée"
-#: views.py:374
+#: views.py:382
msgid "Operation: source creation"
msgstr "Opération : nouvelle documentation associée"
-#: views.py:382
+#: views.py:390
msgid "Operation: source modification"
msgstr "Opération : modification d'une documentation associée"
-#: views.py:397
+#: views.py:405
msgid "Operation: source deletion"
msgstr "Opération : suppression d'une documentation associée"
-#: views.py:416
+#: views.py:424
msgid "Operation: new administrative act"
msgstr "Opération : nouvel acte administratif"
-#: views.py:426
+#: views.py:434
msgid "Operation: administrative act modification"
msgstr "Opération : modification d'un acte administratif"
-#: views.py:450
+#: views.py:458
msgid "Operation: administrative act deletion"
msgstr "Opération : suppression d'un acte administratif"
@@ -1052,7 +1093,7 @@ msgid "Associated operation:"
msgstr "Opération associée :"
#: templates/ishtar/sheet_administrativeact.html:26
-#: templates/ishtar/sheet_operation.html:40
+#: templates/ishtar/sheet_operation.html:38
msgid "Surface:"
msgstr "Surface :"
@@ -1092,64 +1133,64 @@ msgstr "Date de clôture :"
msgid "by"
msgstr "par"
-#: templates/ishtar/sheet_operation.html:41
+#: templates/ishtar/sheet_operation.html:39
msgid "Cost:"
msgstr "Coût :"
-#: templates/ishtar/sheet_operation.html:42
+#: templates/ishtar/sheet_operation.html:40
msgid "Duration:"
msgstr "Durée :"
-#: templates/ishtar/sheet_operation.html:42
+#: templates/ishtar/sheet_operation.html:40
msgid "Day"
msgstr "Jour"
-#: templates/ishtar/sheet_operation.html:68
+#: templates/ishtar/sheet_operation.html:72
msgid "Localisation"
msgstr "Localisation"
-#: templates/ishtar/sheet_operation.html:93
+#: templates/ishtar/sheet_operation.html:97
msgid "Associated parcels"
msgstr "Parcelles associées"
-#: templates/ishtar/sheet_operation.html:101
+#: templates/ishtar/sheet_operation.html:105
msgid "Document from this operation"
msgstr "Documents de cette opération"
-#: templates/ishtar/sheet_operation.html:107
-#: templates/ishtar/sheet_operation.html:134
+#: templates/ishtar/sheet_operation.html:111
+#: templates/ishtar/sheet_operation.html:143
msgid "Context records"
msgstr "Unités d'Enregistrement"
-#: templates/ishtar/sheet_operation.html:111
+#: templates/ishtar/sheet_operation.html:115
msgid "Documents from associated context records"
msgstr "Documents des Unités d'Enregistrement associées"
-#: templates/ishtar/sheet_operation.html:116
-#: templates/ishtar/sheet_operation.html:157
+#: templates/ishtar/sheet_operation.html:120
+#: templates/ishtar/sheet_operation.html:166
msgid "Finds"
msgstr "Mobilier"
-#: templates/ishtar/sheet_operation.html:121
+#: templates/ishtar/sheet_operation.html:125
msgid "Documents from associated finds"
msgstr "Documents du mobilier associé"
-#: templates/ishtar/sheet_operation.html:126
+#: templates/ishtar/sheet_operation.html:130
msgid "Statistics"
msgstr "Statistiques"
-#: templates/ishtar/sheet_operation.html:141
-#: templates/ishtar/sheet_operation.html:195
+#: templates/ishtar/sheet_operation.html:150
+#: templates/ishtar/sheet_operation.html:204
#: templates/ishtar/blocks/window_tables/administrativacts.html:8
msgid "Type"
msgstr "Type"
-#: templates/ishtar/sheet_operation.html:141
-#: templates/ishtar/sheet_operation.html:149
-#: templates/ishtar/sheet_operation.html:164
-#: templates/ishtar/sheet_operation.html:172
-#: templates/ishtar/sheet_operation.html:180
-#: templates/ishtar/sheet_operation.html:195
+#: templates/ishtar/sheet_operation.html:150
+#: templates/ishtar/sheet_operation.html:158
+#: templates/ishtar/sheet_operation.html:173
+#: templates/ishtar/sheet_operation.html:181
+#: templates/ishtar/sheet_operation.html:189
+#: templates/ishtar/sheet_operation.html:204
#: templates/ishtar/dashboards/dashboard_operation.html:18
#: templates/ishtar/dashboards/dashboard_operation.html:164
#: templates/ishtar/dashboards/dashboard_operation.html:432
@@ -1158,19 +1199,19 @@ msgstr "Type"
msgid "Number"
msgstr "Nombre"
-#: templates/ishtar/sheet_operation.html:164
+#: templates/ishtar/sheet_operation.html:173
msgid "Material type"
msgstr "Type de matériau"
-#: templates/ishtar/sheet_operation.html:172
+#: templates/ishtar/sheet_operation.html:181
msgid "Object type"
msgstr "Type d'objet"
-#: templates/ishtar/sheet_operation.html:188
+#: templates/ishtar/sheet_operation.html:197
msgid "Sources"
msgstr "Documents"
-#: templates/ishtar/sheet_operation.html:204
+#: templates/ishtar/sheet_operation.html:213
msgid "Finds by context records"
msgstr "Mobilier par Unités d'Enregistrement"
diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po
index a4b55a5c3..a1cb5b8b8 100644
--- a/translations/fr/ishtar_common.po
+++ b/translations/fr/ishtar_common.po
@@ -10,7 +10,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-09-06 09:48-0400\n"
+"PO-Revision-Date: 2016-09-09 11:36-0400\n"
"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"
"Language-Team: \n"
"Language: fr\n"
@@ -29,22 +29,6 @@ msgstr "courriel"
msgid "Related item"
msgstr "Élément associé"
-#: context_processors.py:38
-msgid "Archaeological file"
-msgstr "Dossier"
-
-#: context_processors.py:39 models.py:1512
-msgid "Operation"
-msgstr "Opération"
-
-#: context_processors.py:41
-msgid "Context record"
-msgstr "Unité d'Enregistrement"
-
-#: context_processors.py:43
-msgid "Find"
-msgstr "Mobilier"
-
#: data_importer.py:182
#, python-format
msgid "\"%(value)s\" is too long. The max length is %(length)d characters."
@@ -161,7 +145,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:510
+#: forms.py:71 forms_common.py:520
msgid "Confirm"
msgstr "Confirmer"
@@ -185,12 +169,12 @@ msgstr "Vous devez sélectionner un élément."
msgid "Add a new item"
msgstr "Ajouter un nouvel élément"
-#: forms.py:245 models.py:1276
+#: forms.py:245 models.py:1278
msgid "Template"
msgstr "Patron"
-#: forms_common.py:40 forms_common.py:58 forms_common.py:171
-#: forms_common.py:298 models.py:1342 models.py:2655
+#: forms_common.py:40 forms_common.py:58 forms_common.py:181
+#: forms_common.py:308 models.py:1344 models.py:2658
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
@@ -214,70 +198,78 @@ msgstr ""
"<p class='example'>Par exemple tapez « saint denis 93 » pour obtenir la "
"commune Saint-Denis dans le département français de Seine-Saint-Denis.</p>"
-#: forms_common.py:67 forms_common.py:747 ishtar_menu.py:47 models.py:1510
-#: models.py:2324 models.py:2478 models.py:2535
+#: forms_common.py:67 forms_common.py:757 ishtar_menu.py:47 models.py:1512
+#: models.py:2326 models.py:2480 models.py:2538
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr "Personne"
-#: forms_common.py:159 forms_common.py:236 forms_common.py:343
-#: ishtar_menu.py:71 models.py:1511 models.py:2229
+#: forms_common.py:116
+msgid ""
+"This import type have no unicity type defined. Conservative import is not "
+"possible."
+msgstr ""
+"Cet import n'a pas de clé d'unicité paramétrée. L'import conservateur n'est "
+"pas possible."
+
+#: forms_common.py:169 forms_common.py:246 forms_common.py:353
+#: ishtar_menu.py:71 models.py:1513 models.py:2231
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr "Organisation"
-#: forms_common.py:162 forms_common.py:199 forms_common.py:231
-#: forms_common.py:268 forms_common.py:338 models.py:943 models.py:1275
-#: models.py:1556 models.py:1774 models.py:2223 models.py:2310 models.py:2641
+#: forms_common.py:172 forms_common.py:209 forms_common.py:241
+#: forms_common.py:278 forms_common.py:348 models.py:945 models.py:1277
+#: models.py:1558 models.py:1776 models.py:2225 models.py:2312 models.py:2644
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr "Nom"
-#: forms_common.py:163 models.py:1497 models.py:1905
+#: forms_common.py:173 models.py:1499 models.py:1907
msgid "Organization type"
msgstr "Type d'organisation"
-#: forms_common.py:165 forms_common.py:292 models.py:1337
+#: forms_common.py:175 forms_common.py:302 models.py:1339
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr "Adresse"
-#: forms_common.py:167 forms_common.py:295 models.py:1338
+#: forms_common.py:177 forms_common.py:305 models.py:1340
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr "Complément d'adresse"
-#: forms_common.py:169 forms_common.py:296 models.py:1340
+#: forms_common.py:179 forms_common.py:306 models.py:1342
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr "Code postal"
-#: forms_common.py:172 forms_common.py:299 models.py:1343
+#: forms_common.py:182 forms_common.py:309 models.py:1345
msgid "Country"
msgstr "Pays"
-#: forms_common.py:174 forms_common.py:233 forms_common.py:272
-#: forms_common.py:340 forms_common.py:464 models.py:1370
+#: forms_common.py:184 forms_common.py:243 forms_common.py:282
+#: forms_common.py:350 forms_common.py:474 models.py:1372
msgid "Email"
msgstr "Courriel"
-#: forms_common.py:175 forms_common.py:275 models.py:1355
+#: forms_common.py:185 forms_common.py:285 models.py:1357
#: templates/ishtar/sheet_organization.html:14
#: templates/ishtar/sheet_person.html:19
#: templates/ishtar/wizard/wizard_person.html:17
msgid "Phone"
msgstr "Téléphone"
-#: forms_common.py:176 forms_common.py:284 models.py:1367
+#: forms_common.py:186 forms_common.py:294 models.py:1369
#: templates/ishtar/sheet_organization.html:15
#: templates/ishtar/sheet_person.html:37
#: templates/ishtar/wizard/wizard_person.html:35
msgid "Mobile phone"
msgstr "Téléphone portable"
-#: forms_common.py:200 forms_common.py:234 forms_common.py:341 models.py:1933
-#: models.py:2225 models.py:2576 templates/sheet_ope.html:85
+#: forms_common.py:210 forms_common.py:244 forms_common.py:351 models.py:1935
+#: models.py:2227 models.py:2579 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,193 +277,193 @@ msgstr "Téléphone portable"
msgid "Type"
msgstr "Type"
-#: forms_common.py:209 views.py:137
+#: forms_common.py:219 views.py:137
msgid "Organization search"
msgstr "Recherche d'organisations"
-#: forms_common.py:232 forms_common.py:266 forms_common.py:339 models.py:2308
+#: forms_common.py:242 forms_common.py:276 forms_common.py:349 models.py:2310
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr "Prénom"
-#: forms_common.py:248 forms_common.py:326 views.py:102
+#: forms_common.py:258 forms_common.py:336 views.py:102
msgid "Person search"
msgstr "Recherche de personnes"
-#: forms_common.py:260 templates/ishtar/sheet_person.html:7
+#: forms_common.py:270 templates/ishtar/sheet_person.html:7
#: templates/ishtar/wizard/wizard_person.html:6
msgid "Identity"
msgstr "Identité"
-#: forms_common.py:263 forms_common.py:665 forms_common.py:714 models.py:1906
-#: models.py:2302 models.py:2304 models.py:2573 templates/sheet_ope.html:104
+#: forms_common.py:273 forms_common.py:675 forms_common.py:724 models.py:1908
+#: models.py:2304 models.py:2306 models.py:2576 templates/sheet_ope.html:104
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr "Titre"
-#: forms_common.py:264 models.py:2306
+#: forms_common.py:274 models.py:2308
msgid "Salutation"
msgstr "Formule d'appel"
-#: forms_common.py:270 models.py:2312
+#: forms_common.py:280 models.py:2314
msgid "Raw name"
msgstr "Nom brut"
-#: forms_common.py:273 models.py:1356
+#: forms_common.py:283 models.py:1358
msgid "Phone description"
msgstr "Type de téléphone"
-#: forms_common.py:276 models.py:1358 models.py:1360
+#: forms_common.py:286 models.py:1360 models.py:1362
msgid "Phone description 2"
msgstr "Type de téléphone 2"
-#: forms_common.py:278
+#: forms_common.py:288
msgid "Phone 2"
msgstr "Téléphone 2"
-#: forms_common.py:280 models.py:1364
+#: forms_common.py:290 models.py:1366
msgid "Phone description 3"
msgstr "Type de téléphone 3"
-#: forms_common.py:282 models.py:1362
+#: forms_common.py:292 models.py:1364
msgid "Phone 3"
msgstr "Téléphone 3"
-#: forms_common.py:287
+#: forms_common.py:297
msgid "Current organization"
msgstr "Organisation actuelle"
-#: forms_common.py:301 models.py:1345
+#: forms_common.py:311 models.py:1347
msgid "Other address: address"
msgstr "Autre adresse : adresse"
-#: forms_common.py:304 models.py:1348
+#: forms_common.py:314 models.py:1350
msgid "Other address: address complement"
msgstr "Autre adresse : complément d'adresse"
-#: forms_common.py:306 models.py:1349
+#: forms_common.py:316 models.py:1351
msgid "Other address: postal code"
msgstr "Autre adresse : code postal"
-#: forms_common.py:308 models.py:1351
+#: forms_common.py:318 models.py:1353
msgid "Other address: town"
msgstr "Autre adresse : ville"
-#: forms_common.py:310 models.py:1353
+#: forms_common.py:320 models.py:1355
msgid "Other address: country"
msgstr "Autre adresse : pays"
-#: forms_common.py:322
+#: forms_common.py:332
msgid "Already has an account"
msgstr "As déjà un compte"
-#: forms_common.py:337
+#: forms_common.py:347
msgid "Username"
msgstr "Nom d'utilisateur"
-#: forms_common.py:355
+#: forms_common.py:365
msgid "Account search"
msgstr "Recherche de comptes"
-#: forms_common.py:402 forms_common.py:442 forms_common.py:446 models.py:2277
+#: forms_common.py:412 forms_common.py:452 forms_common.py:456 models.py:2279
msgid "Person type"
msgstr "Type de personne"
-#: forms_common.py:458 forms_common.py:463 ishtar_menu.py:32
+#: forms_common.py:468 forms_common.py:473 ishtar_menu.py:32
msgid "Account"
msgstr "Compte"
-#: forms_common.py:467 wizards.py:1192
+#: forms_common.py:477 wizards.py:1192
msgid "New password"
msgstr "Nouveau mot de passe"
-#: forms_common.py:470
+#: forms_common.py:480
msgid "New password (confirmation)"
msgstr "Nouveau mot de passe (confirmation)"
-#: forms_common.py:491
+#: forms_common.py:501
msgid "Your password and confirmation password do not match."
msgstr "La vérification du mot de passe a échoué."
-#: forms_common.py:496
+#: forms_common.py:506
msgid "You must provide a correct password."
msgstr "Vous devez fournir un mot de passe correct."
-#: forms_common.py:504
+#: forms_common.py:514
msgid "This username already exists."
msgstr "Ce nom d'utilisateur existe déjà."
-#: forms_common.py:511
+#: forms_common.py:521
msgid "Send the new password by email?"
msgstr "Envoyer le nouveau mot de passe par courriel ?"
-#: forms_common.py:520 forms_common.py:533 models.py:2656
+#: forms_common.py:530 forms_common.py:543 models.py:2659
msgid "Towns"
msgstr "Communes"
-#: forms_common.py:530
+#: forms_common.py:540
msgid "There are identical towns."
msgstr "Il y a des communes identiques."
-#: forms_common.py:614
+#: forms_common.py:624
msgid "Only one choice can be checked."
msgstr "Seul un choix peut être coché."
-#: forms_common.py:662
+#: forms_common.py:672
msgid "Documentation informations"
msgstr "Information sur le document"
-#: forms_common.py:667 forms_common.py:715 models.py:1907 models.py:2556
+#: forms_common.py:677 forms_common.py:725 models.py:1909 models.py:2559
msgid "Source type"
msgstr "Type de document"
-#: forms_common.py:669 forms_common.py:716 templates/sheet_ope.html:84
+#: forms_common.py:679 forms_common.py:726 templates/sheet_ope.html:84
msgid "Reference"
msgstr "Référence"
-#: forms_common.py:672 forms_common.py:717
+#: forms_common.py:682 forms_common.py:727
msgid "Internal reference"
msgstr "Référence interne"
-#: forms_common.py:675 models.py:2587
+#: forms_common.py:685 models.py:2590
msgid "Numerical ressource (web address)"
msgstr "Ressource numérique (adresse web)"
-#: forms_common.py:676 models.py:2589
+#: forms_common.py:686 models.py:2592
msgid "Receipt date"
msgstr "Date de réception"
-#: forms_common.py:678 models.py:2060 models.py:2591
+#: forms_common.py:688 models.py:2062 models.py:2594
msgid "Creation date"
msgstr "Date de création"
-#: forms_common.py:681 models.py:2594
+#: forms_common.py:691 models.py:2597
msgid "Receipt date in documentation"
msgstr "Date de réception en documentation"
-#: forms_common.py:683 forms_common.py:719 models.py:287 models.py:546
-#: models.py:1801 models.py:2316 models.py:2601
+#: forms_common.py:693 forms_common.py:729 models.py:289 models.py:548
+#: models.py:1803 models.py:2318 models.py:2604
msgid "Comment"
msgstr "Commentaire"
-#: forms_common.py:685 forms_common.py:718 models.py:945 models.py:1560
-#: models.py:1733 models.py:1775 models.py:2600 templates/sheet_ope.html:128
+#: forms_common.py:695 forms_common.py:728 models.py:947 models.py:1562
+#: models.py:1735 models.py:1777 models.py:2603 templates/sheet_ope.html:128
msgid "Description"
msgstr "Description"
-#: forms_common.py:688 models.py:2602
+#: forms_common.py:698 models.py:2605
msgid "Additional information"
msgstr "Informations supplémentaires"
-#: forms_common.py:690 forms_common.py:722 models.py:2604
+#: forms_common.py:700 forms_common.py:732 models.py:2607
msgid "Has a duplicate"
msgstr "Existe en doublon"
-#: forms_common.py:693
+#: forms_common.py:703
msgid "Image"
msgstr "Image"
-#: forms_common.py:694
+#: forms_common.py:704
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
@@ -480,32 +472,32 @@ msgstr ""
"<p>Les images trop grandes sont retaillées en : %(width)dx%(height)d (le "
"ratio est conservé).</p>"
-#: forms_common.py:711 forms_common.py:740 forms_common.py:774 models.py:2540
+#: forms_common.py:721 forms_common.py:750 forms_common.py:784 models.py:2543
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr "Auteur"
-#: forms_common.py:721
+#: forms_common.py:731
msgid "Additional informations"
msgstr "Informations complémentaires"
-#: forms_common.py:732
+#: forms_common.py:742
msgid "Would you like to delete this documentation?"
msgstr "Voulez-vous supprimer ce document ?"
-#: forms_common.py:748 models.py:1908 models.py:2530 models.py:2537
+#: forms_common.py:758 models.py:1910 models.py:2533 models.py:2540
msgid "Author type"
msgstr "Type d'auteur"
-#: forms_common.py:767
+#: forms_common.py:777
msgid "Author selection"
msgstr "Sélection d'auteur"
-#: forms_common.py:781
+#: forms_common.py:791
msgid "There are identical authors."
msgstr "Il y a des auteurs identiques."
-#: forms_common.py:785 models.py:2541 models.py:2583
+#: forms_common.py:795 models.py:2544 models.py:2586
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
@@ -523,7 +515,7 @@ msgstr "Ajouter/Modifier"
msgid "Deletion"
msgstr "Suppression"
-#: ishtar_menu.py:39 models.py:1071 views.py:1239
+#: ishtar_menu.py:39 models.py:1073 views.py:1365
msgid "Global variables"
msgstr "Variables globales"
@@ -547,20 +539,20 @@ msgstr "Modification"
msgid "Merge"
msgstr "Fusion"
-#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2097 widgets.py:110
+#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2099 widgets.py:110
#: templates/ishtar/form_delete.html:11
msgid "Delete"
msgstr "Suppression"
-#: ishtar_menu.py:101 models.py:2071
+#: ishtar_menu.py:101 models.py:2073
msgid "Imports"
msgstr "Imports"
-#: ishtar_menu.py:104 views.py:1247
+#: ishtar_menu.py:104 views.py:1373
msgid "New import"
msgstr "Nouvel import"
-#: ishtar_menu.py:108 views.py:1261
+#: ishtar_menu.py:108 views.py:1387
msgid "Current imports"
msgstr "Imports en cours"
@@ -580,91 +572,91 @@ 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:545 models.py:1310 models.py:1322
+#: models.py:285 models.py:547 models.py:1312 models.py:1324
msgid "Label"
msgstr "Libellé"
-#: models.py:285
+#: models.py:287
msgid "Textual ID"
msgstr "Identifiant textuel"
-#: models.py:288 models.py:548 models.py:1279
+#: models.py:290 models.py:550 models.py:1281
msgid "Available"
msgstr "Disponible"
-#: models.py:567 models.py:1847
+#: models.py:569 models.py:1849
msgid "Key"
msgstr "Clé"
-#: models.py:573
+#: models.py:575
msgid "Specific key to an import"
msgstr "Clé spécifique à un import"
-#: models.py:664
+#: models.py:666
msgid "Last editor"
msgstr "Dernier éditeur"
-#: models.py:667
+#: models.py:669
msgid "Creator"
msgstr "Créateur"
-#: models.py:807 models.py:2667
+#: models.py:809 models.py:2670
msgid "Order"
msgstr "Ordre"
-#: models.py:808
+#: models.py:810
msgid "Symmetrical"
msgstr "Symétrique"
-#: models.py:809
+#: models.py:811
msgid "Tiny label"
msgstr "Petit libellé"
-#: models.py:823
+#: models.py:825
msgid "Cannot have symmetrical and an inverse_relation"
msgstr "Ne peut pas être symétrique et avoir une relation inverse"
-#: models.py:937
+#: models.py:939
msgid "Euro"
msgstr "Euro"
-#: models.py:938
+#: models.py:940
msgid "US dollar"
msgstr "Dollars US"
-#: models.py:944 models.py:1558
+#: models.py:946 models.py:1560
msgid "Slug"
msgstr "Identifiant texte"
-#: models.py:946
+#: models.py:948
msgid "Files module"
msgstr "Module Dossiers"
-#: models.py:947
+#: models.py:949
msgid "Context records module"
msgstr "Module Unités d'Enregistrement"
-#: models.py:949
+#: models.py:951
msgid "Finds module"
msgstr "Module Mobilier"
-#: models.py:950
+#: models.py:952
msgid "Need context records module"
msgstr "Nécessite le module Unités d'Enregistrement"
-#: models.py:952
+#: models.py:954
msgid "Warehouses module"
msgstr "Module Dépôts"
-#: models.py:953
+#: models.py:955
msgid "Need finds module"
msgstr "Nécessite le module mobilier"
-#: models.py:955
+#: models.py:957
msgid "Home page"
msgstr "Page d'accueil"
-#: models.py:956
+#: models.py:958
#, python-brace-format
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
@@ -674,22 +666,22 @@ msgstr ""
"défaut va apparaître. Utiliser la syntaxe Markdown. {random_image} peut être "
"utilisé pour afficher une image au hasard."
-#: models.py:960
+#: models.py:962
msgid "File external id"
msgstr "Identifiant externe de fichier"
-#: models.py:962
+#: models.py:964
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:967
+#: models.py:969
msgid "Parcel external id"
msgstr "Identifiant externe de parcelle"
-#: models.py:970
+#: models.py:972
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 "
@@ -699,11 +691,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:975
+#: models.py:977
msgid "Context record external id"
msgstr "Identifiant externe d'unité d'enregistrement"
-#: models.py:977
+#: models.py:979
msgid ""
"Formula to manage context record external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
@@ -713,11 +705,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:982
+#: models.py:984
msgid "Base find external id"
msgstr "Identifiant externe de mobilier de base"
-#: models.py:984
+#: models.py:986
msgid ""
"Formula to manage base find external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
@@ -727,11 +719,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:989
+#: models.py:991
msgid "Find external id"
msgstr "Identifiant externe de mobilier"
-#: models.py:991
+#: models.py:993
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 "
@@ -741,11 +733,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:996
+#: models.py:998
msgid "Raw name for person"
msgstr "Nom brut pour une personne"
-#: models.py:998
+#: models.py:1000
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 "
@@ -755,43 +747,43 @@ msgstr ""
"Une formule incorrecte peut rendre l'application inutilisable et l'import de "
"données externes peut alors être destructif."
-#: models.py:1002
+#: models.py:1004
msgid "Current active"
msgstr "Actuellement utilisé"
-#: models.py:1003
+#: models.py:1005
msgid "Currency"
msgstr "Devise"
-#: models.py:1007
+#: models.py:1009
msgid "Ishtar site profile"
msgstr "Profil d'instance Ishtar"
-#: models.py:1008
+#: models.py:1010
msgid "Ishtar site profiles"
msgstr "Profils d'instance Ishtar"
-#: models.py:1064
+#: models.py:1066
msgid "Variable name"
msgstr "Nom de la variable"
-#: models.py:1065
+#: models.py:1067
msgid "Description of the variable"
msgstr "Description de la variable"
-#: models.py:1067 models.py:1848
+#: models.py:1069 models.py:1850
msgid "Value"
msgstr "Valeur"
-#: models.py:1070
+#: models.py:1072
msgid "Global variable"
msgstr "Variable globale"
-#: models.py:1180 models.py:1210
+#: models.py:1182 models.py:1212
msgid "Total"
msgstr "Total"
-#: models.py:1187 models.py:1311 models.py:1323
+#: models.py:1189 models.py:1313 models.py:1325
#: templates/ishtar/sheet_person.html:22
#: templates/ishtar/dashboards/dashboard_main_detail.html:141
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
@@ -799,591 +791,595 @@ msgstr "Total"
msgid "Number"
msgstr "Nombre"
-#: models.py:1274
+#: models.py:1276
msgid "Administrative Act"
msgstr "Acte administratif"
-#: models.py:1278
+#: models.py:1280
msgid "Associated object"
msgstr "Objet associé"
-#: models.py:1282
+#: models.py:1284
msgid "Document template"
msgstr "Patron de document"
-#: models.py:1283
+#: models.py:1285
msgid "Document templates"
msgstr "Patrons de documents"
-#: models.py:1314 models.py:1324 models.py:2055
+#: models.py:1316 models.py:1326 models.py:2057
msgid "State"
msgstr "État"
-#: models.py:1328 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1330 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr "Département"
-#: models.py:1329
+#: models.py:1331
msgid "Departments"
msgstr "Départements"
-#: models.py:1366
+#: models.py:1368
msgid "Raw phone"
msgstr "Téléphone brut"
-#: models.py:1372
+#: models.py:1374
msgid "Alternative address is prefered"
msgstr "L'adresse alternative est préférée"
-#: models.py:1411
+#: models.py:1413
msgid "Tel: "
msgstr "Tél :"
-#: models.py:1415
+#: models.py:1417
msgid "Mobile: "
msgstr "Mobile :"
-#: models.py:1419
+#: models.py:1421
msgid "Email: "
msgstr "Courriel :"
-#: models.py:1424
+#: models.py:1426
msgid "Merge key"
msgstr "Clé de fusion"
-#: models.py:1498
+#: models.py:1500
msgid "Organization types"
msgstr "Types d'organisation"
-#: models.py:1514
+#: models.py:1514 views.py:211
+msgid "Operation"
+msgstr "Opération"
+
+#: models.py:1516
msgid "Archaeological site"
msgstr "Entité Archéologique"
-#: models.py:1515
+#: models.py:1517
msgid "Parcels"
msgstr "Parcelles"
-#: models.py:1517
+#: models.py:1519
msgid "Operation source"
msgstr "Documentation de l'opération"
-#: models.py:1520 views.py:1064 views.py:1115
+#: models.py:1522 views.py:1190 views.py:1241
msgid "Archaeological files"
msgstr "Dossiers archéologiques"
-#: models.py:1522 views.py:1067 views.py:1123
+#: models.py:1524 views.py:1193 views.py:1249
msgid "Context records"
msgstr "Unités d'Enregistrement"
-#: models.py:1524
+#: models.py:1526
msgid "Context record relations"
msgstr "Relations entre Unités d'Enregistrement"
-#: models.py:1526 views.py:1069 views.py:1126
+#: models.py:1528 views.py:1195 views.py:1252
msgid "Finds"
msgstr "Mobilier"
-#: models.py:1562 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1564 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr "Utilisateurs"
-#: models.py:1564
+#: models.py:1566
msgid "Associated model"
msgstr "Modèle associé"
-#: models.py:1567
+#: models.py:1569
msgid "Is template"
msgstr "Est un patron"
-#: models.py:1568
+#: models.py:1570
msgid "Unicity keys (separator \";\")"
msgstr "Clés d'unicité (séparateur « ; »)"
-#: models.py:1572
+#: models.py:1574
msgid "Importer - Type"
msgstr "Importeur - Type"
-#: models.py:1573
+#: models.py:1575
msgid "Importer - Types"
msgstr "Importeur - Types"
-#: models.py:1663
+#: models.py:1665
msgid "Importer - Default"
msgstr "Importeur - Par défaut"
-#: models.py:1664
+#: models.py:1666
msgid "Importer - Defaults"
msgstr "Importeur - Par défaut"
-#: models.py:1699
+#: models.py:1701
msgid "Importer - Default value"
msgstr "Importeur - Valeur par défaut"
-#: models.py:1700
+#: models.py:1702
msgid "Importer - Default values"
msgstr "Importeur - Valeurs par défaut"
-#: models.py:1732
+#: models.py:1734
msgid "Column number"
msgstr "Numéro de colonne"
-#: models.py:1735
+#: models.py:1737
msgid "Required"
msgstr "Requis"
-#: models.py:1738
+#: models.py:1740
msgid "Importer - Column"
msgstr "Importeur - Colonne"
-#: models.py:1739
+#: models.py:1741
msgid "Importer - Columns"
msgstr "Importeur - Colonnes"
-#: models.py:1759
+#: models.py:1761
msgid "Field name"
msgstr "Nom du champ"
-#: models.py:1761 models.py:1795
+#: models.py:1763 models.py:1797
msgid "Force creation of new items"
msgstr "Forcer la création de nouveaux éléments"
-#: models.py:1763 models.py:1797
+#: models.py:1765 models.py:1799
msgid "Concatenate with existing"
msgstr "Concaténer avec l'existant"
-#: models.py:1765 models.py:1799
+#: models.py:1767 models.py:1801
msgid "Concatenate character"
msgstr "Caractère de concaténation"
-#: models.py:1769
+#: models.py:1771
msgid "Importer - Duplicate field"
msgstr "Importeur - Champ dupliqué"
-#: models.py:1770
+#: models.py:1772
msgid "Importer - Duplicate fields"
msgstr "Importeur - Champs dupliqués"
-#: models.py:1777
+#: models.py:1779
msgid "Regular expression"
msgstr "Expression régulière"
-#: models.py:1780
+#: models.py:1782
msgid "Importer - Regular expression"
msgstr "Importeur - Expression régulière"
-#: models.py:1781
+#: models.py:1783
msgid "Importer - Regular expressions"
msgstr "Importeur - Expressions régulières"
-#: models.py:1804
+#: models.py:1806
msgid "Importer - Target"
msgstr "Importeur - Cible"
-#: models.py:1805
+#: models.py:1807
msgid "Importer - Targets"
msgstr "Importeur - Cibles"
-#: models.py:1829 views.py:350
+#: models.py:1831 views.py:476
msgid "True"
msgstr "Oui"
-#: models.py:1830 views.py:352
+#: models.py:1832 views.py:478
msgid "False"
msgstr "Non"
-#: models.py:1849
+#: models.py:1851
msgid "Is set"
msgstr "Est défini"
-#: models.py:1856
+#: models.py:1858
msgid "Importer - Target key"
msgstr "Importeur - Rapprochement"
-#: models.py:1857
+#: models.py:1859
msgid "Importer - Targets keys"
msgstr "Importeur - Rapprochements"
-#: models.py:1909 models.py:2568 models.py:2579
+#: models.py:1911 models.py:2571 models.py:2582
msgid "Format"
msgstr "Format"
-#: models.py:1910 models.py:2671
+#: models.py:1912 models.py:2674
msgid "Operation type"
msgstr "Type d'opération"
-#: models.py:1911
+#: models.py:1913
msgid "Period"
msgstr "Périodes"
-#: models.py:1912
+#: models.py:1914
msgid "Report state"
msgstr "État de rapport"
-#: models.py:1913
+#: models.py:1915
msgid "Unit"
msgstr "Unité"
-#: models.py:1914
+#: models.py:1916
msgid "Material"
msgstr "Matériau"
-#: models.py:1916
+#: models.py:1918
msgid "Conservatory state"
msgstr "État de conservation"
-#: models.py:1917
+#: models.py:1919
msgid "Preservation type"
msgstr "Type de conservation"
-#: models.py:1918
+#: models.py:1920
msgid "Object type"
msgstr "Type d'objet"
-#: models.py:1920
+#: models.py:1922
msgid "Identification type"
msgstr "Type d'identification"
-#: models.py:1922
+#: models.py:1924
msgid "Context record relation type"
msgstr "Type de relations entre Unités d'Enregistrement"
-#: models.py:1923 models.py:2562
+#: models.py:1925 models.py:2565
msgid "Support type"
msgstr "Type de support"
-#: models.py:1929
+#: models.py:1931
msgid "Integer"
msgstr "Entier"
-#: models.py:1930
+#: models.py:1932
msgid "Float"
msgstr "Nombre à virgule"
-#: models.py:1931
+#: models.py:1933
msgid "String"
msgstr "Chaîne de caractères"
-#: models.py:1932 templates/sheet_ope.html:86
+#: models.py:1934 templates/sheet_ope.html:86
msgid "Date"
msgstr "Date"
-#: models.py:1934 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: models.py:1936 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:1935
+#: models.py:1937
msgid "String to boolean"
msgstr "Chaîne de caractères vers booléen"
-#: models.py:1936
+#: models.py:1938
msgctxt "filesystem"
msgid "File"
msgstr "Fichier"
-#: models.py:1937
+#: models.py:1939
msgid "Unknow type"
msgstr "Type inconnu"
-#: models.py:1953
+#: models.py:1955
msgid "4 digit year. e.g.: \"2015\""
msgstr "Année sur 4 chiffres. Exemple : « 2015 »"
-#: models.py:1954
+#: models.py:1956
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:1955
+#: models.py:1957
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:1965
+#: models.py:1967
msgid "Options"
msgstr "Options"
-#: models.py:1967
+#: models.py:1969
msgid "Split character(s)"
msgstr "Caractère(s) de séparation"
-#: models.py:1971
+#: models.py:1973
msgid "Importer - Formater type"
msgstr "Importeur - Type de mise en forme"
-#: models.py:1972
+#: models.py:1974
msgid "Importer - Formater types"
msgstr "Importeur - Types de mise en forme"
-#: models.py:2019 templates/ishtar/dashboards/dashboard_main_detail.html:63
+#: models.py:2021 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr "Créé"
-#: models.py:2020
+#: models.py:2022
msgid "Analyse in progress"
msgstr "Analyse en cours"
-#: models.py:2021
+#: models.py:2023
msgid "Analysed"
msgstr "Analysé"
-#: models.py:2022
+#: models.py:2024
msgid "Import pending"
msgstr "Import en attente"
-#: models.py:2023
+#: models.py:2025
msgid "Import in progress"
msgstr "Import en cours"
-#: models.py:2024
+#: models.py:2026
msgid "Finished with errors"
msgstr "Terminé avec des erreurs"
-#: models.py:2025
+#: models.py:2027
msgid "Finished"
msgstr "Terminé"
-#: models.py:2026
+#: models.py:2028
msgid "Archived"
msgstr "Archivé"
-#: models.py:2038
+#: models.py:2040
msgid "Imported file"
msgstr "Fichier importé"
-#: models.py:2041
+#: models.py:2043
msgid "Associated images (zip file)"
msgstr "Images associées (fichier zip)"
-#: models.py:2043
+#: models.py:2045
msgid "Encoding"
msgstr "Codage"
-#: models.py:2045
+#: models.py:2047
msgid "Skip lines"
msgstr "Nombre de lignes d'entête"
-#: models.py:2046 templates/ishtar/import_list.html:47
+#: models.py:2048 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr "Fichier erreur"
-#: models.py:2049
+#: models.py:2051
msgid "Result file"
msgstr "Fichier résultant"
-#: models.py:2052 templates/ishtar/import_list.html:53
+#: models.py:2054 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr "Fichier de correspondance"
-#: models.py:2058
+#: models.py:2060
msgid "Conservative import"
msgstr "Import conservateur"
-#: models.py:2063
+#: models.py:2065
msgid "End date"
msgstr "Date de fin"
-#: models.py:2065
+#: models.py:2067
msgid "Remaining seconds"
msgstr "Secondes restantes"
-#: models.py:2070
+#: models.py:2072
msgid "Import"
msgstr "Import"
-#: models.py:2087
+#: models.py:2089
msgid "Analyse"
msgstr "Analyser"
-#: models.py:2089 models.py:2092
+#: models.py:2091 models.py:2094
msgid "Re-analyse"
msgstr "Analyser de nouveau "
-#: models.py:2090
+#: models.py:2092
msgid "Launch import"
msgstr "Lancer l'import"
-#: models.py:2093
+#: models.py:2095
msgid "Re-import"
msgstr "Ré-importer"
-#: models.py:2094
+#: models.py:2096
msgid "Archive"
msgstr "Archiver"
-#: models.py:2096
+#: models.py:2098
msgid "Unarchive"
msgstr "Désarchiver"
-#: models.py:2230
+#: models.py:2232
msgid "Organizations"
msgstr "Organisations"
-#: models.py:2232
+#: models.py:2234
msgid "Can view all Organizations"
msgstr "Peut voir toutes les Organisations"
-#: models.py:2233
+#: models.py:2235
msgid "Can view own Organization"
msgstr "Peut voir sa propre Organisation"
-#: models.py:2234
+#: models.py:2236
msgid "Can add own Organization"
msgstr "Peut ajouter sa propre Organisation"
-#: models.py:2236
+#: models.py:2238
msgid "Can change own Organization"
msgstr "Peut modifier sa propre Organisation"
-#: models.py:2238
+#: models.py:2240
msgid "Can delete own Organization"
msgstr "Peut supprimer sa propre Organisation"
-#: models.py:2273
+#: models.py:2275
msgid "Groups"
msgstr "Groupes"
-#: models.py:2278
+#: models.py:2280
msgid "Person types"
msgstr "Types de personne"
-#: models.py:2284
+#: models.py:2286
msgid "Title type"
msgstr "Type de titre"
-#: models.py:2285
+#: models.py:2287
msgid "Title types"
msgstr "Types de titre"
-#: models.py:2292
+#: models.py:2294
msgid "Mr"
msgstr "M."
-#: models.py:2293
+#: models.py:2295
msgid "Miss"
msgstr "Mlle"
-#: models.py:2294
+#: models.py:2296
msgid "Mr and Mrs"
msgstr "M. et Mme"
-#: models.py:2295
+#: models.py:2297
msgid "Mrs"
msgstr "Mme"
-#: models.py:2296
+#: models.py:2298
msgid "Doctor"
msgstr "Dr."
-#: models.py:2314
+#: models.py:2316
msgid "Contact type"
msgstr "Type de contact"
-#: models.py:2317 models.py:2366
+#: models.py:2319 models.py:2368
msgid "Types"
msgstr "Types"
-#: models.py:2320
+#: models.py:2322
msgid "Is attached to"
msgstr "Est rattaché à"
-#: models.py:2325
+#: models.py:2327
msgid "Persons"
msgstr "Personnes"
-#: models.py:2327
+#: models.py:2329
msgid "Can view all Persons"
msgstr "Peut voir toutes les Personnes"
-#: models.py:2328
+#: models.py:2330
msgid "Can view own Person"
msgstr "Peut voir sa propre Personne"
-#: models.py:2329
+#: models.py:2331
msgid "Can add own Person"
msgstr "Peut ajouter sa propre Personne"
-#: models.py:2330
+#: models.py:2332
msgid "Can change own Person"
msgstr "Peut modifier sa propre Personne"
-#: models.py:2331
+#: models.py:2333
msgid "Can delete own Person"
msgstr "Peut supprimer sa propre Personne"
-#: models.py:2482
+#: models.py:2484
msgid "Ishtar user"
msgstr "Utilisateur d'Ishtar"
-#: models.py:2483
+#: models.py:2485
msgid "Ishtar users"
msgstr "Utilisateurs d'Ishtar"
-#: models.py:2525
+#: models.py:2528
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:2531
+#: models.py:2534
msgid "Author types"
msgstr "Types d'auteur"
-#: models.py:2557
+#: models.py:2560
msgid "Source types"
msgstr "Types de document"
-#: models.py:2563
+#: models.py:2566
msgid "Support types"
msgstr "Types de support"
-#: models.py:2569
+#: models.py:2572
msgid "Formats"
msgstr "Formats"
-#: models.py:2574
+#: models.py:2577
msgid "External ID"
msgstr "Identifiant externe"
-#: models.py:2577
+#: models.py:2580
msgid "Support"
msgstr "Support"
-#: models.py:2581
+#: models.py:2584
msgid "Scale"
msgstr "Échelle"
-#: models.py:2595
+#: models.py:2598
msgid "Item number"
msgstr "Numéro d'élément"
-#: models.py:2596
+#: models.py:2599
msgid "Ref."
msgstr "Réf."
-#: models.py:2599
+#: models.py:2602
msgid "Internal ref."
msgstr "Réf. interne"
-#: models.py:2642
+#: models.py:2645
msgid "Surface (m2)"
msgstr "Surface (m2)"
-#: models.py:2643 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2646 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr "Localisation"
-#: models.py:2668
+#: models.py:2671
msgid "Is preventive"
msgstr "Est du préventif"
-#: models.py:2672
+#: models.py:2675
msgid "Operation types"
msgstr "Types d'opération"
-#: models.py:2701
+#: models.py:2704
msgid "Preventive"
msgstr "Préventif"
-#: models.py:2702
+#: models.py:2705
msgid "Research"
msgstr "Programmé"
@@ -1427,28 +1423,40 @@ msgstr "Gestion des comptes"
msgid "Account deletion"
msgstr "Suppression de comptes"
-#: views.py:977 views.py:1046
+#: views.py:210
+msgid "Archaeological file"
+msgstr "Dossier"
+
+#: views.py:213
+msgid "Context record"
+msgstr "Unité d'Enregistrement"
+
+#: views.py:215
+msgid "Find"
+msgstr "Mobilier"
+
+#: views.py:1103 views.py:1172
msgid "Operation not permitted."
msgstr "Opération non permise."
-#: views.py:979
+#: views.py:1105
#, python-format
msgid "New %s"
msgstr "Nouveau %s"
-#: views.py:1065 views.py:1119
+#: views.py:1191 views.py:1245
msgid "Operations"
msgstr "Opérations"
-#: views.py:1308 templates/ishtar/import_list.html:43
+#: views.py:1434 templates/ishtar/import_list.html:43
msgid "Link unmatched items"
msgstr "Associer les éléments non rapprochés"
-#: views.py:1323
+#: views.py:1449
msgid "Delete import"
msgstr "Suppression de l'import"
-#: views.py:1382 views.py:1398
+#: views.py:1508 views.py:1524
msgid "Corporation manager"
msgstr "Représentant de la personne morale"
@@ -1515,29 +1523,29 @@ msgstr "Merci pour l'intérêt que vous portez au projet."
msgid "The %(app_name)s team"
msgstr "L'équipe %(app_name)s"
-#: templates/base.html:36
+#: templates/base.html:41
msgid "Logged in"
msgstr "Connecté"
-#: templates/base.html:37
+#: templates/base.html:42
msgid "Log out"
msgstr "Déconnexion"
-#: templates/base.html:38
+#: templates/base.html:43
msgid "Change password"
msgstr "Changement de mot de passe"
-#: templates/base.html:40 templates/registration/activate.html:10
+#: templates/base.html:45 templates/registration/activate.html:10
#: templates/registration/login.html:8 templates/registration/login.html:10
#: templates/registration/password_reset_complete.html:8
msgid "Log in"
msgstr "Connexion"
-#: templates/base.html:46
+#: templates/base.html:51
msgid "Lang"
msgstr "Langue"
-#: templates/base.html:46 templates/base.html.py:93 templates/welcome.html:8
+#: templates/base.html:51 templates/base.html.py:75 templates/welcome.html:8
#: templates/welcome.html.py:9 templates/welcome.html:10
#: templates/welcome.html.py:11 templates/ishtar/manage_basket.html:4
#: templates/ishtar/blocks/window_field.html:1
@@ -1547,27 +1555,23 @@ msgstr "Langue"
msgid ":"
msgstr " :"
-#: templates/base.html:71
-msgid "Default selected items"
-msgstr "Éléments sélectionnés par défaut"
-
-#: templates/base.html:91
+#: templates/base.html:73
msgid "Current items"
msgstr "Éléments courants"
-#: templates/base.html:125
+#: templates/base.html:107
msgid "Processing..."
msgstr "En traitement..."
-#: templates/base.html:126
+#: templates/base.html:108
msgid "This can be long."
msgstr "Cela peut être long."
-#: templates/base.html:127
+#: templates/base.html:109
msgid "Time to take a coffee?"
msgstr "Il est temps de prendre un café ?"
-#: templates/base.html:128
+#: templates/base.html:110
msgid "Time to take another coffee?"
msgstr "Pourquoi pas un autre café ?"
@@ -2120,6 +2124,20 @@ msgstr "Documents des Unités d'Enregistrement associées"
msgid "Documents associated to finds"
msgstr "Documents du mobilier associé"
+#: templates/ishtar/blocks/shortcut_menu.html:6
+msgid ""
+"Pin an item in order to constrain default searches with this item. By "
+"default only your items are displayed. New created and modified items are "
+"auto-pin."
+msgstr ""
+"Épingler un élément permet de contraindre les recherches par défaut à cet "
+"élément. Par défaut seuls ses propres éléments sont listés. Les nouveaux "
+"éléments, ceux modifiés sont auto-épinglés."
+
+#: templates/ishtar/blocks/shortcut_menu.html:18
+msgid "Unpin"
+msgstr "Détacher"
+
#: templates/ishtar/blocks/window_nav.html:6
msgid "Previous version"
msgstr "Version précédente"
@@ -2144,17 +2162,25 @@ msgstr "Restaurer"
msgid "Next version"
msgstr "Version suivante"
-#: templates/ishtar/blocks/window_nav.html:45
+#: templates/ishtar/blocks/window_nav.html:46
+msgid "Item pined in your shortcut menu."
+msgstr "Cet élément a été épinglé dans votre menu de raccourcis."
+
+#: templates/ishtar/blocks/window_nav.html:46
+msgid "Pin"
+msgstr "Épingler"
+
+#: templates/ishtar/blocks/window_nav.html:52
msgid "Export as OpenOffice.org file"
msgstr "Exporter en fichier OpenOffice.org"
-#: templates/ishtar/blocks/window_nav.html:45
+#: templates/ishtar/blocks/window_nav.html:52
msgid "Export as PDF file"
msgstr "Exporter en fichier PDF"
-#: templates/ishtar/blocks/window_nav.html:49
+#: templates/ishtar/blocks/window_nav.html:56
msgid "Relation between items are not historized."
-msgstr ""
+msgstr "Les relations entre éléments ne sont pas historisés."
#: templates/ishtar/blocks/window_tables/documents.html:10
msgid "Related to"
diff --git a/version.py b/version.py
index 41407c8a3..454f45b60 100644
--- a/version.py
+++ b/version.py
@@ -1,4 +1,4 @@
-VERSION = (0, 97, 8)
+VERSION = (0, 98, 0)
def get_version():