summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--CHANGES.md15
-rw-r--r--archaeological_context_records/forms.py5
-rw-r--r--archaeological_context_records/ishtar_menu.py2
-rw-r--r--archaeological_context_records/locale/django.pot209
-rw-r--r--archaeological_context_records/migrations/0010_view_record_relations.py659
-rw-r--r--archaeological_context_records/models.py79
-rw-r--r--archaeological_context_records/templates/ishtar/sheet_contextrecord.html2
-rw-r--r--archaeological_context_records/tests.py6
-rw-r--r--archaeological_context_records/urls.py6
-rw-r--r--archaeological_context_records/views.py6
-rw-r--r--archaeological_files/forms.py4
-rw-r--r--archaeological_files/ishtar_menu.py2
-rw-r--r--archaeological_files/locale/django.pot159
-rw-r--r--archaeological_files/migrations/0001_initial.py2
-rw-r--r--archaeological_files/models.py20
-rw-r--r--archaeological_files/templates/ishtar/sheet_file.html16
-rw-r--r--archaeological_files/urls.py10
-rw-r--r--archaeological_files/wizards.py5
-rw-r--r--archaeological_files_pdl/forms.py4
-rw-r--r--archaeological_files_pdl/locale/django.pot65
-rw-r--r--archaeological_files_pdl/wizards.py3
-rw-r--r--archaeological_finds/admin.py18
-rw-r--r--archaeological_finds/forms.py232
-rw-r--r--archaeological_finds/forms_treatments.py602
-rw-r--r--archaeological_finds/ishtar_menu.py171
-rw-r--r--archaeological_finds/locale/django.pot861
-rw-r--r--archaeological_finds/migrations/0001_initial.py8
-rw-r--r--archaeological_finds/migrations/0013_auto__add_treatmentfilesource__add_treatmentfile__add_unique_treatment.py1641
-rw-r--r--archaeological_finds/migrations/0014_treats_generate_year_index.py1163
-rw-r--r--archaeological_finds/migrations/0015_auto__add_unique_treatment_index_year.py1161
-rw-r--r--archaeological_finds/migrations/0016_on_delete_for_views.py1166
-rw-r--r--archaeological_finds/models.py1033
-rw-r--r--archaeological_finds/models_finds.py813
-rw-r--r--archaeological_finds/models_treatments.py568
-rw-r--r--archaeological_finds/templates/ishtar/sheet_find.html43
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatment.html53
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatment_pdf.html18
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatment_window.html3
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatmentfile.html50
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatmentfile_pdf.html18
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatmentfile_window.html3
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatmentfilesource.html12
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatmentfilesource_pdf.html18
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatmentfilesource_window.html3
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatmentsource.html12
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatmentsource_pdf.html18
-rw-r--r--archaeological_finds/templates/ishtar/sheet_treatmentsource_window.html3
-rw-r--r--archaeological_finds/tests.py220
-rw-r--r--archaeological_finds/urls.py182
-rw-r--r--archaeological_finds/views.py364
-rw-r--r--archaeological_finds/wizards.py138
-rw-r--r--archaeological_operations/admin.py10
-rw-r--r--archaeological_operations/forms.py22
-rw-r--r--archaeological_operations/import_from_csv.py2
-rw-r--r--archaeological_operations/import_from_dbf.py2
-rw-r--r--archaeological_operations/ishtar_menu.py4
-rw-r--r--archaeological_operations/locale/django.pot580
-rwxr-xr-xarchaeological_operations/management/commands/import_operations_old.py2
-rw-r--r--archaeological_operations/migrations/0001_initial.py3
-rw-r--r--archaeological_operations/migrations/0012_auto__add_field_administrativeact_treatment_file__add_field_administra.py860
-rw-r--r--archaeological_operations/models.py63
-rw-r--r--archaeological_operations/templates/ishtar/sheet_administrativeact.html48
-rw-r--r--archaeological_operations/templates/ishtar/sheet_operation.html8
-rw-r--r--archaeological_operations/tests.py114
-rw-r--r--archaeological_operations/urls.py6
-rw-r--r--archaeological_operations/views.py36
-rw-r--r--archaeological_operations/wizards.py21
-rw-r--r--archaeological_warehouse/admin.py2
-rw-r--r--archaeological_warehouse/forms.py142
-rw-r--r--archaeological_warehouse/ishtar_menu.py57
-rw-r--r--archaeological_warehouse/locale/django.pot235
-rw-r--r--archaeological_warehouse/migrations/0003_auto__add_warehousedivisionlink__add_unique_warehousedivisionlink_ware.py414
-rw-r--r--archaeological_warehouse/models.py164
-rw-r--r--archaeological_warehouse/templates/ishtar/sheet_container.html23
-rw-r--r--archaeological_warehouse/templates/ishtar/sheet_container_pdf.html18
-rw-r--r--archaeological_warehouse/templates/ishtar/sheet_container_window.html3
-rw-r--r--archaeological_warehouse/templates/ishtar/sheet_warehouse.html26
-rw-r--r--archaeological_warehouse/templates/ishtar/sheet_warehouse_pdf.html18
-rw-r--r--archaeological_warehouse/templates/ishtar/sheet_warehouse_window.html3
-rw-r--r--archaeological_warehouse/templates/ishtar/wizard/wizard_containerlocalisation.html7
-rw-r--r--archaeological_warehouse/urls.py39
-rw-r--r--archaeological_warehouse/views.py66
-rw-r--r--archaeological_warehouse/wizards.py95
-rw-r--r--example_project/settings.py2
-rw-r--r--ishtar_common/fixtures/initial_importtypes-fr.json3531
-rw-r--r--ishtar_common/forms.py4
-rw-r--r--ishtar_common/forms_common.py4
-rw-r--r--ishtar_common/ishtar_menu.py6
-rw-r--r--ishtar_common/locale/django.pot666
-rw-r--r--ishtar_common/migrations/0011_generate_title.py1
-rw-r--r--ishtar_common/migrations/0015_remove_ishtar_local_prefix.py1
-rw-r--r--ishtar_common/models.py37
-rw-r--r--ishtar_common/static/js/ishtar.js12
-rw-r--r--ishtar_common/static/media/style.css13
-rw-r--r--ishtar_common/templates/base.html4
-rw-r--r--ishtar_common/templates/ishtar/blocks/window_nav.html2
-rw-r--r--ishtar_common/templates/ishtar/manage_basket.html5
-rw-r--r--ishtar_common/templates/ishtar/sheet_organization.html4
-rw-r--r--ishtar_common/templates/ishtar/sheet_person.html6
-rw-r--r--ishtar_common/templates/ishtar/wizard/confirm_wizard.html4
-rw-r--r--ishtar_common/templates/ishtar/wizard/default_wizard.html9
-rw-r--r--ishtar_common/templates/ishtar/wizard/wizard_person_deletion.html2
-rw-r--r--ishtar_common/templates/sheet_ope.html2
-rw-r--r--ishtar_common/templatetags/window_tables.py24
-rw-r--r--ishtar_common/tests.py87
-rw-r--r--ishtar_common/utils.py13
-rw-r--r--ishtar_common/views.py88
-rw-r--r--ishtar_common/widgets.py52
-rw-r--r--ishtar_common/wizards.py86
-rw-r--r--translations/de/ishtar_common.po667
-rw-r--r--translations/fr/archaeological_context_records.po241
-rw-r--r--translations/fr/archaeological_files.po187
-rw-r--r--translations/fr/archaeological_files_pdl.po75
-rw-r--r--translations/fr/archaeological_finds.po957
-rw-r--r--translations/fr/archaeological_operations.po628
-rw-r--r--translations/fr/archaeological_warehouse.po249
-rw-r--r--translations/fr/ishtar_common.po772
-rw-r--r--version.py2
119 files changed, 18514 insertions, 4898 deletions
diff --git a/.gitignore b/.gitignore
index 0b53c2166..f7e5c5da9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,5 @@ oook_replace
dist
ishtar.egg-info
.idea
+*.log
+example_project/ishtar
diff --git a/CHANGES.md b/CHANGES.md
index 9f671d7b4..0067595b4 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,21 @@
Ishtar changelog
================
+0.99.0 (2017-01-10)
+-------------------
+
+### Main features ###
+- Management of treatments, treatments requests, containers, associated sources and administrative acts
+
+### Features ###
+
+- Performances improvements for tables
+- Better cache key management
+- Fix tests
+- Shortcut menu: put research archaeological files in blue
+- Finds: add thickness, point of topographic reference, MNI fields
+- Explicit CSV headers
+
0.98.10 (2016-11-03)
--------------------
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py
index 72cb24097..0452243e2 100644
--- a/archaeological_context_records/forms.py
+++ b/archaeological_context_records/forms.py
@@ -66,13 +66,13 @@ class RecordSelect(TableSelect):
operation__operation_code = forms.IntegerField(
label=_(u"Operation's number (index by year)"))
archaeological_sites = forms.IntegerField(
- label=_("Archaelogical site"),
+ label=_("Archaeological site"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-archaeologicalsite'),
associated_model=ArchaeologicalSite),
validators=[valid_id(ArchaeologicalSite)])
ope_relation_types = forms.MultipleChoiceField(
- label=_(u"Search within operation relations"), choices=[],
+ label=_(u"Search within related operations"), choices=[],
widget=forms.CheckboxSelectMultiple)
datings__period = forms.ChoiceField(label=_(u"Period"), choices=[])
unit = forms.ChoiceField(label=_(u"Unit type"), choices=[])
@@ -159,6 +159,7 @@ class RecordFormGeneral(ManageOldType, forms.Form):
max_length=255, required=False, widget=widgets.ImageFileInput())
def __init__(self, *args, **kwargs):
+ # TODO: simplify
operation = None
if 'data' in kwargs and kwargs['data'] and \
('operation' in kwargs['data'] or
diff --git a/archaeological_context_records/ishtar_menu.py b/archaeological_context_records/ishtar_menu.py
index f8e33d44b..de8a02438 100644
--- a/archaeological_context_records/ishtar_menu.py
+++ b/archaeological_context_records/ishtar_menu.py
@@ -52,7 +52,7 @@ MENU_SECTIONS = [
access_controls=['view_contextrecord',
'view_own_contextrecord']),
MenuItem('record_source_creation',
- _(u"Add"),
+ _(u"Creation"),
model=models.ContextRecordSource,
access_controls=[
'change_contextrecord',
diff --git a/archaeological_context_records/locale/django.pot b/archaeological_context_records/locale/django.pot
index 283d5b050..2931bb8ee 100644
--- a/archaeological_context_records/locale/django.pot
+++ b/archaeological_context_records/locale/django.pot
@@ -3,15 +3,15 @@
# This file is distributed under the same license as the Ishtar package.
# Étienne Loks <etienne.loks at peacefrogs net>, 2010-2015.
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
-# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata
+# Étienne Loks <etienne.loks@iggdrasil.net>, 2017. #zanata
msgid ""
msgstr ""
-#: forms.py:47 forms.py:51 models.py:164 wizards.py:77
+#: forms.py:47 forms.py:51 models.py:175 wizards.py:77
msgid "Operation"
msgstr ""
-#: forms.py:59 forms.py:137 models.py:166
+#: forms.py:59 forms.py:137 models.py:177 models.py:453
msgid "ID"
msgstr ""
@@ -28,14 +28,14 @@ msgid "Operation's number (index by year)"
msgstr ""
#: forms.py:69
-msgid "Archaelogical site"
+msgid "Archaeological site"
msgstr ""
#: forms.py:75
-msgid "Search within operation relations"
+msgid "Search within related operations"
msgstr ""
-#: forms.py:77 forms.py:232 models.py:55
+#: forms.py:77 forms.py:233 models.py:55
msgid "Period"
msgstr ""
@@ -51,7 +51,7 @@ msgstr ""
msgid "Search within relations"
msgstr ""
-#: forms.py:111 forms.py:335 views.py:88
+#: forms.py:111 forms.py:336 views.py:92
msgid "Context record search"
msgstr ""
@@ -63,43 +63,44 @@ msgstr ""
msgid "General"
msgstr ""
-#: forms.py:136 models.py:131 models.py:162
+#: forms.py:136 models.py:132 models.py:173 models.py:455
msgid "Parcel"
msgstr ""
-#: forms.py:139 models.py:167 templates/ishtar/sheet_contextrecord.html:27
+#: forms.py:139 models.py:178 models.py:456
+#: templates/ishtar/sheet_contextrecord.html:27
msgid "Description"
msgstr ""
-#: forms.py:141 models.py:168
+#: forms.py:141 models.py:179
msgid "General comment"
msgstr ""
-#: forms.py:143 models.py:172
+#: forms.py:143 models.py:183
msgid "Length (m)"
msgstr ""
-#: forms.py:144 models.py:173
+#: forms.py:144 models.py:184
msgid "Width (m)"
msgstr ""
-#: forms.py:145 models.py:174
+#: forms.py:145 models.py:185
msgid "Thickness (m)"
msgstr ""
-#: forms.py:146 models.py:176
+#: forms.py:146 models.py:187
msgid "Depth (m)"
msgstr ""
-#: forms.py:147 models.py:184
+#: forms.py:147 models.py:195 models.py:454
msgid "Unit"
msgstr ""
-#: forms.py:148 models.py:186
+#: forms.py:148 models.py:197
msgid "Has furniture?"
msgstr ""
-#: forms.py:151 models.py:178
+#: forms.py:151 models.py:189
msgid "Location"
msgstr ""
@@ -114,116 +115,116 @@ msgid ""
"p>"
msgstr ""
-#: forms.py:221
+#: forms.py:222
msgid "This ID already exists for this operation."
msgstr ""
-#: forms.py:227 forms.py:254 models.py:66
+#: forms.py:228 forms.py:255 models.py:66
msgid "Dating"
msgstr ""
-#: forms.py:233 models.py:56
+#: forms.py:234 models.py:56
msgid "Start date"
msgstr ""
-#: forms.py:234 models.py:57 models.py:171
+#: forms.py:235 models.py:57 models.py:182
msgid "End date"
msgstr ""
-#: forms.py:235 models.py:60
+#: forms.py:236 models.py:60
msgid "Quality"
msgstr ""
-#: forms.py:236 models.py:38 models.py:58
+#: forms.py:237 models.py:38 models.py:58
msgid "Dating type"
msgstr ""
-#: forms.py:263 ishtar_menu.py:29 models.py:457
+#: forms.py:264 ishtar_menu.py:29 models.py:514
msgid "Context record"
msgstr ""
-#: forms.py:284
+#: forms.py:285
msgid "Relations"
msgstr ""
-#: forms.py:288 forms.py:296 models.py:189
+#: forms.py:289 forms.py:297 models.py:200
#: templates/ishtar/sheet_contextrecord.html:39
msgid "Interpretation"
msgstr ""
-#: forms.py:292
+#: forms.py:293
msgid "Comments on dating"
msgstr ""
-#: forms.py:294 models.py:188
+#: forms.py:295 models.py:199
msgid "Filling"
msgstr ""
-#: forms.py:298 models.py:209
+#: forms.py:299 models.py:220
msgid "Activity"
msgstr ""
-#: forms.py:300 models.py:207
+#: forms.py:301 models.py:218
msgid "Identification"
msgstr ""
-#: forms.py:302 models.py:192
+#: forms.py:303 models.py:203
msgid "TAQ"
msgstr ""
-#: forms.py:303 models.py:196
+#: forms.py:304 models.py:207
msgid "Estimated TAQ"
msgstr ""
-#: forms.py:305 models.py:199
+#: forms.py:306 models.py:210
msgid "TPQ"
msgstr ""
-#: forms.py:306 models.py:203
+#: forms.py:307 models.py:214
msgid "Estimated TPQ"
msgstr ""
-#: forms.py:321
+#: forms.py:322
msgid "Operation search"
msgstr ""
-#: forms.py:323
+#: forms.py:324
msgid "You should select an operation."
msgstr ""
-#: forms.py:328
+#: forms.py:329
msgid "Would you like to delete this context record?"
msgstr ""
-#: forms.py:337
+#: forms.py:338
msgid "You should select a context record."
msgstr ""
-#: forms.py:342
+#: forms.py:343
msgid "Year of the operation"
msgstr ""
-#: forms.py:344
+#: forms.py:345
msgid "Numeric reference"
msgstr ""
-#: forms.py:350
+#: forms.py:351
msgid "Town of the operation"
msgstr ""
-#: forms.py:352
+#: forms.py:353
msgid "Period of the context record"
msgstr ""
-#: forms.py:354
+#: forms.py:355
msgid "Unit type of the context record"
msgstr ""
-#: forms.py:367
+#: forms.py:368
msgid "Documentation search"
msgstr ""
-#: forms.py:369
+#: forms.py:370
msgid "You should select a document."
msgstr ""
@@ -231,7 +232,7 @@ msgstr ""
msgid "Search"
msgstr ""
-#: ishtar_menu.py:35
+#: ishtar_menu.py:35 ishtar_menu.py:55
msgid "Creation"
msgstr ""
@@ -247,10 +248,6 @@ msgstr ""
msgid "Documentation"
msgstr ""
-#: ishtar_menu.py:55
-msgid "Add"
-msgstr ""
-
#: models.py:39
msgid "Dating types"
msgstr ""
@@ -303,176 +300,204 @@ msgstr ""
msgid "Identification Types"
msgstr ""
-#: models.py:159
-msgid "External ID"
+#: models.py:133 models.py:457
+msgid "Periods"
msgstr ""
#: models.py:161
+msgid "Parcel (town)"
+msgstr ""
+
+#: models.py:162
+msgid "Related context records"
+msgstr ""
+
+#: models.py:164
+msgid "Parcel (external ID)"
+msgstr ""
+
+#: models.py:165
+msgid "Datings (period)"
+msgstr ""
+
+#: models.py:166
+msgid "Parcel (year)"
+msgstr ""
+
+#: models.py:170
+msgid "External ID"
+msgstr ""
+
+#: models.py:172
msgid "External ID is set automatically"
msgstr ""
-#: models.py:169
+#: models.py:180
msgid "Date d'ouverture"
msgstr ""
-#: models.py:179
+#: models.py:190
msgid "A short description of the location of the context record"
msgstr ""
-#: models.py:182
+#: models.py:193
msgid "Comment on datings"
msgstr ""
-#: models.py:193
+#: models.py:204
msgid ""
"\"Terminus Ante Quem\" the context record can't have been created after this "
"date"
msgstr ""
-#: models.py:197
+#: models.py:208
msgid "Estimation of a \"Terminus Ante Quem\""
msgstr ""
-#: models.py:200
+#: models.py:211
msgid ""
"\"Terminus Post Quem\" the context record can't have been created before "
"this date"
msgstr ""
-#: models.py:204
+#: models.py:215
msgid "Estimation of a \"Terminus Post Quem\""
msgstr ""
-#: models.py:212
+#: models.py:223
msgid "Point"
msgstr ""
-#: models.py:213
+#: models.py:224
msgid "Polygon"
msgstr ""
-#: models.py:214
+#: models.py:225
msgid "Cached name"
msgstr ""
-#: models.py:218 models.py:219 templates/ishtar/sheet_contextrecord.html:4
+#: models.py:229 models.py:230 templates/ishtar/sheet_contextrecord.html:4
msgid "Context Record"
msgstr ""
-#: models.py:221
+#: models.py:232
msgid "Can view all Context Records"
msgstr ""
-#: models.py:223
+#: models.py:234
msgid "Can view own Context Record"
msgstr ""
-#: models.py:225
+#: models.py:236
msgid "Can add own Context Record"
msgstr ""
-#: models.py:227
+#: models.py:238
msgid "Can change own Context Record"
msgstr ""
-#: models.py:229
+#: models.py:240
msgid "Can delete own Context Record"
msgstr ""
-#: models.py:239
+#: models.py:250
msgctxt "short"
msgid "Context record"
msgstr ""
-#: models.py:375
+#: models.py:387
msgid "Inverse relation"
msgstr ""
-#: models.py:379 models.py:403
+#: models.py:391 models.py:414 models.py:452
msgid "Relation type"
msgstr ""
-#: models.py:380
+#: models.py:392
msgid "Relation types"
msgstr ""
-#: models.py:398
+#: models.py:409
msgid "ID (left)"
msgstr ""
-#: models.py:399
+#: models.py:410
msgid "Unit (left)"
msgstr ""
-#: models.py:400
+#: models.py:411
msgid "Parcel (left)"
msgstr ""
-#: models.py:401
+#: models.py:412
msgid "Description (left)"
msgstr ""
-#: models.py:402
+#: models.py:413
msgid "Periods (left)"
msgstr ""
-#: models.py:404
+#: models.py:415
+msgid "ID (right)"
+msgstr ""
+
+#: models.py:416
msgid "Unit (right)"
msgstr ""
-#: models.py:405 models.py:406
+#: models.py:417
msgid "Parcel (right)"
msgstr ""
-#: models.py:407
+#: models.py:418
msgid "Description (right)"
msgstr ""
-#: models.py:408
+#: models.py:419
msgid "Periods (right)"
msgstr ""
-#: models.py:417
+#: models.py:428
msgid "Record relation"
msgstr ""
-#: models.py:418
+#: models.py:429
msgid "Record relations"
msgstr ""
-#: models.py:454
+#: models.py:511
msgid "Context record documentation"
msgstr ""
-#: models.py:455
+#: models.py:512
msgid "Context record documentations"
msgstr ""
-#: views.py:98
+#: views.py:102
msgid "New context record"
msgstr ""
-#: views.py:109
+#: views.py:113
msgid "Context record modification"
msgstr ""
-#: views.py:123
+#: views.py:127
msgid "Context record deletion"
msgstr ""
-#: views.py:128
+#: views.py:132
msgid "Context record: source search"
msgstr ""
-#: views.py:136
+#: views.py:140
msgid "Context record: new source"
msgstr ""
-#: views.py:144
+#: views.py:148
msgid "Context record: source modification"
msgstr ""
-#: views.py:159
+#: views.py:163
msgid "Context record: source deletion"
msgstr ""
diff --git a/archaeological_context_records/migrations/0010_view_record_relations.py b/archaeological_context_records/migrations/0010_view_record_relations.py
new file mode 100644
index 000000000..ebf4a1349
--- /dev/null
+++ b/archaeological_context_records/migrations/0010_view_record_relations.py
@@ -0,0 +1,659 @@
+# -*- 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):
+ sql = """
+ CREATE VIEW record_relations AS
+ SELECT DISTINCT right_record_id as id,
+ right_record_id,
+ left_record_id,
+ relation_type_id
+ FROM archaeological_context_records_recordrelations;
+
+ -- deactivate deletion
+ CREATE RULE record_relations_del AS ON DELETE TO record_relations
+ DO INSTEAD DELETE FROM record_relations where id=NULL;
+ """
+ db.execute(sql)
+
+ def backwards(self, orm):
+ sql = """
+ DROP VIEW record_relations;
+ """
+ db.execute(sql)
+
+ 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': '255', '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': '255', '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': '255', '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': '255', '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': '255', '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': '255', '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.recordrelationview': {
+ 'Meta': {'unique_together': "(('id', 'right_record'),)", 'object_name': 'RecordRelationView', 'db_table': "'find_uptreatments'", 'managed': 'False'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'relation_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['archaeological_context_records.RelationType']"}),
+ 'right_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", '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': '2017'})
+ },
+ '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': '255', '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'}),
+ 'scientific_documentation_comment': ('django.db.models.fields.TextField', [], {'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': '255', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operations'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ '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']},
+ 'advanced_shortcut_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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 3f4dc1598..cf39870ca 100644
--- a/archaeological_context_records/models.py
+++ b/archaeological_context_records/models.py
@@ -29,7 +29,7 @@ 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, \
- ImageModel, post_save_cache
+ ImageModel, post_save_cache, ValueGetter
from archaeological_operations.models import Operation, Period, Parcel
@@ -118,7 +118,8 @@ post_save.connect(post_save_cache, sender=IdentificationType)
post_delete.connect(post_save_cache, sender=IdentificationType)
-class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
+class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms,
+ ValueGetter, ShortMenuItem):
SHOW_URL = 'show-contextrecord'
SLUG = 'contextrecord'
TABLE_COLS = ['parcel__town', 'operation__year',
@@ -127,8 +128,9 @@ class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
if settings.COUNTRY == 'fr':
TABLE_COLS.insert(1, 'operation__code_patriarche')
TABLE_COLS_FOR_OPE = ['label', 'parcel', 'unit',
- 'datings__period', 'description']
- TABLE_COLS_FOR_OPE_LBL = {'section__parcel_number': _("Parcel")}
+ 'datings__period__label', 'description']
+ COL_LABELS = {'section__parcel_number': _(u"Parcel"),
+ 'datings__period__label': _(u"Periods")}
CONTEXTUAL_TABLE_COLS = {
'full': {
'related_context_records': 'detailled_related_context_records'
@@ -155,6 +157,14 @@ class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
RELATIVE_SESSION_NAMES = [
('operation', 'operation__pk'),
('file', 'operation__associated_file__pk')]
+ EXTRA_FULL_FIELDS_LABELS = {
+ 'parcel__town': _(u"Parcel (town)"),
+ 'detailled_related_context_records': _(u"Related context records"),
+ 'operation__code_patriarche': u"Operation (code patriarche)",
+ 'parcel__external_id': _(u"Parcel (external ID)"),
+ 'datings__period': _(u"Datings (period)"),
+ 'parcel__year': _(u"Parcel (year)"),
+ }
# fields
external_id = models.TextField(_(u"External ID"), blank=True, null=True)
@@ -259,9 +269,9 @@ class ContextRecord(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
@classmethod
def get_owns(cls, user, menu_filtr=None, limit=None):
- replace_query = {}
- if menu_filtr:
- replace_query = {'operation': menu_filtr}
+ replace_query = None
+ if menu_filtr and 'operation' in menu_filtr:
+ replace_query = Q(operation=menu_filtr['operation'])
owns = super(ContextRecord, cls).get_owns(
user, replace_query=replace_query,
limit=limit)
@@ -392,19 +402,18 @@ class RecordRelations(GeneralRecordRelations, models.Model):
relation_type = models.ForeignKey(RelationType)
TABLE_COLS = [
"left_record__label", "left_record__unit", "left_record__parcel",
- "left_record__datings__period", "left_record__description",
"relation_type",
"right_record__label", "right_record__unit", "right_record__parcel",
- "right_record__datings__period", "right_record__description"]
- TABLE_COLS_LBL = {
+ ]
+ COL_LABELS = {
"left_record__label": _(u"ID (left)"),
"left_record__unit": _(u"Unit (left)"),
"left_record__parcel": _(u"Parcel (left)"),
"left_record__description": _(u"Description (left)"),
"left_record__datings__period": _(u"Periods (left)"),
"relation_type": _(u"Relation type"),
- "right_record__label": _(u"Unit (right)"),
- "right_record__unit": _(u"Parcel (right)"),
+ "right_record__label": _(u"ID (right)"),
+ "right_record__unit": _(u"Unit (right)"),
"right_record__parcel": _(u"Parcel (right)"),
"right_record__description": _(u"Description (right)"),
"right_record__datings__period": _(u"Periods (right)")
@@ -422,6 +431,52 @@ class RecordRelations(GeneralRecordRelations, models.Model):
post_delete.connect(post_delete_record_relation, sender=RecordRelations)
+class RecordRelationView(models.Model):
+ """
+ CREATE VIEW record_relations AS
+ SELECT DISTINCT right_record_id as id,
+ right_record_id,
+ left_record_id,
+ relation_type_id
+ FROM archaeological_context_records_recordrelations;
+
+ -- deactivate deletion
+ CREATE RULE record_relations_del AS ON DELETE TO record_relations
+ DO INSTEAD DELETE FROM record_relations where id=NULL;
+ """
+ TABLE_COLS = [
+ "relation_type",
+ "right_record__label", "right_record__unit", "right_record__parcel",
+ "right_record__datings__period", "right_record__description"]
+ COL_LABELS = {
+ "relation_type": _(u"Relation type"),
+ "right_record__label": _(u"ID"),
+ "right_record__unit": _(u"Unit"),
+ "right_record__parcel": _(u"Parcel"),
+ "right_record__description": _(u"Description"),
+ "right_record__datings__period": _(u"Periods")
+ }
+
+ # search parameters
+ EXTRA_REQUEST_KEYS = {
+ "left_record_id": "left_record_id"
+ }
+ left_record = models.ForeignKey(ContextRecord, related_name='+',
+ on_delete=models.DO_NOTHING)
+ right_record = models.ForeignKey(ContextRecord, related_name='+',
+ on_delete=models.DO_NOTHING)
+ relation_type = models.ForeignKey(RelationType, related_name='+',
+ on_delete=models.DO_NOTHING)
+
+ class Meta:
+ managed = False
+ db_table = 'record_relations'
+ unique_together = ('id', 'right_record')
+
+ def __unicode__(self):
+ return u"{} \"{}\"".format(self.relation_type, self.right_record)
+
+
class ContextRecordSource(Source):
SHOW_URL = 'show-contextrecordsource'
MODIFY_URL = 'record_source_modify'
diff --git a/archaeological_context_records/templates/ishtar/sheet_contextrecord.html b/archaeological_context_records/templates/ishtar/sheet_contextrecord.html
index e5edb4af5..e5304f9cb 100644
--- a/archaeological_context_records/templates/ishtar/sheet_contextrecord.html
+++ b/archaeological_context_records/templates/ishtar/sheet_contextrecord.html
@@ -59,7 +59,7 @@
{% trans "Context record relations" as cr_rels %}
{% if item.right_relations.count %}
-{% dynamic_table_document cr_rels 'context_records_relations' 'left_record' item.pk '' output %}
+{% dynamic_table_document cr_rels 'context_records_relations' 'left_record_id' item.pk '' output %}
{% endif %}
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
index 9b8d4f000..fe4bb7674 100644
--- a/archaeological_context_records/tests.py
+++ b/archaeological_context_records/tests.py
@@ -98,7 +98,7 @@ class ContextRecordInit(OperationInitTest):
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()
+ data['parcel'] = self.get_default_parcel(force=force)
if not data.get('history_modifier'):
data['history_modifier'] = self.get_default_user()
@@ -108,6 +108,8 @@ class ContextRecordInit(OperationInitTest):
return self.context_records
def get_default_context_record(self, force=False):
+ if force:
+ return self.create_context_record(force=force)[-1]
return self.create_context_record(force=force)[0]
def tearDown(self):
@@ -155,7 +157,7 @@ class ContextRecordTest(ContextRecordInit, TestCase):
{'label': 'cr 1',
'relation_types_0': self.cr_rel_type.pk})
self.assertEqual(json.loads(response.content)['total'], 2)
- # test search between operation relations
+ # test search between related operations
first_ope = self.operations[0]
first_ope.year = 2010
first_ope.save()
diff --git a/archaeological_context_records/urls.py b/archaeological_context_records/urls.py
index 24e8e06eb..341d321f9 100644
--- a/archaeological_context_records/urls.py
+++ b/archaeological_context_records/urls.py
@@ -69,6 +69,9 @@ urlpatterns += patterns(
name='autocomplete-contextrecord'),
url(r'show-contextrecord(?:/(?P<pk>.+))?/(?P<type>.+)?$',
'show_contextrecord', name=models.ContextRecord.SHOW_URL),
+ # show-contextrecordrelation is only a view the id point to a context record
+ url(r'show-contextrecord(?:/(?P<pk>.+))?/(?P<type>.+)?$',
+ 'show_contextrecord', name='show-contextrecordrelation'),
url(r'show-historized-contextrecord/(?P<pk>.+)?/(?P<date>.+)?$',
'show_contextrecord', name='show-historized-contextrecord'),
url(r'revert-contextrecord/(?P<pk>.+)/(?P<date>.+)$',
@@ -94,6 +97,9 @@ urlpatterns += patterns(
kwargs={'full': 'shortcut'}),
url(r'get-contextrecordrelation/(?P<type>.+)?$',
'get_contextrecordrelation', name='get-contextrecordrelation'),
+ url(r'get-contextrecordrelationdetail/(?P<type>.+)?$',
+ 'get_contextrecordrelationdetail',
+ name='get-contextrecordrelationdetail'),
url(r'show-contextrecordsource(?:/(?P<pk>.+))?/(?P<type>.+)?$',
'show_contextrecordsource', name=models.ContextRecordSource.SHOW_URL),
url(r'get-contexrecordsource/(?P<type>.+)?$',
diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py
index 8991e4edd..cf3a13b3b 100644
--- a/archaeological_context_records/views.py
+++ b/archaeological_context_records/views.py
@@ -80,9 +80,13 @@ get_contextrecordsource = get_item(
'get_contextrecordsource', 'contextrecordsource')
get_contextrecordrelation = get_item(
- models.RecordRelations, 'get_contextrecordrelation',
+ models.RecordRelationView, 'get_contextrecordrelation',
'contextrecordrelation')
+get_contextrecordrelationdetail = get_item(
+ models.RecordRelations, 'get_contextrecordrelationdetail',
+ 'contextrecordrelationdetail')
+
record_search_wizard = SearchWizard.as_view([
('general-record_search', RecordFormSelection)],
label=_(u"Context record search"),
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py
index 42a645171..45a05b9b1 100644
--- a/archaeological_files/forms.py
+++ b/archaeological_files/forms.py
@@ -290,7 +290,7 @@ class FileFormPreventive(ManageOldType, forms.Form):
validators=[valid_id(Person)])
responsible_town_planning_service = forms.IntegerField(
required=False,
- label=_(u"Responsible for town planning service"),
+ label=_(u"Responsible for planning service"),
widget=widgets.JQueryAutoComplete(
reverse_lazy(
'autocomplete-person',
@@ -389,7 +389,7 @@ class FinalFileClosingForm(FinalForm):
class FinalFileDeleteForm(FinalForm):
confirm_msg = " "
- confirm_end_msg = _(u"Would you like to delete this archaelogical file ?")
+ confirm_end_msg = _(u"Would you like to delete this archaeological file ?")
class AdministrativeActFileModifySelect(TableSelect):
diff --git a/archaeological_files/ishtar_menu.py b/archaeological_files/ishtar_menu.py
index dfff7d0ab..7ed921b2c 100644
--- a/archaeological_files/ishtar_menu.py
+++ b/archaeological_files/ishtar_menu.py
@@ -61,7 +61,7 @@ MENU_SECTIONS = [
model=AdministrativeAct,
access_controls=['change_administrativeact']),
MenuItem('file_administrativeactfil',
- _(u"Add"),
+ _(u"Creation"),
model=AdministrativeAct,
access_controls=['change_administrativeact']),
MenuItem('file_administrativeactfil_modification',
diff --git a/archaeological_files/locale/django.pot b/archaeological_files/locale/django.pot
index c8e5b3952..b3e38bacf 100644
--- a/archaeological_files/locale/django.pot
+++ b/archaeological_files/locale/django.pot
@@ -8,247 +8,248 @@
msgid ""
msgstr ""
-#: forms.py:52 forms.py:212 forms.py:257 forms.py:404 forms.py:431
+#: forms.py:47 forms.py:210 forms.py:255 forms.py:396 forms.py:423
#: models.py:108 templates/ishtar/sheet_file.html:146
msgid "Year"
msgstr ""
-#: forms.py:53 forms.py:217 forms.py:259 models.py:111
+#: forms.py:48 forms.py:215 forms.py:257 models.py:111
msgid "Numeric reference"
msgstr ""
-#: forms.py:55 forms.py:219
+#: forms.py:50 forms.py:217
msgid "Other reference"
msgstr ""
-#: forms.py:57 forms.py:439
+#: forms.py:52 forms.py:431
msgid "Parcel (section/number/public domain)"
msgstr ""
-#: forms.py:60 forms.py:415 forms.py:442 models.py:543
+#: forms.py:55 forms.py:407 forms.py:434 models.py:546
msgid "Department"
msgstr ""
-#: forms.py:61 forms.py:451
+#: forms.py:56 forms.py:443
msgid "File name"
msgstr ""
-#: forms.py:62 forms.py:158 forms.py:223 models.py:119
+#: forms.py:57 forms.py:154 forms.py:221 models.py:119
msgid "File type"
msgstr ""
-#: forms.py:63
+#: forms.py:58
msgid "Is active?"
msgstr ""
-#: forms.py:64 forms.py:160 forms.py:321
+#: forms.py:59 forms.py:156 forms.py:314
msgid "Saisine type"
msgstr ""
-#: forms.py:65 forms.py:311 models.py:60 models.py:150
+#: forms.py:60 forms.py:304 models.py:60 models.py:150
msgid "Permit type"
msgstr ""
-#: forms.py:67 forms.py:314 models.py:151
+#: forms.py:62 forms.py:307 models.py:151
msgid "Permit reference"
msgstr ""
-#: forms.py:68 forms.py:229 forms.py:372 models.py:180
+#: forms.py:63 forms.py:227 forms.py:364 models.py:180
#: templates/ishtar/sheet_file.html:99
msgid "Comment"
msgstr ""
-#: forms.py:70 templates/ishtar/sheet_file.html:119
+#: forms.py:65 templates/ishtar/sheet_file.html:119
msgid "In charge"
msgstr ""
-#: forms.py:77 forms.py:289 forms.py:453 models.py:126
+#: forms.py:72 forms.py:281 forms.py:445 models.py:126
msgid "General contractor"
msgstr ""
-#: forms.py:84 forms.py:462
+#: forms.py:79 forms.py:453
msgid "Organization of general contractor"
msgstr ""
-#: forms.py:91 forms.py:485
+#: forms.py:87 forms.py:476
msgid "Created by"
msgstr ""
-#: forms.py:98 forms.py:493
+#: forms.py:94 forms.py:484
msgid "Modified by"
msgstr ""
-#: forms.py:129
+#: forms.py:125
msgid "Archaeological file search"
msgstr ""
-#: forms.py:143
+#: forms.py:139
msgid "You should select a file."
msgstr ""
-#: forms.py:146 forms.py:221 models.py:159
+#: forms.py:142 forms.py:219 models.py:159
msgid "Creation date"
msgstr ""
-#: forms.py:147 forms.py:324 models.py:161
+#: forms.py:143 forms.py:317 models.py:161
msgid "Reception date"
msgstr ""
-#: forms.py:152
+#: forms.py:148
msgid "Slicing"
msgstr ""
-#: forms.py:154
+#: forms.py:150
msgid "Department detail"
msgstr ""
-#: forms.py:156
+#: forms.py:152
msgid "Date get from"
msgstr ""
-#: forms.py:162
+#: forms.py:158
msgid "Date after"
msgstr ""
-#: forms.py:164
+#: forms.py:160
msgid "Date before"
msgstr ""
-#: forms.py:201 templates/ishtar/sheet_file.html:14
+#: forms.py:197 templates/ishtar/sheet_file.html:14
msgid "General"
msgstr ""
-#: forms.py:206 models.py:121
+#: forms.py:202 models.py:121
msgid "Person in charge"
msgstr ""
-#: forms.py:220 models.py:118
+#: forms.py:218 models.py:118
msgid "Name"
msgstr ""
-#: forms.py:225 models.py:163
+#: forms.py:223 models.py:163
msgid "Related file"
msgstr ""
-#: forms.py:233 models.py:171
+#: forms.py:231 models.py:171
msgid "Total surface (m2)"
msgstr ""
-#: forms.py:236 models.py:177
+#: forms.py:234 models.py:177
msgid "Main address"
msgstr ""
-#: forms.py:237
+#: forms.py:235
msgid "Main address - complement"
msgstr ""
-#: forms.py:250
+#: forms.py:248
#, python-format
msgid "<br/>(last recorded: %s)"
msgstr ""
-#: forms.py:272
+#: forms.py:270
msgid "Another file with this numeric id exists."
msgstr ""
-#: forms.py:283
+#: forms.py:275
msgid "Preventive informations"
msgstr ""
-#: forms.py:301 models.py:138
-msgid "Responsible for town planning service"
+#: forms.py:293 models.py:138
+msgid "Responsible for planning service"
msgstr ""
-#: forms.py:317 models.py:174
+#: forms.py:310 models.py:174
msgid "Total developed surface (m2)"
msgstr ""
-#: forms.py:340 templates/ishtar/sheet_file.html:89
+#: forms.py:333 templates/ishtar/sheet_file.html:89
#: templates/ishtar/dashboards/dashboard_file.html:45
msgid "Research archaeology"
msgstr ""
-#: forms.py:348 models.py:183 templates/ishtar/sheet_file.html:90
+#: forms.py:341 models.py:183 templates/ishtar/sheet_file.html:90
msgid "Departments"
msgstr ""
-#: forms.py:359 models.py:192
+#: forms.py:351 models.py:192
msgid "Scientist in charge"
msgstr ""
-#: forms.py:361 models.py:186 templates/ishtar/sheet_file.html:92
+#: forms.py:353 models.py:186 templates/ishtar/sheet_file.html:92
msgid "Requested operation type"
msgstr ""
-#: forms.py:363
+#: forms.py:355
msgid "Lead organization"
msgstr ""
-#: forms.py:379 models.py:196 templates/ishtar/sheet_file.html:97
+#: forms.py:371 models.py:196 templates/ishtar/sheet_file.html:97
msgid "Classified area"
msgstr ""
-#: forms.py:381 models.py:198 templates/ishtar/sheet_file.html:98
+#: forms.py:373 models.py:198 templates/ishtar/sheet_file.html:98
msgid "Protected area"
msgstr ""
-#: forms.py:395
+#: forms.py:387
msgid "Would you like to close this archaeological file?"
msgstr ""
-#: forms.py:400
-msgid "Would you like to delete this archaelogical file ?"
+#: forms.py:392
+msgid "Would you like to delete this archaeological file ?"
msgstr ""
-#: forms.py:405 forms.py:432 forms.py:556
+#: forms.py:397 forms.py:424 forms.py:547
msgid "Index"
msgstr ""
-#: forms.py:409 forms.py:436 forms.py:542
+#: forms.py:401 forms.py:428 forms.py:533
msgid "Act type"
msgstr ""
-#: forms.py:410
+#: forms.py:402
msgid "Object (full text search)"
msgstr ""
-#: forms.py:437
+#: forms.py:429
msgid "Indexed?"
msgstr ""
-#: forms.py:443
+#: forms.py:435
msgid "Object"
msgstr ""
-#: forms.py:447
+#: forms.py:439
msgid "Signature date after"
msgstr ""
-#: forms.py:449
+#: forms.py:441
msgid "Signature date before"
msgstr ""
-#: forms.py:470
+#: forms.py:461
msgid "File numeric reference"
msgstr ""
-#: forms.py:471
+#: forms.py:462
msgid "File year"
msgstr ""
-#: forms.py:473
+#: forms.py:464
msgid "File other reference"
msgstr ""
-#: forms.py:475
+#: forms.py:466
msgid "File in charge"
msgstr ""
-#: forms.py:483
+#: forms.py:474
msgid "File permit reference"
msgstr ""
-#: ishtar_menu.py:33 models.py:220 templates/ishtar/sheet_file.html:4
+#: ishtar_menu.py:33 models.py:220 wizards.py:155 wizards.py:165
+#: templates/ishtar/sheet_file.html:4
msgid "Archaeological file"
msgstr ""
@@ -256,7 +257,7 @@ msgstr ""
msgid "Search"
msgstr ""
-#: ishtar_menu.py:41
+#: ishtar_menu.py:41 ishtar_menu.py:64
msgid "Creation"
msgstr ""
@@ -276,10 +277,6 @@ msgstr ""
msgid "Administrative act"
msgstr ""
-#: ishtar_menu.py:64
-msgid "Add"
-msgstr ""
-
#: ishtar_menu.py:76
msgid "Documents"
msgstr ""
@@ -334,11 +331,11 @@ msgid "General contractor organization"
msgstr ""
#: models.py:141
-msgid "Town planning service (raw)"
+msgid "Planning service (raw)"
msgstr ""
#: models.py:147
-msgid "Town planning service organization"
+msgid "Planning service organization"
msgstr ""
#: models.py:153
@@ -382,23 +379,23 @@ msgid "Imported line"
msgstr ""
#: models.py:223
-msgid "Can view all Archaelogical files"
+msgid "Can view all Archaeological files"
msgstr ""
#: models.py:224
-msgid "Can view own Archaelogical file"
+msgid "Can view own Archaeological file"
msgstr ""
#: models.py:225
-msgid "Can add own Archaelogical file"
+msgid "Can add own Archaeological file"
msgstr ""
#: models.py:227
-msgid "Can change own Archaelogical file"
+msgid "Can change own Archaeological file"
msgstr ""
#: models.py:229
-msgid "Can delete own Archaelogical file"
+msgid "Can delete own Archaeological file"
msgstr ""
#: models.py:230
@@ -409,15 +406,15 @@ msgstr ""
msgid "FILE"
msgstr ""
-#: models.py:404
+#: models.py:406
msgid "Multi-town"
msgstr ""
-#: models.py:410
+#: models.py:412
msgid "No town"
msgstr ""
-#: models.py:542
+#: models.py:545
msgid "File"
msgstr ""
@@ -461,10 +458,6 @@ msgstr ""
msgid "Associated operations"
msgstr ""
-#: wizards.py:154 wizards.py:164
-msgid "Archaelogical file"
-msgstr ""
-
#: templates/ishtar/administrativeact_document.html:9
msgid "Document generation"
msgstr ""
@@ -534,7 +527,7 @@ msgid "Surface:"
msgstr ""
#: templates/ishtar/sheet_file.html:62
-msgid "Preventive archaelogical file"
+msgid "Preventive archaeological file"
msgstr ""
#: templates/ishtar/sheet_file.html:64
@@ -577,7 +570,7 @@ msgid "Excavation end date"
msgstr ""
#: templates/ishtar/sheet_file.html:135
-msgid "No operation associated to this archaelogical file"
+msgid "No operation associated to this archaeological file"
msgstr ""
#: templates/ishtar/sheet_file.html:141
diff --git a/archaeological_files/migrations/0001_initial.py b/archaeological_files/migrations/0001_initial.py
index d1d3ea4e6..b8bfe0841 100644
--- a/archaeological_files/migrations/0001_initial.py
+++ b/archaeological_files/migrations/0001_initial.py
@@ -495,4 +495,4 @@ class Migration(SchemaMigration):
}
}
- complete_apps = ['archaeological_files'] \ No newline at end of file
+ complete_apps = ['archaeological_files']
diff --git a/archaeological_files/models.py b/archaeological_files/models.py
index 1d8317b31..638b19d18 100644
--- a/archaeological_files/models.py
+++ b/archaeological_files/models.py
@@ -135,16 +135,16 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
responsible_town_planning_service = models.ForeignKey(
Person, related_name='responsible_town_planning_service_files',
blank=True, null=True,
- verbose_name=_(u"Responsible for town planning service"),
+ verbose_name=_(u"Responsible for planning service"),
on_delete=models.SET_NULL,) # service instructeur - personne
raw_town_planning_service = models.CharField(
- _(u"Town planning service (raw)"), max_length=200,
+ _(u"Planning service (raw)"), max_length=200,
blank=True, null=True)
planning_service = models.ForeignKey(
Organization,
related_name='planning_service_files',
blank=True, null=True,
- verbose_name=_(u"Town planning service organization"),
+ verbose_name=_(u"Planning service organization"),
on_delete=models.SET_NULL,) # service instructeur
permit_type = models.ForeignKey(
PermitType, verbose_name=_(u"Permit type"), blank=True, null=True)
@@ -220,13 +220,13 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
verbose_name = _(u"Archaeological file")
verbose_name_plural = _(u"Archaeological files")
permissions = (
- ("view_file", ugettext(u"Can view all Archaelogical files")),
- ("view_own_file", ugettext(u"Can view own Archaelogical file")),
- ("add_own_file", ugettext(u"Can add own Archaelogical file")),
+ ("view_file", ugettext(u"Can view all Archaeological files")),
+ ("view_own_file", ugettext(u"Can view own Archaeological file")),
+ ("add_own_file", ugettext(u"Can add own Archaeological file")),
("change_own_file",
- ugettext(u"Can change own Archaelogical file")),
+ ugettext(u"Can change own Archaeological file")),
("delete_own_file",
- ugettext(u"Can delete own Archaelogical file")),
+ ugettext(u"Can delete own Archaeological file")),
("close_file", ugettext(u"Can close File")),
)
ordering = ('cached_label',)
@@ -352,7 +352,9 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
cache_key, val = get_cache(self.__class__, [self.pk,
'short_class_name'])
cls = 'normal'
- if not self.has_adminact and self.reception_date:
+ if not self.file_type.txt_idx == 'preventive':
+ cls = "blue"
+ elif not self.has_adminact and self.reception_date:
delta = datetime.date.today() - self.reception_date
cls = 'red'
if self.saisine_type and self.saisine_type.delay:
diff --git a/archaeological_files/templates/ishtar/sheet_file.html b/archaeological_files/templates/ishtar/sheet_file.html
index 211d2b181..249a9846c 100644
--- a/archaeological_files/templates/ishtar/sheet_file.html
+++ b/archaeological_files/templates/ishtar/sheet_file.html
@@ -41,7 +41,7 @@
{% field_li "Type" item.file_type %}
-{% if item.related_file %}<li><label>{%trans "Related file:"%}</label> <span class='value'><a href='#' onclick='load_window("{% url show-file item.related_file.pk ''%}")'>{{ item.related_file }}</a></span></li>{% endif %}
+{% if item.related_file %}<li><label>{%trans "Related file:"%}</label> <span class='value'><a href='#' onclick='load_window("{% url show-file item.related_file.pk "" %}")'>{{ item.related_file }}</a></span></li>{% endif %}
</ul>
{% field "Comment" item.comment "<pre>" "</pre>" %}
@@ -59,18 +59,18 @@
{% if item.is_preventive %}
-<h3>{% trans "Preventive archaelogical file"%}</h3>
+<h3>{% trans "Preventive archaeological file"%}</h3>
<ul class='form-flex'>
{% if item.total_developed_surface %}<li><label>{%trans "Developed surface:"%}</label> <span class='value'>{{ item.total_developed_surface }} m<sup>2</sup> ({{ item.total_developed_surface_ha }} ha)</span></li>{% endif %}
{% field_li "Saisine type" item.saisine_type %}
-{% field_li_detail "Responsible for town planning service" item.responsible_town_planning_service %}
-{% field_li "Responsible for town planning service address" item.responsible_town_planning_service.full_address %}
+{% field_li_detail "Responsible for planning service" item.responsible_town_planning_service %}
+{% field_li "Responsible for planning service address" item.responsible_town_planning_service.full_address %}
{% if item.town_planning_service %}
- {% field_li "Town planning service organization" item.town_planning_service.full_address %}
+ {% field_li "Planning service organization" item.town_planning_service.full_address %}
{% else %}
- {% field_li "Town planning service organization" item.responsible_town_planning_service.attached_to.full_address %}
+ {% field_li "Planning service organization" item.responsible_town_planning_service.attached_to.full_address %}
{% endif %}
{% field_li "Permit type" item.permit_type %}
@@ -129,10 +129,10 @@
<td class='string'>{{operation.in_charge|default:""}}</td>
<td>{{operation.start_date|default:""}}</td>
<td>{{operation.excavation_end_date|default:""}}</td>
- <td class='link'><a href="#" class='display_details' onclick='load_window("{%url show-operation operation.pk ''%}")'><i class="fa fa-info-circle" aria-hidden="true"></i></a></td>
+ <td class='link'><a href="#" class='display_details' onclick='load_window("{%url show-operation operation.pk "" %}")'><i class="fa fa-info-circle" aria-hidden="true"></i></a></td>
</tr>
{% empty %}
- <tr><td colspan="8" class='no_items'>{% trans "No operation associated to this archaelogical file" %}</td></tr>
+ <tr><td colspan="8" class='no_items'>{% trans "No operation associated to this archaeological file" %}</td></tr>
{% endfor %}
</table>
</div>
diff --git a/archaeological_files/urls.py b/archaeological_files/urls.py
index b762a54b3..110851f80 100644
--- a/archaeological_files/urls.py
+++ b/archaeological_files/urls.py
@@ -50,14 +50,14 @@ urlpatterns = patterns(
check_rights(['view_file', 'view_own_file'])(
views.file_search_wizard),
name='file_search'),
- url(r'file_creation/(?P<step>.+)?$',
+ url(r'^file_creation/(?P<step>.+)?$',
check_rights(['add_file'])(
views.file_creation_wizard), name='file_creation'),
- url(r'file_modification/(?P<step>.+)?$',
+ url(r'^file_modification/(?P<step>.+)?$',
check_rights(['change_file', 'change_own_file'])(
views.file_modification_wizard), name='file_modification'),
- url(r'file_modify/(?P<pk>.+)/$', views.file_modify, name='file_modify'),
- url(r'file_closing/(?P<step>.+)?$',
+ url(r'^file_modify/(?P<pk>.+)/$', views.file_modify, name='file_modify'),
+ url(r'^file_closing/(?P<step>.+)?$',
check_rights(['change_file'])(
views.file_closing_wizard),
name='file_closing'),
@@ -93,5 +93,5 @@ urlpatterns += patterns(
'archaeological_operations.views',
url(r'file_administrativeact_document/$',
'administrativeactfile_document',
- name='file-administrativeact-document', kwargs={'operation': False}),
+ name='file-administrativeact-document', kwargs={'file': True}),
)
diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py
index ea06a48f7..1558cd46e 100644
--- a/archaeological_files/wizards.py
+++ b/archaeological_files/wizards.py
@@ -142,6 +142,7 @@ class FileDeletionWizard(FileClosingWizard):
class FileAdministrativeActWizard(OperationAdministrativeActWizard):
model = models.File
current_obj_slug = 'administrativeactfile'
+ ref_object_key = 'associated_file'
def get_reminder(self):
form_key = 'selec-' + self.url_name
@@ -151,7 +152,7 @@ class FileAdministrativeActWizard(OperationAdministrativeActWizard):
file_id = self.session_get_value(form_key, "pk")
try:
return (
- (_(u"Archaelogical file"),
+ (_(u"Archaeological file"),
unicode(models.File.objects.get(pk=file_id))),)
except models.File.DoesNotExist:
return
@@ -161,7 +162,7 @@ class FileAdministrativeActWizard(OperationAdministrativeActWizard):
admin = AdministrativeAct.objects.get(pk=admin_id)
if not admin.associated_file:
return
- return ((_(u"Archaelogical file"),
+ return ((_(u"Archaeological file"),
unicode(admin.associated_file)),)
except AdministrativeAct.DoesNotExist:
return
diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py
index cf241aa18..4890eb5d6 100644
--- a/archaeological_files_pdl/forms.py
+++ b/archaeological_files_pdl/forms.py
@@ -116,6 +116,8 @@ class FileFormResearchAddress(forms.Form):
form_label = _(u"Address")
base_models = ['town', 'department']
associated_models = {'town': Town, 'department': Department}
+ name = forms.CharField(label=_(u"Project name"), required=False,
+ max_length=100)
town = widgets.MultipleAutocompleteField(
model=Town, label=_("Towns"), required=False)
department = widgets.MultipleAutocompleteField(
@@ -343,7 +345,7 @@ class FileFormGeneralContractor(PersonOrgaForm):
class FileFormPlanningService(forms.Form):
- form_label = _(u"Town planning service")
+ form_label = _(u"Planning service")
associated_models = {'responsible_town_planning_service': models.Person,
'planning_service': models.Organization}
diff --git a/archaeological_files_pdl/locale/django.pot b/archaeological_files_pdl/locale/django.pot
index 5c3d03a37..24d70d743 100644
--- a/archaeological_files_pdl/locale/django.pot
+++ b/archaeological_files_pdl/locale/django.pot
@@ -2,122 +2,121 @@
# Copyright (C) 2014
# This file is distributed under the same license as the Ishtar package.
# Étienne Loks <etienne.loks at peacefrogs net>, 2014.
-# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
msgid ""
msgstr ""
-#: forms.py:41
+#: forms.py:38
msgid "General"
msgstr ""
-#: forms.py:43
+#: forms.py:40
msgid "File type"
msgstr ""
-#: forms.py:44 forms.py:403
+#: forms.py:41 forms.py:415
msgid "Year"
msgstr ""
-#: forms.py:48
+#: forms.py:45
msgid "Creation date"
msgstr ""
-#: forms.py:51
+#: forms.py:48
msgid "Reception date"
msgstr ""
-#: forms.py:63
+#: forms.py:60
msgid "Reception date cannot be after today."
msgstr ""
-#: forms.py:71
+#: forms.py:68
msgid "Permit type"
msgstr ""
-#: forms.py:73
+#: forms.py:70
msgid "Saisine type"
msgstr ""
-#: forms.py:87
+#: forms.py:84
msgid "Planning"
msgstr ""
-#: forms.py:90
+#: forms.py:87
msgid "Planning name"
msgstr ""
-#: forms.py:93 forms.py:123
+#: forms.py:90 forms.py:122
#: templates/ishtar/wizard/wizard_preventiveplanning.html:31
msgid "Towns"
msgstr ""
-#: forms.py:95 forms.py:125
+#: forms.py:92 forms.py:124
#: templates/ishtar/wizard/wizard_preventiveplanning.html:41
msgid "Departments"
msgstr ""
-#: forms.py:96 forms.py:126
+#: forms.py:93 forms.py:125
msgid "Locality"
msgstr ""
-#: forms.py:99 forms.py:129
+#: forms.py:96 forms.py:128
msgid "Address (number/street)"
msgstr ""
-#: forms.py:100 forms.py:130
+#: forms.py:97 forms.py:129
msgid "Number/street"
msgstr ""
-#: forms.py:102 forms.py:132
+#: forms.py:99 forms.py:131
msgid "Postal code"
msgstr ""
-#: forms.py:107
+#: forms.py:104
msgid "Total surface (m2)"
msgstr ""
-#: forms.py:112
+#: forms.py:109
msgid "Total developed surface (m2)"
msgstr ""
-#: forms.py:119
+#: forms.py:116
msgid "Address"
msgstr ""
-#: forms.py:233 forms.py:237 forms.py:267 forms.py:270
+#: forms.py:119
+msgid "Project name"
+msgstr ""
+
+#: forms.py:232 forms.py:236 forms.py:273 forms.py:276
msgid "General contractor"
msgstr ""
-#: forms.py:252 forms.py:364
+#: forms.py:254 forms.py:372
msgid "In charge"
msgstr ""
-#: forms.py:342
-msgid "Town planning service"
+#: forms.py:348 forms.py:355
+msgid "Planning service"
msgstr ""
-#: forms.py:346
+#: forms.py:352
msgid "File reference"
msgstr ""
-#: forms.py:349
-msgid "Planning service"
-msgstr ""
-
-#: forms.py:383
+#: forms.py:395
msgid "Person in charge"
msgstr ""
-#: forms.py:395
+#: forms.py:407
msgid "Related file"
msgstr ""
-#: forms.py:399
+#: forms.py:411
msgid "Comment"
msgstr ""
-#: forms.py:406
+#: forms.py:418
msgid "Numeric reference"
msgstr ""
diff --git a/archaeological_files_pdl/wizards.py b/archaeological_files_pdl/wizards.py
index c64c70eab..1506b5d49 100644
--- a/archaeological_files_pdl/wizards.py
+++ b/archaeological_files_pdl/wizards.py
@@ -97,7 +97,8 @@ class FileWizard(BaseFileWizard):
towns = self.session_get_value(
parcel_step_key, 'town', multi=True) or []
for idx, parcel_number in enumerate(parcel_numbers):
- if not parcel_number:
+ if not parcel_number or len(sections) <= idx \
+ or len(towns) <= idx:
continue
parcels.append({
'town': towns[idx],
diff --git a/archaeological_finds/admin.py b/archaeological_finds/admin.py
index 764f63ad3..14b3ffb40 100644
--- a/archaeological_finds/admin.py
+++ b/archaeological_finds/admin.py
@@ -59,13 +59,20 @@ admin.site.register(models.Property, PropertyAdmin)
class TreatmentAdmin(HistorizedObjectAdmin):
- list_display = ('location', 'treatment_type', 'container', 'person')
- list_filter = ('treatment_type',)
+ list_display = ('location', 'treatment_types_lbl', 'container', 'person')
model = models.Treatment
admin.site.register(models.Treatment, TreatmentAdmin)
+class TreatmentFileAdmin(HistorizedObjectAdmin):
+ list_display = ('year', 'index', 'name', 'internal_reference')
+ search_fields = ('cached_label',)
+ model = models.TreatmentFile
+
+admin.site.register(models.TreatmentFile, TreatmentFileAdmin)
+
+
class TreatmentSourceAdmin(admin.ModelAdmin):
list_display = ('treatment', 'title', 'source_type',)
list_filter = ('source_type',)
@@ -83,13 +90,14 @@ admin.site.register(models.ObjectType, HierarchicalTypeAdmin)
class TreatmentTypeAdmin(admin.ModelAdmin):
- list_display = GeneralTypeAdmin.list_display + [
- 'virtual', 'upstream_is_many', 'downstream_is_many']
+ list_display = HierarchicalTypeAdmin.list_display + [
+ 'order', 'virtual', 'upstream_is_many', 'downstream_is_many']
model = models.TreatmentType
admin.site.register(models.TreatmentType, TreatmentTypeAdmin)
general_models = [
models.ConservatoryState, models.RemarkabilityType,
- models.PreservationType, models.IntegrityType, ]
+ models.PreservationType, models.IntegrityType,
+ models.TreatmentFileType, models.TreatmentState]
for model in general_models:
admin.site.register(model, GeneralTypeAdmin)
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 66ba9f8ea..9441e6899 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -21,6 +21,8 @@
Finds forms definitions
"""
+import logging
+
from django import forms
from django.conf import settings
from django.core import validators
@@ -29,21 +31,57 @@ from django.forms.formsets import formset_factory
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
-from ishtar_common.models import Person, valid_id, valid_ids, \
- get_current_profile
+from ishtar_common.models import valid_id, valid_ids, get_current_profile
from archaeological_operations.models import Period, ArchaeologicalSite, \
RelationType as OpeRelationType
from archaeological_context_records.models import DatingType, DatingQuality, \
ContextRecord
-from archaeological_warehouse.models import Warehouse
import models
-from ishtar_common import widgets
-from archaeological_operations.widgets import OAWidget
from ishtar_common.forms import FormSet, FloatField, \
get_form_selection, reverse_lazy, TableSelect, get_now, FinalForm, \
ManageOldType
+
from ishtar_common.forms_common import get_town_field, SourceSelect
+from ishtar_common import widgets
+from archaeological_operations.widgets import OAWidget
+
+from archaeological_finds.forms_treatments import TreatmentSelect, \
+ TreatmentFormSelection, BaseTreatmentForm, TreatmentModifyForm, \
+ AdministrativeActTreatmentForm, TreatmentFormFileChoice, \
+ TreatmentDeletionForm, TreatmentFileSelect, TreatmentFileFormSelection, \
+ TreatmentFileForm, TreatmentFileModifyForm, TreatmentFileDeletionForm, \
+ AdministrativeActTreatmentFormSelection, \
+ AdministrativeActTreatmentModifForm, \
+ AdministrativeActTreatmentFileForm, \
+ AdministrativeActTreatmentFileFormSelection, \
+ AdministrativeActTreatmentFileModifForm, SourceTreatmentFormSelection, \
+ SourceTreatmentFileFormSelection, TreatmentSourceFormSelection, \
+ TreatmentFileSourceFormSelection
+
+__all__ = [
+ 'TreatmentSelect', 'TreatmentFormSelection', 'BaseTreatmentForm',
+ 'TreatmentModifyForm', 'AdministrativeActTreatmentForm',
+ 'TreatmentFormFileChoice', 'TreatmentDeletionForm',
+ 'AdministrativeActTreatmentModifForm', 'TreatmentFileSelect',
+ 'TreatmentFileFormSelection', 'TreatmentFileForm',
+ 'TreatmentFileModifyForm', 'TreatmentFileDeletionForm',
+ 'AdministrativeActTreatmentFileForm',
+ 'AdministrativeActTreatmentFileFormSelection',
+ 'AdministrativeActTreatmentFormSelection',
+ 'AdministrativeActTreatmentFileModifForm', 'SourceTreatmentFormSelection',
+ 'SourceTreatmentFileFormSelection', 'TreatmentSourceFormSelection',
+ 'TreatmentFileSourceFormSelection',
+ 'RecordFormSelection', 'FindForm', 'DateForm', 'DatingFormSet',
+ 'FindSelect', 'FindFormSelection', 'MultipleFindFormSelection',
+ 'FindMultipleFormSelection', 'check_form', 'check_exist', 'check_not_exist',
+ 'check_value', 'check_type_field', 'check_type_not_field',
+ 'check_treatment', 'ResultFindForm', 'ResultFindFormSet',
+ 'FindDeletionForm', 'UpstreamFindFormSelection', 'SourceFindFormSelection',
+ 'FindSourceSelect', 'FindSourceFormSelection', 'NewFindBasketForm',
+ 'SelectFindBasketForm', 'DeleteFindBasketForm', 'FindBasketAddItemForm']
+
+logger = logging.getLogger(__name__)
class RecordFormSelection(forms.Form):
@@ -112,22 +150,29 @@ class FindForm(ManageOldType, forms.Form):
model=models.ObjectType, label=_(u"Object types"), required=False)
preservation_to_consider = forms.MultipleChoiceField(
label=_(u"Preservation type"), choices=[],
- widget=forms.CheckboxSelectMultiple, required=False)
+ widget=widgets.CheckboxSelectMultiple, required=False)
integritie = forms.MultipleChoiceField(
label=_(u"Integrity / interest"), choices=[],
- widget=forms.CheckboxSelectMultiple, required=False)
+ widget=widgets.CheckboxSelectMultiple, required=False)
remarkabilitie = forms.MultipleChoiceField(
label=_(u"Remarkability"), choices=[],
- widget=forms.CheckboxSelectMultiple, required=False)
+ widget=widgets.CheckboxSelectMultiple, required=False)
+ topographic_reference_point = forms.CharField(
+ label=_(u"Point of topographic reference"),
+ required=False, max_length=20
+ )
length = FloatField(label=_(u"Length (cm)"), required=False)
width = FloatField(label=_(u"Width (cm)"), required=False)
height = FloatField(label=_(u"Height (cm)"), required=False)
diameter = FloatField(label=_(u"Diameter (cm)"), required=False)
+ thickness = FloatField(label=_(u"Thickness (cm)"), required=False)
volume = FloatField(label=_(u"Volume (l)"), required=False)
weight = FloatField(label=_(u"Weight (g)"), required=False)
dimensions_comment = forms.CharField(
label=_(u"Dimensions comment"), required=False, widget=forms.Textarea)
find_number = forms.IntegerField(label=_(u"Find number"), required=False)
+ min_number_of_individuals = forms.IntegerField(
+ label=_(u"Minimum number of individuals (MNI)"), required=False)
mark = forms.CharField(label=_(u"Mark"), required=False)
checked = forms.ChoiceField(label=_(u"Check"))
check_date = forms.DateField(
@@ -227,14 +272,14 @@ class FindSelect(TableSelect):
widget=OAWidget
)
archaeological_sites = forms.IntegerField(
- label=_("Archaelogical site"),
+ label=_("Archaeological site"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-archaeologicalsite'),
associated_model=ArchaeologicalSite),
validators=[valid_id(ArchaeologicalSite)])
ope_relation_types = forms.MultipleChoiceField(
- label=_(u"Search within operation relations"), choices=[],
- widget=forms.CheckboxSelectMultiple)
+ label=_(u"Search within related operations"), choices=[],
+ widget=widgets.CheckboxSelectMultiple)
datings__period = forms.ChoiceField(label=_(u"Period"), choices=[])
# TODO search by warehouse
material_types = forms.ChoiceField(label=_(u"Material type"), choices=[])
@@ -338,15 +383,23 @@ class FindMultipleFormSelection(forms.Form):
return self.cleaned_data
+def check_form(wizard, form_name, key):
+ request = wizard.request
+ storage = wizard.storage
+ if storage.prefix not in request.session or \
+ 'step_data' not in request.session[storage.prefix] or \
+ form_name not in request.session[storage.prefix]['step_data'] or \
+ form_name + '-' + key not in \
+ request.session[storage.prefix]['step_data'][form_name]:
+ return False
+ return True
+
+
def check_exist(form_name, key):
def func(self):
request = self.request
storage = self.storage
- if storage.prefix not in request.session or \
- 'step_data' not in request.session[storage.prefix] or \
- form_name not in request.session[storage.prefix]['step_data'] or\
- form_name + '-' + key not in \
- request.session[storage.prefix]['step_data'][form_name]:
+ if not check_form(self, form_name, key):
return False
try:
val = request.session[storage.prefix][
@@ -365,15 +418,28 @@ def check_not_exist(form_name, key):
return func
+def check_value(form_name, key, value):
+ def func(self):
+ request = self.request
+ storage = self.storage
+ if not check_form(self, form_name, key):
+ return False
+ try:
+ val = request.session[storage.prefix][
+ 'step_data'][form_name][form_name + '-' + key]
+ if val and len(val) > 0:
+ val = val[0]
+ return unicode(val) == unicode(value)
+ except ValueError:
+ return False
+ return func
+
+
def check_type_field(form_name, key, model, field):
def func(self):
request = self.request
storage = self.storage
- if storage.prefix not in request.session or \
- 'step_data' not in request.session[storage.prefix] or \
- form_name not in request.session[storage.prefix]['step_data'] or\
- form_name + '-' + key not in \
- request.session[storage.prefix]['step_data'][form_name]:
+ if not check_form(self, form_name, key):
return False
try:
val = model.objects.get(pk=request.session[storage.prefix][
@@ -399,11 +465,7 @@ def check_treatment(form_name, type_key, type_list=[], not_type_list=[]):
def func(self):
request = self.request
storage = self.storage
- if storage.prefix not in request.session or \
- 'step_data' not in request.session[storage.prefix] or \
- form_name not in request.session[storage.prefix]['step_data'] or\
- form_name + '-' + type_key not in \
- request.session[storage.prefix]['step_data'][form_name]:
+ if not check_form(self, form_name, type_key):
return False
try:
tpe = request.session[storage.prefix][
@@ -453,10 +515,12 @@ class UpstreamFindFormSelection(FindFormSelection):
def __init__(self, *args, **kwargs):
super(UpstreamFindFormSelection, self).__init__(*args, **kwargs)
self.fields['pk'].required = True
+ self.fields['resulting_pk'] = self.fields.pop('pk')
-#############################################
-# Source management for archaelogical finds #
-#############################################
+
+##############################################
+# Source management for archaeological finds #
+##############################################
SourceFindFormSelection = get_form_selection(
'SourceFindFormSelection', _(u"Archaeological find search"), 'find',
@@ -475,11 +539,11 @@ class FindSourceSelect(SourceSelect):
widget=OAWidget,
label="Code PATRIARCHE")
find__datings__period = forms.ChoiceField(
- label=_(u"Period of the archaelogical find"), choices=[])
+ label=_(u"Period of the archaeological find"), choices=[])
find__material_type = forms.ChoiceField(
- label=_("Material type of the archaelogical find"), choices=[])
+ label=_("Material type of the archaeological find"), choices=[])
find__description = forms.CharField(
- label=_(u"Description of the archaelogical find"))
+ label=_(u"Description of the archaeological find"))
def __init__(self, *args, **kwargs):
super(FindSourceSelect, self).__init__(*args, **kwargs)
@@ -510,7 +574,7 @@ class NewFindBasketForm(forms.ModelForm):
q = models.FindBasket.objects.filter(user=self.user,
label=self.cleaned_data['label'])
if q.count():
- raise forms.ValidationError(_(u"Another basket already exist with "
+ raise forms.ValidationError(_(u"Another basket already exists with "
u"this name."))
return self.cleaned_data
@@ -520,6 +584,10 @@ class NewFindBasketForm(forms.ModelForm):
class SelectFindBasketForm(forms.Form):
+ form_label = _(u"Basket")
+ associated_models = {'basket': models.FindBasket}
+ need_user_for_initialization = True
+
basket = forms.ChoiceField(label=_(u"Basket"), required=True, choices=[])
def __init__(self, *args, **kwargs):
@@ -567,101 +635,3 @@ class FindBasketAddItemForm(forms.Form):
raise PermissionDenied
basket.items.add(item)
return basket
-
-
-class BaseTreatmentForm(ManageOldType, SelectFindBasketForm):
- form_label = _(u"Base treatment")
- associated_models = {'treatment_type': models.TreatmentType,
- 'person': Person,
- 'location': Warehouse,
- 'basket': models.FindBasket}
- treatment_type = forms.ChoiceField(label=_(u"Treatment type"), choices=[])
- person = forms.IntegerField(
- label=_(u"Doer"),
- widget=widgets.JQueryAutoComplete(
- reverse_lazy('autocomplete-person'), associated_model=Person,
- new=True),
- validators=[valid_id(Person)])
- location = forms.IntegerField(
- label=_(u"Location"),
- widget=widgets.JQueryAutoComplete(
- reverse_lazy('autocomplete-warehouse'), associated_model=Warehouse,
- new=True),
- validators=[valid_id(Warehouse)])
- description = forms.CharField(label=_(u"Description"),
- widget=forms.Textarea, required=False)
- start_date = forms.DateField(label=_(u"Start date"), required=False,
- widget=widgets.JQueryDate)
- end_date = forms.DateField(label=_(u"End date"), required=False,
- widget=widgets.JQueryDate)
-
- def __init__(self, *args, **kwargs):
- super(BaseTreatmentForm, self).__init__(*args, **kwargs)
- self.fields['treatment_type'].choices = models.TreatmentType.get_types(
- initial=self.init_data.get('treatment_type'),
- exclude=['packaging'])
- self.fields['treatment_type'].help_text = \
- models.TreatmentType.get_help(exclude=['packaging'])
- self.fields['basket'].required = False
- self.fields['basket'].help_text = \
- _(u"Leave it blank if you want to select a single item")
-
- def clean(self, *args, **kwargs):
- try:
- treatment = models.TreatmentType.objects.get(
- pk=self.cleaned_data['treatment_type'], available=True)
- except models.TreatmentType.DoesNotExist:
- raise forms.ValidationError(_(u"This treatment type is not "
- u"available."))
- if treatment.upstream_is_many and \
- not self.cleaned_data.get('basket'):
- raise forms.ValidationError(_(u"This treatment needs a basket."))
- return self.cleaned_data
-
-"""
-####################################
-# Source management for treatments #
-####################################
-
-SourceTreatementFormSelection = get_form_selection(
- 'SourceTreatmentFormSelection', _(u"Treatment search"), 'operation',
- models.Treatment, TreatmentSelect, 'get-treatment',
- _(u"You should select a treatment."))
-
-class TreatmentSourceSelect(SourceSelect):
- operation__towns = get_town_field(label=_(u"Operation's town"))
- treatment__treatment_type = forms.ChoiceField(label=_(u"Operation type"),
- choices=[])
- operation__year = forms.IntegerField(label=_(u"Operation's year"))
-
- def __init__(self, *args, **kwargs):
- super(OperationSourceSelect, self).__init__(*args, **kwargs)
- self.fields['operation__operation_type'].choices = \
- OperationType.get_types()
- self.fields['operation__operation_type'].help_text = \
- OperationType.get_help()
-
-"""
-
-"""
-OperationSourceFormSelection = get_form_selection(
- 'OperationSourceFormSelection', _(u"Documentation search"), 'pk',
- models.OperationSource, OperationSourceSelect, 'get-operationsource',
- _(u"You should select a document."))
-
-operation_source_modification_wizard = OperationSourceWizard([
- ('selec-operation_source_modification', OperationSourceFormSelection),
- ('source-operation_source_modification', SourceForm),
- ('authors-operation_source_modification', AuthorFormset),
- ('final-operation_source_modification', FinalForm)],
- url_name='operation_source_modification',)
-
-class OperationSourceDeletionWizard(DeletionWizard):
- model = models.OperationSource
- fields = ['operation', 'title', 'source_type', 'authors',]
-
-operation_source_deletion_wizard = OperationSourceDeletionWizard([
- ('selec-operation_source_deletion', OperationSourceFormSelection),
- ('final-operation_source_deletion', SourceDeletionForm)],
- url_name='operation_source_deletion',)
-"""
diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py
new file mode 100644
index 000000000..7a388a10d
--- /dev/null
+++ b/archaeological_finds/forms_treatments.py
@@ -0,0 +1,602 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# See the file COPYING for details.
+
+import datetime
+import logging
+
+from django import forms
+from django.conf import settings
+from django.core import validators
+from django.db.models import Max
+from django.utils.safestring import mark_safe
+from django.utils.translation import ugettext_lazy as _
+
+from ishtar_common.models import Person, valid_id, Organization
+from archaeological_operations.models import ActType, AdministrativeAct
+from archaeological_warehouse.models import Warehouse, Container
+import models
+
+from archaeological_operations.forms import AdministrativeActOpeForm, \
+ AdministrativeActOpeFormSelection, AdministrativeActModifForm
+
+from ishtar_common.forms import reverse_lazy, TableSelect, FinalForm, \
+ ManageOldType, get_form_selection
+from ishtar_common.forms_common import SourceForm, SourceSelect, \
+ SourceDeletionForm
+
+from ishtar_common import widgets
+
+logger = logging.getLogger(__name__)
+
+# Treatment
+
+
+class TreatmentSelect(TableSelect):
+ label = forms.CharField(label=_(u"Label"))
+ other_reference = forms.CharField(label=_(u"Other ref."))
+ year = forms.IntegerField(label=_(u"Year"))
+ index = forms.IntegerField(label=_(u"Index"))
+ treatment_types = forms.ChoiceField(label=_(u"Treatment type"), choices=[])
+ image = forms.NullBooleanField(label=_(u"Has an image?"))
+
+ def __init__(self, *args, **kwargs):
+ super(TreatmentSelect, self).__init__(*args, **kwargs)
+ self.fields['treatment_types'].choices = \
+ models.TreatmentType.get_types()
+ self.fields['treatment_types'].help_text = \
+ models.TreatmentType.get_help()
+
+
+class TreatmentFormSelection(forms.Form):
+ form_label = _("Treatment search")
+ associated_models = {'pk': models.Treatment}
+ currents = {'pk': models.Treatment}
+ pk = forms.IntegerField(
+ label="", required=False,
+ widget=widgets.JQueryJqGrid(
+ reverse_lazy('get-treatment'),
+ TreatmentSelect, models.Treatment),
+ validators=[valid_id(models.Treatment)])
+
+
+class BaseTreatmentForm(ManageOldType, forms.Form):
+ form_label = _(u"Base treatment")
+ base_models = ['treatment_type']
+ associated_models = {'treatment_type': models.TreatmentType,
+ 'person': Person,
+ 'location': Warehouse,
+ 'organization': Organization,
+ 'container': Container,
+ 'treatment_state': models.TreatmentState,
+ }
+ file_upload = True
+ need_user_for_initialization = True
+
+ label = forms.CharField(label=_(u"Label"),
+ max_length=200, required=False)
+ other_reference = forms.CharField(
+ label=_(u"Other ref."), max_length=200, required=False)
+ year = forms.IntegerField(label=_("Year"),
+ initial=lambda: datetime.datetime.now().year,
+ validators=[validators.MinValueValidator(1900),
+ validators.MaxValueValidator(2100)])
+ treatment_type = forms.MultipleChoiceField(
+ label=_(u"Treatment type"), choices=[],
+ widget=widgets.CheckboxSelectMultiple)
+ treatment_state = forms.ChoiceField(label=_(u"State"),
+ choices=[], required=False)
+ target_is_basket = forms.NullBooleanField(label=_(u"Target"))
+ person = forms.IntegerField(
+ label=_(u"Responsible"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-person'), associated_model=Person,
+ new=True),
+ validators=[valid_id(Person)], required=False)
+ organization = forms.IntegerField(
+ label=_(u"Organization"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-organization'),
+ associated_model=Organization, new=True),
+ validators=[valid_id(Organization)], required=False)
+ location = forms.IntegerField(
+ label=_(u"Location"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-warehouse'), associated_model=Warehouse,
+ new=True),
+ validators=[valid_id(Warehouse)])
+ container = forms.IntegerField(
+ label=_(u"Container (relevant for packaging)"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-container'),
+ associated_model=Container, new=True),
+ validators=[valid_id(Container)], required=False)
+ external_id = forms.CharField(
+ label=_(u"External ref."), max_length=200, required=False)
+ comment = forms.CharField(label=_(u"Comment"),
+ widget=forms.Textarea, required=False)
+ description = forms.CharField(label=_(u"Description"),
+ widget=forms.Textarea, required=False)
+ goal = forms.CharField(label=_(u"Goal"),
+ widget=forms.Textarea, required=False)
+ start_date = forms.DateField(label=_(u"Start date"), required=False,
+ widget=widgets.JQueryDate)
+ end_date = forms.DateField(label=_(u"Closing date"), required=False,
+ widget=widgets.JQueryDate)
+ image = forms.ImageField(
+ label=_(u"Image"), help_text=mark_safe(
+ _(u"<p>Heavy images are resized to: %(width)dx%(height)d "
+ u"(ratio is preserved).</p>") % {
+ 'width': settings.IMAGE_MAX_SIZE[0],
+ 'height': settings.IMAGE_MAX_SIZE[1]}),
+ max_length=255, required=False, widget=widgets.ImageFileInput())
+
+ def __init__(self, *args, **kwargs):
+ user = kwargs.pop('user')
+ super(BaseTreatmentForm, self).__init__(*args, **kwargs)
+ q = Person.objects.filter(ishtaruser__pk=user.pk)
+ if q.count():
+ person = q.all()[0]
+ self.fields['person'].initial = person.pk
+ if person.attached_to:
+ self.fields['organization'].initial = person.attached_to.pk
+ self.fields['target_is_basket'].widget.choices = \
+ ((False, _(u"Single find")), (True, _(u"Basket")))
+ self.fields['treatment_type'].choices = models.TreatmentType.get_types(
+ initial=self.init_data.get('treatment_type'),
+ dct={'upstream_is_many': False, 'downstream_is_many': False},
+ empty_first=False
+ )
+ self.fields['treatment_type'].help_text = \
+ models.TreatmentType.get_help(
+ dct={'upstream_is_many': False, 'downstream_is_many': False})
+ self.fields['treatment_state'].choices = \
+ models.TreatmentState.get_types(
+ initial=self.init_data.get('treatment_state'),
+ )
+ self.fields['treatment_state'].help_text = \
+ models.TreatmentState.get_help()
+ # TODO
+ """
+ self.fields['basket'].required = False
+ self.fields['basket'].help_text = \
+ _(u"Leave it blank if you want to select a single item")
+ self.fields.keyOrder.pop(self.fields.keyOrder.index('basket'))
+ self.fields.keyOrder.insert(self.fields.keyOrder.index('description'),
+ 'basket')
+ """
+
+ def clean(self, *args, **kwargs):
+ data = self.cleaned_data
+ packaging = models.TreatmentType.get_cache('packaging')
+ if not packaging:
+ logger.warning("No 'packaging' treatment type defined")
+ return
+ if data.get('container', None) \
+ and str(packaging.pk) not in data.get('treatment_type', []):
+ raise forms.ValidationError(
+ _(u"The container field is attached to the treatment. If "
+ u"no packaging treatment is done it is not relevant."))
+ if not data.get('container', None) \
+ and str(packaging.pk) in data.get('treatment_type', []):
+ raise forms.ValidationError(
+ _(u"If a packaging treatment is done, the container field "
+ u"must be filled."))
+ if not data.get('person', None) and not data.get('organization', None):
+ raise forms.ValidationError(
+ _(u"A responsible or an organization must be defined."))
+ return data
+ # TODO
+ """
+ for treatment_type in self.cleaned_data.get('treatment_type', []):
+ try:
+ treatment = models.TreatmentType.objects.get(
+ pk=treatment_type, available=True)
+ except models.TreatmentType.DoesNotExist:
+ raise forms.ValidationError(_(u"This treatment type is not "
+ u"available."))
+ if treatment.upstream_is_many and \
+ not self.cleaned_data.get('basket'):
+ raise forms.ValidationError(_(u"This treatment needs a "
+ u"basket."))
+ """
+
+
+class TreatmentModifyForm(BaseTreatmentForm):
+ index = forms.IntegerField(_(u"Index"))
+ id = forms.IntegerField(' ', widget=forms.HiddenInput, required=False)
+
+ def __init__(self, *args, **kwargs):
+ super(TreatmentModifyForm, self).__init__(*args, **kwargs)
+ self.fields.keyOrder.pop(self.fields.keyOrder.index('index'))
+ self.fields.keyOrder.insert(
+ self.fields.keyOrder.index('year') + 1, 'index')
+
+ def clean(self, *args, **kwargs):
+ super(TreatmentModifyForm, self).clean(*args, **kwargs)
+ cleaned_data = self.cleaned_data
+ year = cleaned_data.get('year')
+ pk = cleaned_data.get('id')
+ index = cleaned_data.get('index')
+ q = models.Treatment.objects \
+ .filter(year=year, index=index).exclude(pk=pk)
+ if index and q.count():
+ raise forms.ValidationError(
+ _(u"Another treatment with this index exists for {}."
+ ).format(year))
+ return cleaned_data
+
+
+class TreatmentFormFileChoice(forms.Form):
+ form_label = _(u"Associated request")
+ associated_models = {'file': models.TreatmentFile, }
+ currents = {'file': models.TreatmentFile}
+ file = forms.IntegerField(
+ label=_(u"Treatment request"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-treatmentfile'),
+ associated_model=models.TreatmentFile),
+ validators=[valid_id(models.TreatmentFile)], required=False)
+
+
+class TreatmentDeletionForm(FinalForm):
+ confirm_msg = _(
+ u"Are you sure you want to delete this treatment? All changes "
+ u"made to the associated finds since this treatment record will be "
+ u"lost!")
+ confirm_end_msg = _(u"Would you like to delete this treatment?")
+
+# administrative act treatment
+
+
+class AdministrativeActTreatmentSelect(TableSelect):
+ year = forms.IntegerField(label=_("Year"))
+ index = forms.IntegerField(label=_("Index"))
+ act_type = forms.ChoiceField(label=_("Act type"), choices=[])
+ indexed = forms.NullBooleanField(label=_(u"Indexed?"))
+ act_object = forms.CharField(label=_(u"Object"),
+ max_length=300)
+
+ signature_date_after = forms.DateField(
+ label=_(u"Signature date after"), widget=widgets.JQueryDate)
+ signature_date_before = forms.DateField(
+ label=_(u"Signature date before"), widget=widgets.JQueryDate)
+ treatment__name = forms.CharField(
+ label=_(u"Treatment name"), max_length=200)
+ treatment__year = forms.IntegerField(label=_(u"Treatment year"))
+ treatment__index = forms.IntegerField(label=_(u"Treatment index"))
+ treatment__internal_reference = forms.CharField(
+ max_length=200, label=_(u"Treatment internal reference"))
+ treatment__treatment_types = forms.ChoiceField(label=_(u"Treatment type"),
+ choices=[])
+ history_modifier = forms.IntegerField(
+ label=_(u"Modified by"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-person',
+ args=['0', 'user']),
+ associated_model=Person),
+ validators=[valid_id(Person)])
+
+ def __init__(self, *args, **kwargs):
+ super(AdministrativeActTreatmentSelect, self).__init__(*args, **kwargs)
+ self.fields['act_type'].choices = ActType.get_types(
+ dct={'intented_to': 'T'})
+ self.fields['act_type'].help_text = ActType.get_help(
+ dct={'intented_to': 'T'})
+ self.fields['treatment__treatment_types'].choices = \
+ models.TreatmentType.get_types()
+ self.fields['treatment__treatment_types'].help_text = \
+ models.TreatmentType.get_help()
+
+
+class AdministrativeActTreatmentFormSelection(
+ AdministrativeActOpeFormSelection):
+ pk = forms.IntegerField(
+ label="", required=False,
+ widget=widgets.JQueryJqGrid(
+ reverse_lazy('get-administrativeacttreatment'),
+ AdministrativeActTreatmentSelect, AdministrativeAct),
+ validators=[valid_id(AdministrativeAct)])
+
+
+class AdministrativeActTreatmentForm(AdministrativeActOpeForm):
+ act_type = forms.ChoiceField(label=_(u"Act type"), choices=[])
+
+ def __init__(self, *args, **kwargs):
+ super(AdministrativeActTreatmentForm, self).__init__(*args, **kwargs)
+ self.fields['act_type'].choices = ActType.get_types(
+ initial=self.init_data.get('act_type'),
+ dct={'intented_to': 'T'})
+ self.fields['act_type'].help_text = ActType.get_help(
+ dct={'intented_to': 'T'})
+
+
+class AdministrativeActTreatmentModifForm(
+ AdministrativeActModifForm, AdministrativeActTreatmentForm):
+ pk = forms.IntegerField(required=False, widget=forms.HiddenInput)
+ index = forms.IntegerField(label=_("Index"), required=False)
+
+# treatment requests
+
+
+class TreatmentFileSelect(TableSelect):
+ name = forms.CharField(label=_(u"Name"))
+ internal_reference = forms.CharField(label=_(u"Internal ref."))
+ year = forms.IntegerField(label=_(u"Year"))
+ index = forms.IntegerField(label=_(u"Index"))
+ type = forms.ChoiceField(label=_(u"Type"), choices=[])
+ in_charge = forms.IntegerField(
+ label=_(u"In charge"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-person'),
+ associated_model=Person),
+ validators=[valid_id(Person)])
+ applicant = forms.IntegerField(
+ label=_(u"Applicant"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-person'),
+ associated_model=Person),
+ validators=[valid_id(Person)])
+ applicant_organisation = forms.IntegerField(
+ label=_(u"Applicant organisation"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-organization'),
+ associated_model=Organization),
+ validators=[valid_id(Organization)])
+
+ def __init__(self, *args, **kwargs):
+ super(TreatmentFileSelect, self).__init__(*args, **kwargs)
+ self.fields['type'].choices = models.TreatmentFileType.get_types()
+ self.fields['type'].help_text = models.TreatmentFileType.get_help()
+
+
+class TreatmentFileFormSelection(forms.Form):
+ form_label = _("Treatment request search")
+ associated_models = {'pk': models.TreatmentFile}
+ currents = {'pk': models.TreatmentFile}
+ pk = forms.IntegerField(
+ label="", required=False,
+ widget=widgets.JQueryJqGrid(
+ reverse_lazy('get-treatmentfile'),
+ TreatmentFileSelect, models.TreatmentFile),
+ validators=[valid_id(models.Treatment)])
+
+
+class TreatmentFileForm(ManageOldType, forms.Form):
+ form_label = _(u"Treatment request")
+ base_models = ['treatment_type_type']
+ associated_models = {
+ 'type': models.TreatmentFileType, 'in_charge': Person,
+ 'applicant': Person, 'applicant_organisation': Organization}
+ need_user_for_initialization = True
+
+ name = forms.CharField(label=_(u"Name"),
+ max_length=1000, required=False)
+ year = forms.IntegerField(label=_("Year"),
+ initial=lambda: datetime.datetime.now().year,
+ validators=[validators.MinValueValidator(1900),
+ validators.MaxValueValidator(2100)])
+ internal_reference = forms.CharField(
+ label=_(u"Internal ref."), max_length=60, required=False)
+ external_id = forms.CharField(
+ label=_(u"External ref."), max_length=200, required=False)
+ type = forms.ChoiceField(
+ label=_(u"Type"), choices=[])
+ in_charge = forms.IntegerField(
+ label=_(u"Responsible"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-person'), associated_model=Person,
+ new=True),
+ validators=[valid_id(Person)])
+ applicant = forms.IntegerField(
+ label=_(u"Applicant"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-person'), associated_model=Person,
+ new=True),
+ validators=[valid_id(Person)], required=False)
+ applicant_organisation = forms.IntegerField(
+ label=_(u"Applicant organisation"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-organization'),
+ associated_model=Organization, new=True),
+ validators=[valid_id(Organization)], required=False)
+ comment = forms.CharField(label=_(u"Comment"),
+ widget=forms.Textarea, required=False)
+ creation_date = forms.DateField(label=_(u"Start date"), required=False,
+ widget=widgets.JQueryDate,
+ initial=lambda: datetime.datetime.now())
+ reception_date = forms.DateField(label=_(u"Reception date"), required=False,
+ widget=widgets.JQueryDate,
+ initial=lambda: datetime.datetime.now())
+ end_date = forms.DateField(label=_(u"Closing date"), required=False,
+ widget=widgets.JQueryDate)
+
+ def __init__(self, *args, **kwargs):
+ user = kwargs.pop('user')
+ super(TreatmentFileForm, self).__init__(*args, **kwargs)
+ q = Person.objects.filter(ishtaruser__pk=user.pk)
+ if q.count():
+ person = q.all()[0]
+ self.fields['in_charge'].initial = person.pk
+ self.fields['type'].choices = models.TreatmentFileType.get_types(
+ initial=[self.init_data.get('type')], empty_first=False
+ )
+ self.fields['type'].help_text = models.TreatmentFileType.get_help()
+
+
+class TreatmentFileModifyForm(TreatmentFileForm):
+ index = forms.IntegerField(_(u"Index"))
+ id = forms.IntegerField(' ', widget=forms.HiddenInput, required=False)
+
+ def __init__(self, *args, **kwargs):
+ super(TreatmentFileModifyForm, self).__init__(*args, **kwargs)
+ self.fields.keyOrder.pop(self.fields.keyOrder.index('index'))
+ self.fields.keyOrder.insert(
+ self.fields.keyOrder.index('year') + 1, 'index')
+
+ def clean(self, *args, **kwargs):
+ super(TreatmentFileModifyForm, self).clean(*args, **kwargs)
+ cleaned_data = self.cleaned_data
+ year = cleaned_data.get('year')
+ pk = cleaned_data.get('id')
+ index = cleaned_data.get('index')
+ q = models.TreatmentFile.objects \
+ .filter(year=year, index=index).exclude(pk=pk)
+ if index and q.count():
+ raise forms.ValidationError(
+ _(u"Another treatment request with this index exists for {}."
+ ).format(year))
+ return cleaned_data
+
+
+class TreatmentFileDeletionForm(FinalForm):
+ confirm_msg = _(u"Are you sure you want to delete this treatment request?")
+ confirm_end_msg = _(u"Would you like to delete this treatment request?")
+
+
+class AdministrativeActTreatmentFileSelect(TableSelect):
+ year = forms.IntegerField(label=_("Year"))
+ index = forms.IntegerField(label=_("Index"))
+ act_type = forms.ChoiceField(label=_("Act type"), choices=[])
+ indexed = forms.NullBooleanField(label=_(u"Indexed?"))
+ act_object = forms.CharField(label=_(u"Object"),
+ max_length=300)
+
+ signature_date_after = forms.DateField(
+ label=_(u"Signature date after"), widget=widgets.JQueryDate)
+ signature_date_before = forms.DateField(
+ label=_(u"Signature date before"), widget=widgets.JQueryDate)
+ treatment_file__name = forms.CharField(
+ label=_(u"Treatment request name"), max_length=200)
+ treatment_file__year = forms.IntegerField(
+ label=_(u"Treatment request year"))
+ treatment_file__index = forms.IntegerField(
+ label=_(u"Treatment request index"))
+ treatment_file__internal_reference = forms.CharField(
+ max_length=200, label=_(u"Treatment request internal reference"))
+ treatment_file__type = forms.ChoiceField(label=_(u"Treatment request type"),
+ choices=[])
+ history_modifier = forms.IntegerField(
+ label=_(u"Modified by"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-person',
+ args=['0', 'user']),
+ associated_model=Person),
+ validators=[valid_id(Person)])
+
+ def __init__(self, *args, **kwargs):
+ super(AdministrativeActTreatmentFileSelect, self).__init__(*args,
+ **kwargs)
+ self.fields['act_type'].choices = ActType.get_types(
+ dct={'intented_to': 'TF'})
+ self.fields['act_type'].help_text = ActType.get_help(
+ dct={'intented_to': 'TF'})
+ self.fields['treatment_file__type'].choices = \
+ models.TreatmentFileType.get_types()
+ self.fields['treatment_file__type'].help_text = \
+ models.TreatmentFileType.get_help()
+
+
+class AdministrativeActTreatmentFileFormSelection(
+ AdministrativeActOpeFormSelection):
+ pk = forms.IntegerField(
+ label="", required=False,
+ widget=widgets.JQueryJqGrid(
+ reverse_lazy('get-administrativeacttreatmentfile'),
+ AdministrativeActTreatmentFileSelect, AdministrativeAct),
+ validators=[valid_id(AdministrativeAct)])
+
+
+class AdministrativeActTreatmentFileForm(AdministrativeActOpeForm):
+ act_type = forms.ChoiceField(label=_(u"Act type"), choices=[])
+
+ def __init__(self, *args, **kwargs):
+ super(AdministrativeActTreatmentFileForm, self).__init__(*args,
+ **kwargs)
+ self.fields['act_type'].choices = ActType.get_types(
+ initial=self.init_data.get('act_type'),
+ dct={'intented_to': 'TF'})
+ self.fields['act_type'].help_text = ActType.get_help(
+ dct={'intented_to': 'TF'})
+
+
+class AdministrativeActTreatmentFileModifForm(
+ AdministrativeActModifForm, AdministrativeActTreatmentFileForm):
+ pk = forms.IntegerField(required=False, widget=forms.HiddenInput)
+ index = forms.IntegerField(label=_("Index"), required=False)
+
+SourceTreatmentFormSelection = get_form_selection(
+ 'SourceTreatmentFormSelection', _(u"Treatment search"), 'treatment',
+ models.Treatment, TreatmentSelect, 'get-treatment',
+ _(u"You should select a treatment."))
+
+SourceTreatmentFileFormSelection = get_form_selection(
+ 'SourceTreatmentFileFormSelection', _(u"Treatment request search"),
+ 'treatment_file',
+ models.TreatmentFile, TreatmentFileSelect, 'get-treatmentfile',
+ _(u"You should select a treatment request."))
+
+
+class TreatmentSourceSelect(SourceSelect):
+ treatment__name = forms.CharField(
+ label=_(u"Treatment name"), max_length=200)
+ treatment__year = forms.IntegerField(label=_(u"Treatment year"))
+ treatment__index = forms.IntegerField(label=_(u"Treatment index"))
+ treatment__internal_reference = forms.CharField(
+ max_length=200, label=_(u"Treatment internal reference"))
+ treatment__treatment_types = forms.ChoiceField(label=_(u"Treatment type"),
+ choices=[])
+
+ def __init__(self, *args, **kwargs):
+ super(TreatmentSourceSelect, self).__init__(*args, **kwargs)
+ self.fields['treatment__treatment_types'].choices = \
+ models.TreatmentType.get_types()
+ self.fields['treatment__treatment_types'].help_text = \
+ models.TreatmentType.get_help()
+
+
+TreatmentSourceFormSelection = get_form_selection(
+ 'TreatmentSourceFormSelection', _(u"Documentation search"), 'pk',
+ models.TreatmentSource, TreatmentSourceSelect, 'get-treatmentsource',
+ _(u"You should select a document."))
+
+
+class TreatmentFileSourceSelect(SourceSelect):
+ treatment_file__name = forms.CharField(
+ label=_(u"Treatment request name"), max_length=200)
+ treatment_file__year = forms.IntegerField(
+ label=_(u"Treatment request year"))
+ treatment_file__index = forms.IntegerField(
+ label=_(u"Treatment request index"))
+ treatment_file__internal_reference = forms.CharField(
+ max_length=200, label=_(u"Treatment request internal reference"))
+ treatment_file__type = forms.ChoiceField(label=_(u"Treatment request type"),
+ choices=[])
+
+ def __init__(self, *args, **kwargs):
+ super(TreatmentFileSourceSelect, self).__init__(*args, **kwargs)
+ self.fields['treatment_file__type'].choices = \
+ models.TreatmentFileType.get_types()
+ self.fields['treatment_file__type'].help_text = \
+ models.TreatmentFileType.get_help()
+
+
+TreatmentFileSourceFormSelection = get_form_selection(
+ 'TreatmentFileSourceFormSelection', _(u"Documentation search"), 'pk',
+ models.TreatmentFileSource, TreatmentFileSourceSelect,
+ 'get-treatmentfilesource', _(u"You should select a document."))
diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py
index f638a60b2..12bcfc19d 100644
--- a/archaeological_finds/ishtar_menu.py
+++ b/archaeological_finds/ishtar_menu.py
@@ -21,6 +21,7 @@ from django.utils.translation import ugettext_lazy as _
from ishtar_common.menu_base import SectionItem, MenuItem
+from archaeological_operations.models import AdministrativeAct
import models
# be carreful: each access_controls must be relevant with check_rights in urls
@@ -46,11 +47,6 @@ MENU_SECTIONS = [
model=models.Find,
access_controls=['change_find',
'change_own_find']),
- # MenuItem(
- # 'treatment_creation', _(u"Add a treatment"),
- # model=models.Treatment,
- # access_controls=['change_find',
- # 'change_own_find']),
MenuItem(
'find_deletion', _(u"Deletion"),
model=models.Find,
@@ -99,6 +95,167 @@ MENU_SECTIONS = [
model=models.FindSource,
access_controls=['change_find',
'change_own_find']),
- ])
- ]))
+ ]),
+ # MenuItem(
+ # 'treatment_creation', _(u"Add a treatment"),
+ # model=models.Treatment,
+ # access_controls=['change_find',
+ # 'change_own_find']),
+ ])),
+ (60,
+ SectionItem(
+ 'treatmentfle_management', _(u"Treatment request"),
+ profile_restriction='warehouse',
+ childs=[
+ MenuItem('treatmentfle_search',
+ _(u"Search"),
+ model=models.TreatmentFile,
+ access_controls=['view_find',
+ 'view_own_find']),
+ MenuItem('treatmentfle_creation',
+ _(u"Creation"),
+ model=models.TreatmentFile,
+ access_controls=['change_find',
+ 'change_own_find']),
+ MenuItem('treatmentfle_modification',
+ _(u"Modification"),
+ model=models.TreatmentFile,
+ access_controls=['change_find',
+ 'change_own_find']),
+ MenuItem('treatmentfle_deletion',
+ _(u"Deletion"),
+ model=models.TreatmentFile,
+ access_controls=['change_find',
+ 'change_own_find']),
+ SectionItem(
+ 'admin_act_fletreatments', _(u"Administrative act"),
+ childs=[
+ MenuItem('treatmentfle_admacttreatmentfle_search',
+ _(u"Search"),
+ model=AdministrativeAct,
+ access_controls=['change_administrativeact']),
+ MenuItem('treatmentfle_admacttreatmentfle',
+ _(u"Creation"),
+ model=AdministrativeAct,
+ access_controls=['change_administrativeact']),
+ MenuItem('treatmentfle_admacttreatmentfle_modification',
+ _(u"Modification"), model=AdministrativeAct,
+ access_controls=['change_administrativeact']),
+ MenuItem('treatmentfle_admacttreatmentfle_deletion',
+ _(u"Deletion"),
+ model=AdministrativeAct,
+ access_controls=['change_administrativeact']),
+ MenuItem('treatmentfle_administrativeact_document',
+ _(u"Documents"),
+ model=AdministrativeAct,
+ access_controls=['change_administrativeact']),
+ ]
+ ),
+ SectionItem(
+ 'treatmentfile_source', _(u"Source"),
+ childs=[
+ MenuItem('treatmentfile_source_search',
+ _(u"Search"),
+ model=models.TreatmentFileSource,
+ access_controls=['view_treatmentfile',
+ 'view_own_treatmentfile']),
+ MenuItem('treatmentfile_source_creation',
+ _(u"Creation"),
+ model=models.TreatmentFileSource,
+ access_controls=['change_treatmentfile',
+ 'change_own_treatmentfile']),
+ MenuItem('treatmentfile_source_modification',
+ _(u"Modification"),
+ model=models.TreatmentFileSource,
+ access_controls=['change_treatmentfile',
+ 'change_own_treatmentfile']),
+ MenuItem('treatmentfile_source_deletion',
+ _(u"Deletion"),
+ model=models.TreatmentFileSource,
+ access_controls=['change_treatmentfile',
+ 'change_own_treatmentfile']),
+ ]
+ ),
+ ]
+ )),
+ (70,
+ SectionItem(
+ 'treatment_management', _(u"Treatment"),
+ profile_restriction='warehouse',
+ childs=[
+ SectionItem(
+ 'find_treatments', _(u"Simple treatments"),
+ childs=[
+ MenuItem('treatment_search',
+ _(u"Search"),
+ model=models.Treatment,
+ access_controls=['view_find',
+ 'view_own_find']),
+ MenuItem('treatment_creation',
+ _(u"Creation"),
+ model=models.Treatment,
+ access_controls=['change_find',
+ 'change_own_find']),
+ MenuItem('treatment_modification',
+ _(u"Modification"),
+ model=models.Treatment,
+ access_controls=['change_find',
+ 'change_own_find']),
+ MenuItem('treatment_deletion',
+ _(u"Deletion"),
+ model=models.Treatment,
+ access_controls=['change_find',
+ 'change_own_find']),
+ ]),
+ SectionItem(
+ 'admin_act_treatments', _(u"Administrative act"),
+ childs=[
+ MenuItem('treatment_admacttreatment_search',
+ _(u"Search"),
+ model=AdministrativeAct,
+ access_controls=['change_administrativeact']),
+ MenuItem('treatment_admacttreatment',
+ _(u"Creation"),
+ model=AdministrativeAct,
+ access_controls=['change_administrativeact']),
+ MenuItem(
+ 'treatment_admacttreatment_modification',
+ _(u"Modification"), model=AdministrativeAct,
+ access_controls=['change_administrativeact']),
+ MenuItem('treatment_admacttreatment_deletion',
+ _(u"Deletion"),
+ model=AdministrativeAct,
+ access_controls=['change_administrativeact']),
+ MenuItem('treatment_administrativeact_document',
+ _(u"Documents"),
+ model=AdministrativeAct,
+ access_controls=['change_administrativeact']),
+ ]),
+ SectionItem(
+ 'treatment_source', _(u"Source"),
+ childs=[
+ MenuItem('treatment_source_search',
+ _(u"Search"),
+ model=models.TreatmentSource,
+ access_controls=['view_treatment',
+ 'view_own_treatment']),
+ MenuItem('treatment_source_creation',
+ _(u"Creation"),
+ model=models.TreatmentSource,
+ access_controls=['change_treatment',
+ 'change_own_treatment']),
+ MenuItem('treatment_source_modification',
+ _(u"Modification"),
+ model=models.TreatmentSource,
+ access_controls=['change_treatment',
+ 'change_own_treatment']),
+ MenuItem('treatment_source_deletion',
+ _(u"Deletion"),
+ model=models.TreatmentSource,
+ access_controls=['change_treatment',
+ 'change_own_treatment']),
+ ]
+ ),
+ ]
+ )),
]
diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot
index 93a83eb05..1291d8491 100644
--- a/archaeological_finds/locale/django.pot
+++ b/archaeological_finds/locale/django.pot
@@ -2,756 +2,1139 @@
# Copyright (C) 2010-2015
# This file is distributed under the same license as the Ishtar package.
# Étienne Loks <etienne.loks at peacefrogs net>, 2010-2015.
-# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
-# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata
+# Valérie-Emma Leroux <emma@iggdrasil.net>, 2017. #zanata
msgid ""
msgstr ""
-#: forms.py:50 forms.py:54 wizards.py:60
+#: forms.py:88 forms.py:92 wizards.py:64
msgid "Context record"
msgstr ""
-#: forms.py:83 ishtar_menu.py:31 models.py:439 models.py:750 models.py:850
-#: models.py:1000 templates/ishtar/sheet_find.html:5
+#: forms.py:121 ishtar_menu.py:32 models_finds.py:466 models_finds.py:791
+#: models_finds.py:800 models_treatments.py:265
+#: templates/ishtar/sheet_find.html:5
msgid "Find"
msgstr ""
-#: forms.py:94 forms.py:218 forms.py:425 models.py:127 models.py:376
+#: forms.py:132 forms.py:263 forms.py:487 models_finds.py:127
+#: models_finds.py:394
msgid "Free ID"
msgstr ""
-#: forms.py:96 models.py:425
+#: forms.py:134 models_finds.py:449
msgid "Previous ID"
msgstr ""
-#: forms.py:97 forms.py:250 forms.py:591 models.py:131 models.py:377
-#: models.py:784
+#: forms.py:135 forms.py:295 forms_treatments.py:133 models_finds.py:131
+#: models_finds.py:395 models_treatments.py:123
msgid "Description"
msgstr ""
-#: forms.py:100 forms.py:252 models.py:142
+#: forms.py:138 forms.py:297 models_finds.py:142
msgid "Batch/object"
msgstr ""
-#: forms.py:102 models.py:405
+#: forms.py:140 models_finds.py:423
msgid "Is complete?"
msgstr ""
-#: forms.py:105 forms.py:240 forms.py:429 models.py:50
+#: forms.py:143 forms.py:285 forms.py:491 models_finds.py:50
msgid "Material type"
msgstr ""
-#: forms.py:106 forms.py:244 models.py:62 models.py:381
+#: forms.py:144 forms.py:289 models_finds.py:62 models_finds.py:399
msgid "Conservatory state"
msgstr ""
-#: forms.py:109 models.py:383
+#: forms.py:147 models_finds.py:401
msgid "Conservatory comment"
msgstr ""
-#: forms.py:112 models.py:102 models.py:408
+#: forms.py:150 models_finds.py:102 models_finds.py:426
msgid "Object types"
msgstr ""
-#: forms.py:114 forms.py:243 models.py:71
+#: forms.py:152 forms.py:288 models_finds.py:71
msgid "Preservation type"
msgstr ""
-#: forms.py:117 forms.py:246 models.py:410
+#: forms.py:155 forms.py:291 models_finds.py:428
msgid "Integrity / interest"
msgstr ""
-#: forms.py:120 forms.py:248 models.py:413
+#: forms.py:158 forms.py:293 models_finds.py:431
msgid "Remarkability"
msgstr ""
-#: forms.py:122 models.py:415
+#: forms.py:161 models_finds.py:441
+msgid "Point of topographic reference"
+msgstr ""
+
+#: forms.py:164 models_finds.py:435
msgid "Length (cm)"
msgstr ""
-#: forms.py:123 models.py:416
+#: forms.py:165 models_finds.py:436
msgid "Width (cm)"
msgstr ""
-#: forms.py:124 models.py:417
+#: forms.py:166 models_finds.py:437
msgid "Height (cm)"
msgstr ""
-#: forms.py:125 models.py:418
+#: forms.py:167 models_finds.py:438
msgid "Diameter (cm)"
msgstr ""
-#: forms.py:126 forms.py:430 models.py:388
+#: forms.py:168 models_finds.py:439
+msgid "Thickness (cm)"
+msgstr ""
+
+#: forms.py:169 forms.py:492 models_finds.py:406
msgid "Volume (l)"
msgstr ""
-#: forms.py:127 forms.py:431 models.py:389
+#: forms.py:170 forms.py:493 models_finds.py:407
msgid "Weight (g)"
msgstr ""
-#: forms.py:129 models.py:419
+#: forms.py:172 models_finds.py:443
msgid "Dimensions comment"
msgstr ""
-#: forms.py:130 forms.py:432 models.py:392
+#: forms.py:173 forms.py:494 models_finds.py:410
msgid "Find number"
msgstr ""
-#: forms.py:131 models.py:421
+#: forms.py:175 models_finds.py:434
+msgid "Minimum number of individuals (MNI)"
+msgstr ""
+
+#: forms.py:176 models_finds.py:445
msgid "Mark"
msgstr ""
-#: forms.py:132 forms.py:254 models.py:427
+#: forms.py:177 forms.py:299 models_finds.py:451
msgid "Check"
msgstr ""
-#: forms.py:134 models.py:429
+#: forms.py:179 models_finds.py:453
msgid "Check date"
msgstr ""
-#: forms.py:135 models.py:132 models.py:422 models.py:785
+#: forms.py:180 forms_treatments.py:131 forms_treatments.py:418
+#: models_finds.py:132 models_finds.py:446 models_treatments.py:122
+#: models_treatments.py:468
msgid "Comment"
msgstr ""
-#: forms.py:138 models.py:423
+#: forms.py:183 models_finds.py:447
msgid "Comment on dating"
msgstr ""
-#: forms.py:139 models.py:431
+#: forms.py:184 models_finds.py:455
msgid "Estimated value"
msgstr ""
-#: forms.py:141
+#: forms.py:186 forms_treatments.py:142
msgid "Image"
msgstr ""
-#: forms.py:142
+#: forms.py:187 forms_treatments.py:143
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
"p>"
msgstr ""
-#: forms.py:181 forms.py:212 models.py:400
+#: forms.py:226 forms.py:257 models_finds.py:418
msgid "Dating"
msgstr ""
-#: forms.py:186 forms.py:238
+#: forms.py:231 forms.py:283
msgid "Period"
msgstr ""
-#: forms.py:187 forms.py:593 models.py:798 models.py:863 models.py:1005
-#: templates/ishtar/sheet_find.html:92 templates/ishtar/sheet_find.html:121
+#: forms.py:232 forms_treatments.py:137 forms_treatments.py:420
+#: models_finds.py:805 models_treatments.py:125 models_treatments.py:276
+#: templates/ishtar/sheet_find.html:102 templates/ishtar/sheet_find.html:142
msgid "Start date"
msgstr ""
-#: forms.py:189 forms.py:595 models.py:799 models.py:864 models.py:1006
-#: templates/ishtar/sheet_find.html:93 templates/ishtar/sheet_find.html:122
+#: forms.py:234 models_finds.py:806 models_treatments.py:277
+#: templates/ishtar/sheet_find.html:103 templates/ishtar/sheet_find.html:143
msgid "End date"
msgstr ""
-#: forms.py:190
+#: forms.py:235
msgid "Quality"
msgstr ""
-#: forms.py:192
+#: forms.py:237
msgid "Dating type"
msgstr ""
-#: forms.py:194
+#: forms.py:239
msgid "Precise dating"
msgstr ""
-#: forms.py:216 models.py:150
+#: forms.py:261 models_finds.py:150
msgid "Short ID"
msgstr ""
-#: forms.py:217 models.py:153
+#: forms.py:262 models_finds.py:153
msgid "Complete ID"
msgstr ""
-#: forms.py:221
+#: forms.py:266 forms_treatments.py:53 forms_treatments.py:95
+#: forms_treatments.py:268 forms_treatments.py:340 forms_treatments.py:390
+#: forms_treatments.py:473 models_treatments.py:98 models_treatments.py:440
msgid "Year"
msgstr ""
-#: forms.py:223
+#: forms.py:268
msgid "Operation's number (index by year)"
msgstr ""
-#: forms.py:226
+#: forms.py:271
msgid "Code PATRIARCHE"
msgstr ""
-#: forms.py:230
-msgid "Archaelogical site"
+#: forms.py:275
+msgid "Archaeological site"
msgstr ""
-#: forms.py:236
-msgid "Search within operation relations"
+#: forms.py:281
+msgid "Search within related operations"
msgstr ""
-#: forms.py:241 models.py:101
+#: forms.py:286 models_finds.py:101
msgid "Object type"
msgstr ""
-#: forms.py:255
+#: forms.py:300 forms_treatments.py:56
msgid "Has an image?"
msgstr ""
-#: forms.py:297 forms.py:310 views.py:66
+#: forms.py:342 forms.py:355 views.py:129
msgid "Find search"
msgstr ""
-#: forms.py:324
+#: forms.py:369 templates/ishtar/sheet_treatment.html:42
msgid "Upstream finds"
msgstr ""
-#: forms.py:326 models.py:440
+#: forms.py:371 models_finds.py:467
msgid "Finds"
msgstr ""
-#: forms.py:336
+#: forms.py:381
msgid "You should at least select one archaeological find."
msgstr ""
-#: forms.py:422
+#: forms.py:484
msgid "Resulting find"
msgstr ""
-#: forms.py:427
+#: forms.py:489
msgid "Precise description"
msgstr ""
-#: forms.py:442
+#: forms.py:504
msgid "Resulting finds"
msgstr ""
-#: forms.py:447
+#: forms.py:509
msgid "Would you like to delete this find?"
msgstr ""
-#: forms.py:451
+#: forms.py:513 models_treatments.py:90
msgid "Upstream find"
msgstr ""
-#: forms.py:462
+#: forms.py:526
msgid "Archaeological find search"
msgstr ""
-#: forms.py:464
+#: forms.py:528
msgid "You should select an archaeological find."
msgstr ""
-#: forms.py:469
+#: forms.py:533
msgid "Year of the operation"
msgstr ""
-#: forms.py:471
+#: forms.py:535
msgid "Numeric reference"
msgstr ""
-#: forms.py:478
-msgid "Period of the archaelogical find"
+#: forms.py:542
+msgid "Period of the archaeological find"
msgstr ""
-#: forms.py:480
-msgid "Material type of the archaelogical find"
+#: forms.py:544
+msgid "Material type of the archaeological find"
msgstr ""
-#: forms.py:482
-msgid "Description of the archaelogical find"
+#: forms.py:546
+msgid "Description of the archaeological find"
msgstr ""
-#: forms.py:494
+#: forms.py:558 forms_treatments.py:574 forms_treatments.py:600
msgid "Documentation search"
msgstr ""
-#: forms.py:496
+#: forms.py:560 forms_treatments.py:576 forms_treatments.py:602
msgid "You should select a document."
msgstr ""
-#: forms.py:513
-msgid "Another basket already exist with this name."
+#: forms.py:577
+msgid "Another basket already exists with this name."
msgstr ""
-#: forms.py:523 ishtar_menu.py:60
+#: forms.py:587 forms.py:591 forms_treatments.py:159 ishtar_menu.py:56
msgid "Basket"
msgstr ""
-#: forms.py:573
-msgid "Base treatment"
+#: forms_treatments.py:51 forms_treatments.py:91 models_treatments.py:94
+#: templates/ishtar/sheet_find.html:97 templates/ishtar/sheet_find.html:137
+msgid "Label"
msgstr ""
-#: forms.py:578 models.py:772 models.py:787 models.py:862
+#: forms_treatments.py:52 forms_treatments.py:94 models_treatments.py:96
+msgid "Other ref."
+msgstr ""
+
+#: forms_treatments.py:54 forms_treatments.py:221 forms_treatments.py:269
+#: forms_treatments.py:332 forms_treatments.py:341 forms_treatments.py:443
+#: forms_treatments.py:474 forms_treatments.py:541 models_treatments.py:100
+#: models_treatments.py:442
+msgid "Index"
+msgstr ""
+
+#: forms_treatments.py:55 forms_treatments.py:100 forms_treatments.py:285
+#: forms_treatments.py:562 models_treatments.py:56 models_treatments.py:105
+#: models_treatments.py:275
msgid "Treatment type"
msgstr ""
-#: forms.py:580 models.py:796 models.py:867
-#: templates/ishtar/sheet_find.html:90 templates/ishtar/sheet_find.html:119
-msgid "Doer"
+#: forms_treatments.py:67 forms_treatments.py:544 views.py:359
+msgid "Treatment search"
+msgstr ""
+
+#: forms_treatments.py:79
+msgid "Base treatment"
msgstr ""
-#: forms.py:586 models.py:789 models.py:865
+#: forms_treatments.py:102 models_treatments.py:107
+msgid "State"
+msgstr ""
+
+#: forms_treatments.py:104
+msgid "Target"
+msgstr ""
+
+#: forms_treatments.py:106 forms_treatments.py:401 models_treatments.py:115
+msgid "Responsible"
+msgstr ""
+
+#: forms_treatments.py:112 models_treatments.py:118
+msgid "Organization"
+msgstr ""
+
+#: forms_treatments.py:118 models_treatments.py:110 models_treatments.py:278
msgid "Location"
msgstr ""
-#: forms.py:607
-msgid "Leave it blank if you want to select a single item"
+#: forms_treatments.py:124
+msgid "Container (relevant for packaging)"
+msgstr ""
+
+#: forms_treatments.py:130 forms_treatments.py:397
+msgid "External ref."
msgstr ""
-#: forms.py:614
-msgid "This treatment type is not available."
+#: forms_treatments.py:135 models_treatments.py:124
+msgid "Goal"
msgstr ""
-#: forms.py:618
-msgid "This treatment needs a basket."
+#: forms_treatments.py:139 forms_treatments.py:426 models_treatments.py:126
+#: models_treatments.py:462
+msgid "Closing date"
msgstr ""
-#: ishtar_menu.py:35 ishtar_menu.py:83
+#: forms_treatments.py:159
+msgid "Single find"
+msgstr ""
+
+#: forms_treatments.py:193
+msgid ""
+"The container field is attached to the treatment. If no packaging treatment "
+"is done it is not relevant."
+msgstr ""
+
+#: forms_treatments.py:198
+msgid "If a packaging treatment is done, the container field must be filled."
+msgstr ""
+
+#: forms_treatments.py:202
+msgid "A responsible or an organization must be defined."
+msgstr ""
+
+#: forms_treatments.py:240
+msgid "Another treatment with this index exists for {}."
+msgstr ""
+
+#: forms_treatments.py:246 models_treatments.py:103
+msgid "Associated request"
+msgstr ""
+
+#: forms_treatments.py:250 forms_treatments.py:381 ishtar_menu.py:107
+#: models_treatments.py:473 models_treatments.py:495 models_treatments.py:556
+#: wizards.py:183 templates/ishtar/sheet_treatmentfile.html:5
+msgid "Treatment request"
+msgstr ""
+
+#: forms_treatments.py:259
+msgid ""
+"Are you sure you want to delete this treatment? All changes made to the "
+"associated finds since this treatment record will be lost!"
+msgstr ""
+
+#: forms_treatments.py:262
+msgid "Would you like to delete this treatment?"
+msgstr ""
+
+#: forms_treatments.py:270 forms_treatments.py:318 forms_treatments.py:475
+#: forms_treatments.py:526
+msgid "Act type"
+msgstr ""
+
+#: forms_treatments.py:271 forms_treatments.py:476
+msgid "Indexed?"
+msgstr ""
+
+#: forms_treatments.py:272 forms_treatments.py:477 models_finds.py:120
+msgid "Object"
+msgstr ""
+
+#: forms_treatments.py:276 forms_treatments.py:481
+msgid "Signature date after"
+msgstr ""
+
+#: forms_treatments.py:278 forms_treatments.py:483
+msgid "Signature date before"
+msgstr ""
+
+#: forms_treatments.py:280 forms_treatments.py:557
+msgid "Treatment name"
+msgstr ""
+
+#: forms_treatments.py:281 forms_treatments.py:558
+msgid "Treatment year"
+msgstr ""
+
+#: forms_treatments.py:282 forms_treatments.py:559
+msgid "Treatment index"
+msgstr ""
+
+#: forms_treatments.py:284 forms_treatments.py:561
+msgid "Treatment internal reference"
+msgstr ""
+
+#: forms_treatments.py:288 forms_treatments.py:495
+msgid "Modified by"
+msgstr ""
+
+#: forms_treatments.py:338 forms_treatments.py:388 models_treatments.py:447
+msgid "Name"
+msgstr ""
+
+#: forms_treatments.py:339 forms_treatments.py:395
+msgid "Internal ref."
+msgstr ""
+
+#: forms_treatments.py:342 forms_treatments.py:399
+#: templates/ishtar/sheet_find.html:98 templates/ishtar/sheet_find.html:138
+#: templates/ishtar/sheet_find.html:216
+msgid "Type"
+msgstr ""
+
+#: forms_treatments.py:344
+msgid "In charge"
+msgstr ""
+
+#: forms_treatments.py:350 forms_treatments.py:407 models_treatments.py:456
+#: templates/ishtar/sheet_treatmentfile.html:31
+msgid "Applicant"
+msgstr ""
+
+#: forms_treatments.py:356 forms_treatments.py:413 models_treatments.py:460
+#: templates/ishtar/sheet_treatmentfile.html:38
+msgid "Applicant organisation"
+msgstr ""
+
+#: forms_treatments.py:369 forms_treatments.py:549 views.py:463
+msgid "Treatment request search"
+msgstr ""
+
+#: forms_treatments.py:423 models_treatments.py:466
+msgid "Reception date"
+msgstr ""
+
+#: forms_treatments.py:462
+msgid "Another treatment request with this index exists for {}."
+msgstr ""
+
+#: forms_treatments.py:468
+msgid "Are you sure you want to delete this treatment request?"
+msgstr ""
+
+#: forms_treatments.py:469
+msgid "Would you like to delete this treatment request?"
+msgstr ""
+
+#: forms_treatments.py:485 forms_treatments.py:581
+msgid "Treatment request name"
+msgstr ""
+
+#: forms_treatments.py:487 forms_treatments.py:583
+msgid "Treatment request year"
+msgstr ""
+
+#: forms_treatments.py:489 forms_treatments.py:585
+msgid "Treatment request index"
+msgstr ""
+
+#: forms_treatments.py:491 forms_treatments.py:587
+msgid "Treatment request internal reference"
+msgstr ""
+
+#: forms_treatments.py:492 forms_treatments.py:588 models_treatments.py:425
+#: models_treatments.py:449
+msgid "Treatment request type"
+msgstr ""
+
+#: forms_treatments.py:546
+msgid "You should select a treatment."
+msgstr ""
+
+#: forms_treatments.py:552
+msgid "You should select a treatment request."
+msgstr ""
+
+#: ishtar_menu.py:36 ishtar_menu.py:79 ishtar_menu.py:111 ishtar_menu.py:134
+#: ishtar_menu.py:158 ishtar_menu.py:190 ishtar_menu.py:214 ishtar_menu.py:238
msgid "Search"
msgstr ""
-#: ishtar_menu.py:40 ishtar_menu.py:63 ishtar_menu.py:88
+#: ishtar_menu.py:41 ishtar_menu.py:59 ishtar_menu.py:84 ishtar_menu.py:116
+#: ishtar_menu.py:138 ishtar_menu.py:163 ishtar_menu.py:195 ishtar_menu.py:218
+#: ishtar_menu.py:243
msgid "Creation"
msgstr ""
-#: ishtar_menu.py:45 ishtar_menu.py:93
+#: ishtar_menu.py:46 ishtar_menu.py:89 ishtar_menu.py:121 ishtar_menu.py:142
+#: ishtar_menu.py:168 ishtar_menu.py:200 ishtar_menu.py:223 ishtar_menu.py:248
msgid "Modification"
msgstr ""
-#: ishtar_menu.py:55 ishtar_menu.py:74 ishtar_menu.py:98
+#: ishtar_menu.py:51 ishtar_menu.py:70 ishtar_menu.py:94 ishtar_menu.py:126
+#: ishtar_menu.py:145 ishtar_menu.py:173 ishtar_menu.py:205 ishtar_menu.py:226
+#: ishtar_menu.py:253
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:68
+#: ishtar_menu.py:64
msgid "Manage items"
msgstr ""
-#: ishtar_menu.py:80
+#: ishtar_menu.py:76
msgid "Documentation"
msgstr ""
-#: models.py:43
+#: ishtar_menu.py:131 ishtar_menu.py:211 models_finds.py:802
+msgid "Administrative act"
+msgstr ""
+
+#: ishtar_menu.py:149 ishtar_menu.py:230 templates/ishtar/sheet_find.html:211
+#: templates/ishtar/sheet_find.html:213
+msgid "Documents"
+msgstr ""
+
+#: ishtar_menu.py:155 ishtar_menu.py:235
+msgid "Source"
+msgstr ""
+
+#: ishtar_menu.py:183 models_treatments.py:135 models_treatments.py:267
+#: models_treatments.py:540 templates/ishtar/sheet_treatment.html:5
+msgid "Treatment"
+msgstr ""
+
+#: ishtar_menu.py:187
+msgid "Simple treatments"
+msgstr ""
+
+#: models_finds.py:43
msgid "Code"
msgstr ""
-#: models.py:44
+#: models_finds.py:44
msgid "Recommendation"
msgstr ""
-#: models.py:47
+#: models_finds.py:47
msgid "Parent material"
msgstr ""
-#: models.py:51 models.py:379
+#: models_finds.py:51 models_finds.py:397
msgid "Material types"
msgstr ""
-#: models.py:59
+#: models_finds.py:59
msgid "Parent conservatory state"
msgstr ""
-#: models.py:63
+#: models_finds.py:63
msgid "Conservatory states"
msgstr ""
-#: models.py:72
+#: models_finds.py:72
msgid "Preservation types"
msgstr ""
-#: models.py:80
+#: models_finds.py:80
msgid "Integrity / interest type"
msgstr ""
-#: models.py:81
+#: models_finds.py:81
msgid "Integrity / interest types"
msgstr ""
-#: models.py:89
+#: models_finds.py:89
msgid "Remarkability type"
msgstr ""
-#: models.py:90
+#: models_finds.py:90
msgid "Remarkability types"
msgstr ""
-#: models.py:98
+#: models_finds.py:98
msgid "Parent"
msgstr ""
-#: models.py:119
+#: models_finds.py:119
msgid "Unknow"
msgstr ""
-#: models.py:120
-msgid "Object"
-msgstr ""
-
-#: models.py:121
+#: models_finds.py:121
msgid "Batch"
msgstr ""
-#: models.py:128 models.py:372 models.py:780
+#: models_finds.py:128 models_finds.py:390 models_treatments.py:120
+#: models_treatments.py:445
msgid "External ID"
msgstr ""
-#: models.py:130 models.py:374
+#: models_finds.py:130 models_finds.py:392
msgid "External ID is set automatically"
msgstr ""
-#: models.py:134
+#: models_finds.py:134
msgid "Topographic localisation"
msgstr ""
-#: models.py:135
+#: models_finds.py:135
msgid "Special interest"
msgstr ""
-#: models.py:139
+#: models_finds.py:139
msgid "Context Record"
msgstr ""
-#: models.py:140
+#: models_finds.py:140
msgid "Discovery date"
msgstr ""
-#: models.py:145
+#: models_finds.py:145
msgid "Material index"
msgstr ""
-#: models.py:146
+#: models_finds.py:146
msgid "Point"
msgstr ""
-#: models.py:147
+#: models_finds.py:147
msgid "Line"
msgstr ""
-#: models.py:148
+#: models_finds.py:148
msgid "Polygon"
msgstr ""
-#: models.py:151 models.py:154
+#: models_finds.py:151 models_finds.py:154
msgid "Cached value - do not edit"
msgstr ""
-#: models.py:159 models.py:370
+#: models_finds.py:159 models_finds.py:388
msgid "Base find"
msgstr ""
-#: models.py:160
+#: models_finds.py:160
msgid "Base finds"
msgstr ""
-#: models.py:162
+#: models_finds.py:162
msgid "Can view all Base finds"
msgstr ""
-#: models.py:163
+#: models_finds.py:163
msgid "Can view own Base find"
msgstr ""
-#: models.py:164
+#: models_finds.py:164
msgid "Can add own Base find"
msgstr ""
-#: models.py:165
+#: models_finds.py:165
msgid "Can change own Base find"
msgstr ""
-#: models.py:166
+#: models_finds.py:166
msgid "Can delete own Base find"
msgstr ""
-#: models.py:275
+#: models_finds.py:276
msgid "g"
msgstr ""
-#: models.py:276
+#: models_finds.py:277
msgid "kg"
msgstr ""
-#: models.py:278
+#: models_finds.py:279
msgid "Not checked"
msgstr ""
-#: models.py:279
+#: models_finds.py:280
msgid "Checked but incorrect"
msgstr ""
-#: models.py:280
+#: models_finds.py:281
msgid "Checked and correct"
msgstr ""
-#: models.py:320
+#: models_finds.py:315
+msgid "Periods"
+msgstr ""
+
+#: models_finds.py:316 models_finds.py:421 models_treatments.py:127
+#: models_treatments.py:279 templates/ishtar/sheet_find.html:101
+#: templates/ishtar/sheet_find.html:141
+msgid "Container"
+msgstr ""
+
+#: models_finds.py:326
msgid "Base find - Short ID"
msgstr ""
-#: models.py:321
+#: models_finds.py:327
msgid "Base find - Complete ID"
msgstr ""
-#: models.py:322
+#: models_finds.py:328
msgid "Base find - Comment"
msgstr ""
-#: models.py:323
+#: models_finds.py:329
msgid "Base find - Description"
msgstr ""
-#: models.py:324
+#: models_finds.py:330
msgid "Base find - Topographic localisation"
msgstr ""
-#: models.py:326
+#: models_finds.py:332
msgid "Base find - Special interest"
msgstr ""
-#: models.py:327
+#: models_finds.py:333
msgid "Base find - Discovery date"
msgstr ""
-#: models.py:375 models.py:856
+#: models_finds.py:393 models_treatments.py:40 models_treatments.py:271
msgid "Order"
msgstr ""
-#: models.py:386
+#: models_finds.py:404
msgid "Type of preservation to consider"
msgstr ""
-#: models.py:390
+#: models_finds.py:408
msgid "Weight unit"
msgstr ""
-#: models.py:396 templates/ishtar/sheet_find.html:83
+#: models_finds.py:414 templates/ishtar/sheet_find.html:90
msgid "Upstream treatment"
msgstr ""
-#: models.py:399 templates/ishtar/sheet_find.html:112
+#: models_finds.py:417 templates/ishtar/sheet_find.html:130
msgid "Downstream treatment"
msgstr ""
-#: models.py:403 models.py:782 models.py:866
-#: templates/ishtar/sheet_find.html:91 templates/ishtar/sheet_find.html:120
-msgid "Container"
+#: models_finds.py:458
+msgid "Collection"
msgstr ""
-#: models.py:433
+#: models_finds.py:460 models_treatments.py:131 models_treatments.py:469
msgid "Cached name"
msgstr ""
-#: models.py:442
+#: models_finds.py:469
msgid "Can view all Finds"
msgstr ""
-#: models.py:443
+#: models_finds.py:470
msgid "Can view own Find"
msgstr ""
-#: models.py:444
+#: models_finds.py:471
msgid "Can add own Find"
msgstr ""
-#: models.py:445
+#: models_finds.py:472
msgid "Can change own Find"
msgstr ""
-#: models.py:446
+#: models_finds.py:473
msgid "Can delete own Find"
msgstr ""
-#: models.py:452
+#: models_finds.py:479
msgid "FIND"
msgstr ""
-#: models.py:748
+#: models_finds.py:789
msgid "Find documentation"
msgstr ""
-#: models.py:749
+#: models_finds.py:790
msgid "Find documentations"
msgstr ""
-#: models.py:759
+#: models_finds.py:803
+msgid "Person"
+msgstr ""
+
+#: models_finds.py:809
+msgid "Property"
+msgstr ""
+
+#: models_finds.py:810
+msgid "Properties"
+msgstr ""
+
+#: models_treatments.py:41
+msgid "Parent type"
+msgstr ""
+
+#: models_treatments.py:43
msgid "Virtual"
msgstr ""
-#: models.py:761
+#: models_treatments.py:45
msgid "Upstream is many"
msgstr ""
-#: models.py:763
+#: models_treatments.py:47
msgid "Check this if for this treatment from many finds you'll get one."
msgstr ""
-#: models.py:766
+#: models_treatments.py:50
msgid "Downstream is many"
msgstr ""
-#: models.py:768
+#: models_treatments.py:52
msgid "Check this if for this treatment from one find you'll get many."
msgstr ""
-#: models.py:773
+#: models_treatments.py:57
msgid "Treatment types"
msgstr ""
-#: models.py:791
-msgid "Location where the treatment is done. Target warehouse for a move."
+#: models_treatments.py:65
+msgid "Treatment state type"
msgstr ""
-#: models.py:793
-msgid "Other location"
+#: models_treatments.py:66
+msgid "Treatment state types"
msgstr ""
-#: models.py:803 models.py:852 models.py:992
-msgid "Treatment"
+#: models_treatments.py:89
+msgid "Downstream find"
msgstr ""
-#: models.py:804 templates/ishtar/sheet_find.html:80
+#: models_treatments.py:112
+msgid "Location where the treatment is done. Target warehouse for a move."
+msgstr ""
+
+#: models_treatments.py:129
+msgid "Target a basket"
+msgstr ""
+
+#: models_treatments.py:136 templates/ishtar/sheet_find.html:87
+#: templates/ishtar/sheet_treatmentfile.html:45
msgid "Treatments"
msgstr ""
-#: models.py:806
+#: models_treatments.py:139
msgid "Can view all Treatments"
msgstr ""
-#: models.py:807
+#: models_treatments.py:140
msgid "Can view own Treatment"
msgstr ""
-#: models.py:808
+#: models_treatments.py:141
msgid "Can add own Treatment"
msgstr ""
-#: models.py:809
+#: models_treatments.py:142
msgid "Can change own Treatment"
msgstr ""
-#: models.py:810
+#: models_treatments.py:143
msgid "Can delete own Treatment"
msgstr ""
-#: models.py:816
-msgid "by"
+#: models_treatments.py:155
+msgid "TREATMENT"
+msgstr ""
+
+#: models_treatments.py:280 templates/ishtar/sheet_find.html:100
+#: templates/ishtar/sheet_find.html:140
+msgid "Doer"
msgstr ""
-#: models.py:868 models.py:869 templates/ishtar/sheet_find.html:89
-#: templates/ishtar/sheet_find.html:118
+#: models_treatments.py:281 models_treatments.py:282
+#: templates/ishtar/sheet_find.html:99 templates/ishtar/sheet_find.html:139
msgid "Related finds"
msgstr ""
-#: models.py:978
+#: models_treatments.py:414
msgid "Is upstream"
msgstr ""
-#: models.py:989
-msgid "Treatment documentation"
+#: models_treatments.py:426
+msgid "Treatment request types"
msgstr ""
-#: models.py:990
-msgid "Treament documentations"
+#: models_treatments.py:443
+msgid "Internal reference"
msgstr ""
-#: models.py:1002
-msgid "Administrative act"
+#: models_treatments.py:452
+msgid "Person in charge"
msgstr ""
-#: models.py:1003
-msgid "Person"
+#: models_treatments.py:464
+msgid "Creation date"
msgstr ""
-#: models.py:1009
-msgid "Property"
+#: models_treatments.py:474
+msgid "Treatment requests"
msgstr ""
-#: models.py:1010
-msgid "Properties"
+#: models_treatments.py:478
+msgid "Can view all Treatment requests"
+msgstr ""
+
+#: models_treatments.py:480
+msgid "Can view own Treatment request"
+msgstr ""
+
+#: models_treatments.py:482
+msgid "Can add own Treatment request"
+msgstr ""
+
+#: models_treatments.py:484
+msgid "Can change own Treatment request"
+msgstr ""
+
+#: models_treatments.py:486
+msgid "Can delete own Treatment request"
+msgstr ""
+
+#: models_treatments.py:546
+msgid "Treatment documentation"
+msgstr ""
+
+#: models_treatments.py:547
+msgid "Treament documentations"
+msgstr ""
+
+#: models_treatments.py:563
+msgid "Treatment request documentation"
+msgstr ""
+
+#: models_treatments.py:564
+msgid "Treatment request documentations"
msgstr ""
-#: views.py:61
+#: views.py:124
msgid "New find"
msgstr ""
-#: views.py:75
+#: views.py:138
msgid "Find modification"
msgstr ""
-#: views.py:90
+#: views.py:153
msgid "Find deletion"
msgstr ""
-#: views.py:95
+#: views.py:158
msgid "Find: source search"
msgstr ""
-#: views.py:103
+#: views.py:166
msgid "Find: new source"
msgstr ""
-#: views.py:111
+#: views.py:174
msgid "Find: source modification"
msgstr ""
-#: views.py:126
+#: views.py:189
msgid "Find: source deletion"
msgstr ""
-#: views.py:140
+#: views.py:203
msgid "New basket"
msgstr ""
-#: views.py:159
+#: views.py:222
msgid "Manage items in basket"
msgstr ""
-#: views.py:179
+#: views.py:242
msgid "Manage basket"
msgstr ""
-#: views.py:267
+#: views.py:330
msgid "Delete basket"
msgstr ""
-#: views.py:303
+#: views.py:380
msgid "New treatment"
msgstr ""
-#: wizards.py:59
+#: views.py:388 views.py:480
+msgid "Modify"
+msgstr ""
+
+#: views.py:405
+msgid "Treatment deletion"
+msgstr ""
+
+#: views.py:412
+msgid "Treatment: search administrative act"
+msgstr ""
+
+#: views.py:421
+msgid "Treatment: new administrative act"
+msgstr ""
+
+#: views.py:431
+msgid "Treatment: administrative act modification"
+msgstr ""
+
+#: views.py:440
+msgid "Treatment: administrative act deletion"
+msgstr ""
+
+#: views.py:473
+msgid "New treatment request"
+msgstr ""
+
+#: views.py:496
+msgid "Treatment request deletion"
+msgstr ""
+
+#: views.py:503
+msgid "Treatment request: search administrative act"
+msgstr ""
+
+#: views.py:513
+msgid "Treatment request: new administrative act"
+msgstr ""
+
+#: views.py:523
+msgid "Treatment request: administrative act modification"
+msgstr ""
+
+#: views.py:532
+msgid "Treatment request: administrative act deletion"
+msgstr ""
+
+#: views.py:558
+msgid "Treatment: source search"
+msgstr ""
+
+#: views.py:573
+msgid "Treatment: source modification"
+msgstr ""
+
+#: views.py:588
+msgid "Treatment: source deletion"
+msgstr ""
+
+#: views.py:601
+msgid "Treatment request: source search"
+msgstr ""
+
+#: views.py:617
+msgid "Treatment request: source modification"
+msgstr ""
+
+#: views.py:635
+msgid "Treatment request: source deletion"
+msgstr ""
+
+#: wizards.py:63 wizards.py:195
msgid "Operation"
msgstr ""
-#: templates/ishtar/sheet_find.html:88 templates/ishtar/sheet_find.html:117
-#: templates/ishtar/sheet_find.html:187
-msgid "Type"
+#: templates/ishtar/sheet_find.html:79
+msgid "Warehouse"
+msgstr ""
+
+#: templates/ishtar/sheet_find.html:96 templates/ishtar/sheet_find.html:136
+msgid "Year - index"
msgstr ""
-#: templates/ishtar/sheet_find.html:108
+#: templates/ishtar/sheet_find.html:126
msgid "Export as CSV"
msgstr ""
-#: templates/ishtar/sheet_find.html:108 templates/ishtar/sheet_find.html:138
+#: templates/ishtar/sheet_find.html:126 templates/ishtar/sheet_find.html:167
msgid "CSV"
msgstr ""
-#: templates/ishtar/sheet_find.html:143
+#: templates/ishtar/sheet_find.html:172
msgid "Associated base finds"
msgstr ""
-#: templates/ishtar/sheet_find.html:182 templates/ishtar/sheet_find.html:184
-msgid "Documents"
-msgstr ""
-
-#: templates/ishtar/sheet_find.html:186
+#: templates/ishtar/sheet_find.html:215
msgid "Title"
msgstr ""
-#: templates/ishtar/sheet_find.html:188
+#: templates/ishtar/sheet_find.html:217
msgid "Authors"
msgstr ""
-#: templates/ishtar/sheet_find.html:189
+#: templates/ishtar/sheet_find.html:218
msgid "Link"
msgstr ""
@@ -762,3 +1145,35 @@ msgstr ""
#: templates/ishtar/sheet_findsource.html:4
msgid "Find source"
msgstr ""
+
+#: templates/ishtar/sheet_treatment.html:20
+msgctxt "Treatment"
+msgid "Closed"
+msgstr ""
+
+#: templates/ishtar/sheet_treatment.html:22
+msgctxt "Treatment"
+msgid "Active"
+msgstr ""
+
+#: templates/ishtar/sheet_treatment.html:47
+msgid "Downstream finds"
+msgstr ""
+
+#: templates/ishtar/sheet_treatmentfile.html:16
+msgctxt "Treatment request"
+msgid "Closed"
+msgstr ""
+
+#: templates/ishtar/sheet_treatmentfile.html:18
+msgctxt "Treatment request"
+msgid "Active"
+msgstr ""
+
+#: templates/ishtar/sheet_treatmentfilesource.html:4
+msgid "Treatment request source"
+msgstr ""
+
+#: templates/ishtar/sheet_treatmentsource.html:4
+msgid "Treatment source"
+msgstr ""
diff --git a/archaeological_finds/migrations/0001_initial.py b/archaeological_finds/migrations/0001_initial.py
index 4b23372c0..a34da2d69 100644
--- a/archaeological_finds/migrations/0001_initial.py
+++ b/archaeological_finds/migrations/0001_initial.py
@@ -7,6 +7,12 @@ from django.db import models
class Migration(SchemaMigration):
+ depends_on = (
+ ('archaeological_context_records', '0001_initial.py'),
+ ('archaeological_warehouse',
+ '0003_auto__add_warehousedivisionlink__add_unique_warehousedivisionlink_ware.py'),
+ )
+
def forwards(self, orm):
# Adding model 'MaterialType'
db.create_table('archaeological_finds_materialtype', (
@@ -1331,4 +1337,4 @@ class Migration(SchemaMigration):
}
}
- complete_apps = ['archaeological_finds'] \ No newline at end of file
+ complete_apps = ['archaeological_finds']
diff --git a/archaeological_finds/migrations/0013_auto__add_treatmentfilesource__add_treatmentfile__add_unique_treatment.py b/archaeological_finds/migrations/0013_auto__add_treatmentfilesource__add_treatmentfile__add_unique_treatment.py
new file mode 100644
index 000000000..fedb39be8
--- /dev/null
+++ b/archaeological_finds/migrations/0013_auto__add_treatmentfilesource__add_treatmentfile__add_unique_treatment.py
@@ -0,0 +1,1641 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'TreatmentFileSource'
+ db.create_table('archaeological_finds_treatmentfilesource', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('image', self.gf('django.db.models.fields.files.ImageField')(max_length=255, null=True, blank=True)),
+ ('thumbnail', self.gf('django.db.models.fields.files.ImageField')(max_length=255, null=True, blank=True)),
+ ('title', self.gf('django.db.models.fields.CharField')(max_length=300)),
+ ('external_id', self.gf('django.db.models.fields.CharField')(max_length=12, null=True, blank=True)),
+ ('source_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['ishtar_common.SourceType'])),
+ ('support_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['ishtar_common.SupportType'], null=True, blank=True)),
+ ('format_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['ishtar_common.Format'], null=True, blank=True)),
+ ('scale', self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True)),
+ ('associated_url', self.gf('django.db.models.fields.URLField')(max_length=200, null=True, blank=True)),
+ ('receipt_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+ ('creation_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+ ('receipt_date_in_documentation', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+ ('item_number', self.gf('django.db.models.fields.IntegerField')(default=1)),
+ ('reference', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
+ ('internal_reference', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
+ ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('additional_information', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('duplicate', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('treatment_file', self.gf('django.db.models.fields.related.ForeignKey')(related_name='source', to=orm['archaeological_finds.TreatmentFile'])),
+ ))
+ db.send_create_signal('archaeological_finds', ['TreatmentFileSource'])
+
+ # Adding M2M table for field authors on 'TreatmentFileSource'
+ db.create_table('archaeological_finds_treatmentfilesource_authors', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('treatmentfilesource', models.ForeignKey(orm['archaeological_finds.treatmentfilesource'], null=False)),
+ ('author', models.ForeignKey(orm['ishtar_common.author'], null=False))
+ ))
+ db.create_unique('archaeological_finds_treatmentfilesource_authors', ['treatmentfilesource_id', 'author_id'])
+
+ # Adding model 'TreatmentFile'
+ db.create_table('archaeological_finds_treatmentfile', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('history_modifier', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, on_delete=models.SET_NULL, to=orm['auth.User'])),
+ ('history_creator', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, on_delete=models.SET_NULL, to=orm['auth.User'])),
+ ('year', self.gf('django.db.models.fields.IntegerField')(default=2017)),
+ ('index', self.gf('django.db.models.fields.IntegerField')(default=1)),
+ ('internal_reference', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
+ ('external_id', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
+ ('name', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['archaeological_finds.TreatmentFileType'])),
+ ('in_charge', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='treatmentfile_responsability', null=True, on_delete=models.SET_NULL, to=orm['ishtar_common.Person'])),
+ ('applicant', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='treatmentfile_applicant', null=True, on_delete=models.SET_NULL, to=orm['ishtar_common.Person'])),
+ ('applicant_organisation', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='treatmentfile_applicant', null=True, on_delete=models.SET_NULL, to=orm['ishtar_common.Organization'])),
+ ('end_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+ ('creation_date', self.gf('django.db.models.fields.DateField')(default=datetime.date.today, null=True, blank=True)),
+ ('reception_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+ ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('cached_label', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ))
+ db.send_create_signal('archaeological_finds', ['TreatmentFile'])
+
+ # Adding M2M table for field imports on 'TreatmentFile'
+ db.create_table('archaeological_finds_treatmentfile_imports', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('treatmentfile', models.ForeignKey(orm['archaeological_finds.treatmentfile'], null=False)),
+ ('import', models.ForeignKey(orm['ishtar_common.import'], null=False))
+ ))
+ db.create_unique('archaeological_finds_treatmentfile_imports', ['treatmentfile_id', 'import_id'])
+
+ # Adding unique constraint on 'TreatmentFile', fields ['year', 'index']
+ db.create_unique('archaeological_finds_treatmentfile', ['year', 'index'])
+
+ # Adding model 'HistoricalTreatmentFile'
+ db.create_table('archaeological_finds_historicaltreatmentfile', (
+ ('id', self.gf('django.db.models.fields.IntegerField')(db_index=True, blank=True)),
+ ('history_modifier_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)),
+ ('history_creator_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)),
+ ('year', self.gf('django.db.models.fields.IntegerField')(default=2017)),
+ ('index', self.gf('django.db.models.fields.IntegerField')(default=1)),
+ ('internal_reference', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
+ ('external_id', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
+ ('name', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('type_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)),
+ ('in_charge_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)),
+ ('applicant_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)),
+ ('applicant_organisation_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)),
+ ('end_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+ ('creation_date', self.gf('django.db.models.fields.DateField')(default=datetime.date.today, null=True, blank=True)),
+ ('reception_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+ ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('cached_label', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('history_id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('history_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+ ('history_user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True)),
+ ('history_type', self.gf('django.db.models.fields.CharField')(max_length=1)),
+ ))
+ db.send_create_signal('archaeological_finds', ['HistoricalTreatmentFile'])
+
+ # Adding model 'TreatmentState'
+ db.create_table('archaeological_finds_treatmentstate', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('label', self.gf('django.db.models.fields.CharField')(max_length=100)),
+ ('txt_idx', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)),
+ ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('available', self.gf('django.db.models.fields.BooleanField')(default=True)),
+ ))
+ db.send_create_signal('archaeological_finds', ['TreatmentState'])
+
+ # Adding model 'TreatmentFileType'
+ db.create_table('archaeological_finds_treatmentfiletype', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('label', self.gf('django.db.models.fields.CharField')(max_length=100)),
+ ('txt_idx', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)),
+ ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('available', self.gf('django.db.models.fields.BooleanField')(default=True)),
+ ))
+ db.send_create_signal('archaeological_finds', ['TreatmentFileType'])
+
+ # Adding field 'HistoricalFind.min_number_of_individuals'
+ db.add_column('archaeological_finds_historicalfind', 'min_number_of_individuals',
+ self.gf('django.db.models.fields.IntegerField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalFind.thickness'
+ db.add_column('archaeological_finds_historicalfind', 'thickness',
+ self.gf('django.db.models.fields.FloatField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalFind.topographic_reference_point'
+ db.add_column('archaeological_finds_historicalfind', 'topographic_reference_point',
+ self.gf('django.db.models.fields.CharField')(max_length=20, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalFind.collection_id'
+ db.add_column('archaeological_finds_historicalfind', 'collection_id',
+ self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'TreatmentType.order'
+ db.add_column('archaeological_finds_treatmenttype', 'order',
+ self.gf('django.db.models.fields.IntegerField')(default=10),
+ keep_default=False)
+
+ # Adding field 'TreatmentType.parent'
+ db.add_column('archaeological_finds_treatmenttype', 'parent',
+ self.gf('django.db.models.fields.related.ForeignKey')(to=orm['archaeological_finds.TreatmentType'], null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Find.min_number_of_individuals'
+ db.add_column('archaeological_finds_find', 'min_number_of_individuals',
+ self.gf('django.db.models.fields.IntegerField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Find.thickness'
+ db.add_column('archaeological_finds_find', 'thickness',
+ self.gf('django.db.models.fields.FloatField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Find.topographic_reference_point'
+ db.add_column('archaeological_finds_find', 'topographic_reference_point',
+ self.gf('django.db.models.fields.CharField')(max_length=20, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Find.collection'
+ db.add_column('archaeological_finds_find', 'collection',
+ self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='finds', null=True, on_delete=models.SET_NULL, to=orm['archaeological_warehouse.Collection']),
+ keep_default=False)
+
+
+ # Changing field 'Find.upstream_treatment'
+ db.alter_column('archaeological_finds_find', 'upstream_treatment_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['archaeological_finds.Treatment']))
+
+ # Changing field 'Find.downstream_treatment'
+ db.alter_column('archaeological_finds_find', 'downstream_treatment_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['archaeological_finds.Treatment']))
+
+ # Changing field 'Find.conservatory_state'
+ db.alter_column('archaeological_finds_find', 'conservatory_state_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['archaeological_finds.ConservatoryState'], null=True, on_delete=models.SET_NULL))
+
+ # Changing field 'Find.container'
+ db.alter_column('archaeological_finds_find', 'container_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['archaeological_warehouse.Container']))
+ # Deleting field 'HistoricalTreatment.treatment_type_id'
+ db.delete_column('archaeological_finds_historicaltreatment', 'treatment_type_id')
+
+ # Deleting field 'HistoricalTreatment.other_location'
+ db.delete_column('archaeological_finds_historicaltreatment', 'other_location')
+
+ # Adding field 'HistoricalTreatment.image'
+ db.add_column('archaeological_finds_historicaltreatment', 'image',
+ self.gf('django.db.models.fields.files.ImageField')(max_length=255, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.thumbnail'
+ db.add_column('archaeological_finds_historicaltreatment', 'thumbnail',
+ self.gf('django.db.models.fields.files.ImageField')(max_length=255, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.label'
+ db.add_column('archaeological_finds_historicaltreatment', 'label',
+ self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.other_reference'
+ db.add_column('archaeological_finds_historicaltreatment', 'other_reference',
+ self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.year'
+ db.add_column('archaeological_finds_historicaltreatment', 'year',
+ self.gf('django.db.models.fields.IntegerField')(default=2017),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.index'
+ db.add_column('archaeological_finds_historicaltreatment', 'index',
+ self.gf('django.db.models.fields.IntegerField')(default=1),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.file_id'
+ db.add_column('archaeological_finds_historicaltreatment', 'file_id',
+ self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.treatment_state_id'
+ db.add_column('archaeological_finds_historicaltreatment', 'treatment_state_id',
+ self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.organization_id'
+ db.add_column('archaeological_finds_historicaltreatment', 'organization_id',
+ self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.goal'
+ db.add_column('archaeological_finds_historicaltreatment', 'goal',
+ self.gf('django.db.models.fields.TextField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.target_is_basket'
+ db.add_column('archaeological_finds_historicaltreatment', 'target_is_basket',
+ self.gf('django.db.models.fields.BooleanField')(default=False),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.cached_label'
+ db.add_column('archaeological_finds_historicaltreatment', 'cached_label',
+ self.gf('django.db.models.fields.TextField')(null=True, blank=True),
+ keep_default=False)
+
+
+ # Changing field 'HistoricalTreatment.external_id'
+ db.alter_column('archaeological_finds_historicaltreatment', 'external_id', self.gf('django.db.models.fields.CharField')(max_length=200, null=True))
+ # Deleting field 'Treatment.treatment_type'
+ db.delete_column('archaeological_finds_treatment', 'treatment_type_id')
+
+ # Deleting field 'Treatment.other_location'
+ db.delete_column('archaeological_finds_treatment', 'other_location')
+
+ # Adding field 'Treatment.image'
+ db.add_column('archaeological_finds_treatment', 'image',
+ self.gf('django.db.models.fields.files.ImageField')(max_length=255, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Treatment.thumbnail'
+ db.add_column('archaeological_finds_treatment', 'thumbnail',
+ self.gf('django.db.models.fields.files.ImageField')(max_length=255, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Treatment.label'
+ db.add_column('archaeological_finds_treatment', 'label',
+ self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Treatment.other_reference'
+ db.add_column('archaeological_finds_treatment', 'other_reference',
+ self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Treatment.year'
+ db.add_column('archaeological_finds_treatment', 'year',
+ self.gf('django.db.models.fields.IntegerField')(default=2017),
+ keep_default=False)
+
+ # Adding field 'Treatment.index'
+ db.add_column('archaeological_finds_treatment', 'index',
+ self.gf('django.db.models.fields.IntegerField')(default=1),
+ keep_default=False)
+
+ # Adding field 'Treatment.file'
+ db.add_column('archaeological_finds_treatment', 'file',
+ self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='treatments', null=True, to=orm['archaeological_finds.TreatmentFile']),
+ keep_default=False)
+
+ # Adding field 'Treatment.treatment_state'
+ db.add_column('archaeological_finds_treatment', 'treatment_state',
+ self.gf('django.db.models.fields.related.ForeignKey')(to=orm['archaeological_finds.TreatmentState'], null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Treatment.organization'
+ db.add_column('archaeological_finds_treatment', 'organization',
+ self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='treatments', null=True, on_delete=models.SET_NULL, to=orm['ishtar_common.Organization']),
+ keep_default=False)
+
+ # Adding field 'Treatment.goal'
+ db.add_column('archaeological_finds_treatment', 'goal',
+ self.gf('django.db.models.fields.TextField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Treatment.target_is_basket'
+ db.add_column('archaeological_finds_treatment', 'target_is_basket',
+ self.gf('django.db.models.fields.BooleanField')(default=False),
+ keep_default=False)
+
+ # Adding field 'Treatment.cached_label'
+ db.add_column('archaeological_finds_treatment', 'cached_label',
+ self.gf('django.db.models.fields.TextField')(null=True, blank=True),
+ keep_default=False)
+
+ # Adding M2M table for field treatment_types on 'Treatment'
+ db.create_table('archaeological_finds_treatment_treatment_types', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('treatment', models.ForeignKey(orm['archaeological_finds.treatment'], null=False)),
+ ('treatmenttype', models.ForeignKey(orm['archaeological_finds.treatmenttype'], null=False))
+ ))
+ db.create_unique('archaeological_finds_treatment_treatment_types', ['treatment_id', 'treatmenttype_id'])
+
+
+ # Changing field 'Treatment.external_id'
+ db.alter_column('archaeological_finds_treatment', 'external_id', self.gf('django.db.models.fields.CharField')(max_length=200, null=True))
+
+ def backwards(self, orm):
+ # Removing unique constraint on 'TreatmentFile', fields ['year', 'index']
+ db.delete_unique('archaeological_finds_treatmentfile', ['year', 'index'])
+
+ # Deleting model 'TreatmentFileSource'
+ db.delete_table('archaeological_finds_treatmentfilesource')
+
+ # Removing M2M table for field authors on 'TreatmentFileSource'
+ db.delete_table('archaeological_finds_treatmentfilesource_authors')
+
+ # Deleting model 'TreatmentFile'
+ db.delete_table('archaeological_finds_treatmentfile')
+
+ # Removing M2M table for field imports on 'TreatmentFile'
+ db.delete_table('archaeological_finds_treatmentfile_imports')
+
+ # Deleting model 'HistoricalTreatmentFile'
+ db.delete_table('archaeological_finds_historicaltreatmentfile')
+
+ # Deleting model 'TreatmentState'
+ db.delete_table('archaeological_finds_treatmentstate')
+
+ # Deleting model 'TreatmentFileType'
+ db.delete_table('archaeological_finds_treatmentfiletype')
+
+ # Deleting field 'HistoricalFind.min_number_of_individuals'
+ db.delete_column('archaeological_finds_historicalfind', 'min_number_of_individuals')
+
+ # Deleting field 'HistoricalFind.thickness'
+ db.delete_column('archaeological_finds_historicalfind', 'thickness')
+
+ # Deleting field 'HistoricalFind.topographic_reference_point'
+ db.delete_column('archaeological_finds_historicalfind', 'topographic_reference_point')
+
+ # Deleting field 'HistoricalFind.collection_id'
+ db.delete_column('archaeological_finds_historicalfind', 'collection_id')
+
+ # Deleting field 'TreatmentType.order'
+ db.delete_column('archaeological_finds_treatmenttype', 'order')
+
+ # Deleting field 'TreatmentType.parent'
+ db.delete_column('archaeological_finds_treatmenttype', 'parent_id')
+
+ # Deleting field 'Find.min_number_of_individuals'
+ db.delete_column('archaeological_finds_find', 'min_number_of_individuals')
+
+ # Deleting field 'Find.thickness'
+ db.delete_column('archaeological_finds_find', 'thickness')
+
+ # Deleting field 'Find.topographic_reference_point'
+ db.delete_column('archaeological_finds_find', 'topographic_reference_point')
+
+ # Deleting field 'Find.collection'
+ db.delete_column('archaeological_finds_find', 'collection_id')
+
+
+ # Changing field 'Find.upstream_treatment'
+ db.alter_column('archaeological_finds_find', 'upstream_treatment_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['archaeological_finds.Treatment']))
+
+ # Changing field 'Find.downstream_treatment'
+ db.alter_column('archaeological_finds_find', 'downstream_treatment_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['archaeological_finds.Treatment']))
+
+ # Changing field 'Find.conservatory_state'
+ db.alter_column('archaeological_finds_find', 'conservatory_state_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['archaeological_finds.ConservatoryState'], null=True))
+
+ # Changing field 'Find.container'
+ db.alter_column('archaeological_finds_find', 'container_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['archaeological_warehouse.Container']))
+ # Adding field 'HistoricalTreatment.treatment_type_id'
+ db.add_column('archaeological_finds_historicaltreatment', 'treatment_type_id',
+ self.gf('django.db.models.fields.IntegerField')(blank=True, null=True, db_index=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalTreatment.other_location'
+ db.add_column('archaeological_finds_historicaltreatment', 'other_location',
+ self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
+ keep_default=False)
+
+ # Deleting field 'HistoricalTreatment.image'
+ db.delete_column('archaeological_finds_historicaltreatment', 'image')
+
+ # Deleting field 'HistoricalTreatment.thumbnail'
+ db.delete_column('archaeological_finds_historicaltreatment', 'thumbnail')
+
+ # Deleting field 'HistoricalTreatment.label'
+ db.delete_column('archaeological_finds_historicaltreatment', 'label')
+
+ # Deleting field 'HistoricalTreatment.other_reference'
+ db.delete_column('archaeological_finds_historicaltreatment', 'other_reference')
+
+ # Deleting field 'HistoricalTreatment.year'
+ db.delete_column('archaeological_finds_historicaltreatment', 'year')
+
+ # Deleting field 'HistoricalTreatment.index'
+ db.delete_column('archaeological_finds_historicaltreatment', 'index')
+
+ # Deleting field 'HistoricalTreatment.file_id'
+ db.delete_column('archaeological_finds_historicaltreatment', 'file_id')
+
+ # Deleting field 'HistoricalTreatment.treatment_state_id'
+ db.delete_column('archaeological_finds_historicaltreatment', 'treatment_state_id')
+
+ # Deleting field 'HistoricalTreatment.organization_id'
+ db.delete_column('archaeological_finds_historicaltreatment', 'organization_id')
+
+ # Deleting field 'HistoricalTreatment.goal'
+ db.delete_column('archaeological_finds_historicaltreatment', 'goal')
+
+ # Deleting field 'HistoricalTreatment.target_is_basket'
+ db.delete_column('archaeological_finds_historicaltreatment', 'target_is_basket')
+
+ # Deleting field 'HistoricalTreatment.cached_label'
+ db.delete_column('archaeological_finds_historicaltreatment', 'cached_label')
+
+
+ # Changing field 'HistoricalTreatment.external_id'
+ db.alter_column('archaeological_finds_historicaltreatment', 'external_id', self.gf('django.db.models.fields.CharField')(max_length=120, null=True))
+
+ # User chose to not deal with backwards NULL issues for 'Treatment.treatment_type'
+ raise RuntimeError("Cannot reverse this migration. 'Treatment.treatment_type' and its values cannot be restored.")
+ # Adding field 'Treatment.other_location'
+ db.add_column('archaeological_finds_treatment', 'other_location',
+ self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
+ keep_default=False)
+
+ # Deleting field 'Treatment.image'
+ db.delete_column('archaeological_finds_treatment', 'image')
+
+ # Deleting field 'Treatment.thumbnail'
+ db.delete_column('archaeological_finds_treatment', 'thumbnail')
+
+ # Deleting field 'Treatment.label'
+ db.delete_column('archaeological_finds_treatment', 'label')
+
+ # Deleting field 'Treatment.other_reference'
+ db.delete_column('archaeological_finds_treatment', 'other_reference')
+
+ # Deleting field 'Treatment.year'
+ db.delete_column('archaeological_finds_treatment', 'year')
+
+ # Deleting field 'Treatment.index'
+ db.delete_column('archaeological_finds_treatment', 'index')
+
+ # Deleting field 'Treatment.file'
+ db.delete_column('archaeological_finds_treatment', 'file_id')
+
+ # Deleting field 'Treatment.treatment_state'
+ db.delete_column('archaeological_finds_treatment', 'treatment_state_id')
+
+ # Deleting field 'Treatment.organization'
+ db.delete_column('archaeological_finds_treatment', 'organization_id')
+
+ # Deleting field 'Treatment.goal'
+ db.delete_column('archaeological_finds_treatment', 'goal')
+
+ # Deleting field 'Treatment.target_is_basket'
+ db.delete_column('archaeological_finds_treatment', 'target_is_basket')
+
+ # Deleting field 'Treatment.cached_label'
+ db.delete_column('archaeological_finds_treatment', 'cached_label')
+
+ # Removing M2M table for field treatment_types on 'Treatment'
+ db.delete_table('archaeological_finds_treatment_treatment_types')
+
+
+ # Changing field 'Treatment.external_id'
+ db.alter_column('archaeological_finds_treatment', 'external_id', self.gf('django.db.models.fields.CharField')(max_length=120, null=True))
+
+ 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': '255', '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': '255', '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': '2017'})
+ },
+ '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'}),
+ 'collection': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['archaeological_warehouse.Collection']"}),
+ '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', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
+ 'container': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'on_delete': 'models.SET_NULL', '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', 'on_delete': 'models.SET_NULL', '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': '255', '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']"}),
+ 'min_number_of_individuals': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ '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']"}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'topographic_reference_point': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'upstream_treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'downstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', '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': '255', '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': '255', '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'}),
+ 'collection_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ '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': '255', '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'}),
+ 'min_number_of_individuals': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'previous_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'topographic_reference_point': ('django.db.models.fields.CharField', [], {'max_length': '20', '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'},
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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': '200', 'null': 'True', 'blank': 'True'}),
+ 'file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'goal': ('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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'location_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'organization_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'other_reference': ('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'}),
+ 'target_is_basket': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'treatment_state_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.historicaltreatmentfile': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalTreatmentFile'},
+ 'applicant_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'applicant_organisation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '200', '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', [], {'default': '1'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ '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'},
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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': '200', 'null': 'True', 'blank': 'True'}),
+ 'file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'to': "orm['archaeological_finds.TreatmentFile']"}),
+ 'goal': ('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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']", 'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'other_reference': ('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'}),
+ 'target_is_basket': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'treatment_state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentState']", 'null': 'True', 'blank': 'True'}),
+ 'treatment_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_finds.TreatmentType']", 'symmetrical': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.treatmentfile': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('year', 'index'),)", 'object_name': 'TreatmentFile'},
+ 'applicant': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_applicant'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'applicant_organisation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_applicant'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '200', '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_treatmentfile'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentFileType']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.treatmentfilesource': {
+ 'Meta': {'object_name': 'TreatmentFileSource'},
+ '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': "'treatmentfilesource_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': '255', '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': '255', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'treatment_file': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_finds.TreatmentFile']"})
+ },
+ 'archaeological_finds.treatmentfiletype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentFileType'},
+ '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.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': '255', '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': '255', '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.treatmentstate': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentState'},
+ '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.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'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentType']", 'null': 'True', 'blank': 'True'}),
+ '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': '2'}),
+ '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'}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}),
+ 'treatment_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_finds.TreatmentFile']"}),
+ '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': '255', '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'}),
+ 'scientific_documentation_comment': ('django.db.models.fields.TextField', [], {'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': '255', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operations'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ '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.collection': {
+ 'Meta': {'ordering': "('name',)", 'object_name': 'Collection'},
+ 'description': ('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_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_collection'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'collections'", 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ 'archaeological_warehouse.container': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('index', 'location'),)", 'object_name': 'Container'},
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cached_location': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'containers'", 'to': "orm['archaeological_warehouse.Warehouse']"}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'responsible': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_containers'", 'null': 'True', 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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'}),
+ 'associated_divisions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']", 'symmetrical': 'False', 'through': "orm['archaeological_warehouse.WarehouseDivisionLink']", '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': '200'}),
+ '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.warehousedivision': {
+ 'Meta': {'object_name': 'WarehouseDivision'},
+ '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_warehouse.warehousedivisionlink': {
+ 'Meta': {'ordering': "('warehouse', 'order')", 'unique_together': "(('warehouse', 'division'),)", 'object_name': 'WarehouseDivisionLink'},
+ 'division': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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']},
+ 'advanced_shortcut_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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/0014_treats_generate_year_index.py b/archaeological_finds/migrations/0014_treats_generate_year_index.py
new file mode 100644
index 000000000..399a27c90
--- /dev/null
+++ b/archaeological_finds/migrations/0014_treats_generate_year_index.py
@@ -0,0 +1,1163 @@
+# -*- 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 idx, t in enumerate(orm["archaeological_finds.treatment"].objects.all()):
+ year = 2016
+ if t.start_date:
+ year = t.start_date.year
+ t.index = idx + 1
+ t.year = year
+ t.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': '255', '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': '255', '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': '2017'})
+ },
+ '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'}),
+ 'collection': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['archaeological_warehouse.Collection']"}),
+ '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', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
+ 'container': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'on_delete': 'models.SET_NULL', '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', 'on_delete': 'models.SET_NULL', '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': '255', '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']"}),
+ 'min_number_of_individuals': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ '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']"}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'topographic_reference_point': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'upstream_treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'downstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', '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': '255', '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': '255', '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'}),
+ 'collection_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ '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': '255', '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'}),
+ 'min_number_of_individuals': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'previous_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'topographic_reference_point': ('django.db.models.fields.CharField', [], {'max_length': '20', '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'},
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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': '200', 'null': 'True', 'blank': 'True'}),
+ 'file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'goal': ('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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'location_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'organization_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'other_reference': ('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'}),
+ 'target_is_basket': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'treatment_state_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.historicaltreatmentfile': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalTreatmentFile'},
+ 'applicant_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'applicant_organisation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '200', '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', [], {'default': '1'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ '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'},
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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': '200', 'null': 'True', 'blank': 'True'}),
+ 'file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'to': "orm['archaeological_finds.TreatmentFile']"}),
+ 'goal': ('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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']", 'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'other_reference': ('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'}),
+ 'target_is_basket': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'treatment_state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentState']", 'null': 'True', 'blank': 'True'}),
+ 'treatment_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_finds.TreatmentType']", 'symmetrical': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.treatmentfile': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('year', 'index'),)", 'object_name': 'TreatmentFile'},
+ 'applicant': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_applicant'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'applicant_organisation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_applicant'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '200', '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_treatmentfile'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentFileType']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.treatmentfilesource': {
+ 'Meta': {'object_name': 'TreatmentFileSource'},
+ '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': "'treatmentfilesource_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': '255', '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': '255', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'treatment_file': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_finds.TreatmentFile']"})
+ },
+ 'archaeological_finds.treatmentfiletype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentFileType'},
+ '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.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': '255', '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': '255', '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.treatmentstate': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentState'},
+ '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.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'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentType']", 'null': 'True', 'blank': 'True'}),
+ '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': '2'}),
+ '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'}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}),
+ 'treatment_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_finds.TreatmentFile']"}),
+ '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': '255', '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'}),
+ 'scientific_documentation_comment': ('django.db.models.fields.TextField', [], {'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': '255', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operations'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ '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.collection': {
+ 'Meta': {'ordering': "('name',)", 'object_name': 'Collection'},
+ 'description': ('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_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_collection'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'collections'", 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ 'archaeological_warehouse.container': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('index', 'location'),)", 'object_name': 'Container'},
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cached_location': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'containers'", 'to': "orm['archaeological_warehouse.Warehouse']"}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'responsible': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_containers'", 'null': 'True', 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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'}),
+ 'associated_divisions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']", 'symmetrical': 'False', 'through': "orm['archaeological_warehouse.WarehouseDivisionLink']", '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': '200'}),
+ '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.warehousedivision': {
+ 'Meta': {'object_name': 'WarehouseDivision'},
+ '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_warehouse.warehousedivisionlink': {
+ 'Meta': {'ordering': "('warehouse', 'order')", 'unique_together': "(('warehouse', 'division'),)", 'object_name': 'WarehouseDivisionLink'},
+ 'division': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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']},
+ 'advanced_shortcut_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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/0015_auto__add_unique_treatment_index_year.py b/archaeological_finds/migrations/0015_auto__add_unique_treatment_index_year.py
new file mode 100644
index 000000000..0e3843b43
--- /dev/null
+++ b/archaeological_finds/migrations/0015_auto__add_unique_treatment_index_year.py
@@ -0,0 +1,1161 @@
+# -*- 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 unique constraint on 'Treatment', fields ['index', 'year']
+ db.create_unique('archaeological_finds_treatment', ['index', 'year'])
+
+
+ def backwards(self, orm):
+ # Removing unique constraint on 'Treatment', fields ['index', 'year']
+ db.delete_unique('archaeological_finds_treatment', ['index', 'year'])
+
+
+ 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': '255', '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': '255', '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': '2017'})
+ },
+ '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'}),
+ 'collection': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['archaeological_warehouse.Collection']"}),
+ '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', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
+ 'container': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'on_delete': 'models.SET_NULL', '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', 'on_delete': 'models.SET_NULL', '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': '255', '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']"}),
+ 'min_number_of_individuals': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ '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']"}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'topographic_reference_point': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'upstream_treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'downstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', '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': '255', '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': '255', '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'}),
+ 'collection_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ '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': '255', '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'}),
+ 'min_number_of_individuals': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'previous_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'topographic_reference_point': ('django.db.models.fields.CharField', [], {'max_length': '20', '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'},
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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': '200', 'null': 'True', 'blank': 'True'}),
+ 'file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'goal': ('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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'location_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'organization_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'other_reference': ('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'}),
+ 'target_is_basket': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'treatment_state_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.historicaltreatmentfile': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalTreatmentFile'},
+ 'applicant_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'applicant_organisation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '200', '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', [], {'default': '1'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ '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': {'unique_together': "(('year', 'index'),)", 'object_name': 'Treatment'},
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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': '200', 'null': 'True', 'blank': 'True'}),
+ 'file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'to': "orm['archaeological_finds.TreatmentFile']"}),
+ 'goal': ('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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']", 'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'other_reference': ('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'}),
+ 'target_is_basket': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'treatment_state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentState']", 'null': 'True', 'blank': 'True'}),
+ 'treatment_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_finds.TreatmentType']", 'symmetrical': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.treatmentfile': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('year', 'index'),)", 'object_name': 'TreatmentFile'},
+ 'applicant': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_applicant'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'applicant_organisation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_applicant'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '200', '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_treatmentfile'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentFileType']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.treatmentfilesource': {
+ 'Meta': {'object_name': 'TreatmentFileSource'},
+ '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': "'treatmentfilesource_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': '255', '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': '255', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'treatment_file': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_finds.TreatmentFile']"})
+ },
+ 'archaeological_finds.treatmentfiletype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentFileType'},
+ '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.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': '255', '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': '255', '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.treatmentstate': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentState'},
+ '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.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'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentType']", 'null': 'True', 'blank': 'True'}),
+ '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': '2'}),
+ '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'}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}),
+ 'treatment_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_finds.TreatmentFile']"}),
+ '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': '255', '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'}),
+ 'scientific_documentation_comment': ('django.db.models.fields.TextField', [], {'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': '255', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operations'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ '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.collection': {
+ 'Meta': {'ordering': "('name',)", 'object_name': 'Collection'},
+ 'description': ('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_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_collection'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'collections'", 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ 'archaeological_warehouse.container': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('index', 'location'),)", 'object_name': 'Container'},
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cached_location': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'containers'", 'to': "orm['archaeological_warehouse.Warehouse']"}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'responsible': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_containers'", 'null': 'True', 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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'}),
+ 'associated_divisions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']", 'symmetrical': 'False', 'through': "orm['archaeological_warehouse.WarehouseDivisionLink']", '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': '200'}),
+ '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.warehousedivision': {
+ 'Meta': {'object_name': 'WarehouseDivision'},
+ '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_warehouse.warehousedivisionlink': {
+ 'Meta': {'ordering': "('warehouse', 'order')", 'unique_together': "(('warehouse', 'division'),)", 'object_name': 'WarehouseDivisionLink'},
+ 'division': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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']},
+ 'advanced_shortcut_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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/0016_on_delete_for_views.py b/archaeological_finds/migrations/0016_on_delete_for_views.py
new file mode 100644
index 000000000..2a56a7738
--- /dev/null
+++ b/archaeological_finds/migrations/0016_on_delete_for_views.py
@@ -0,0 +1,1166 @@
+# -*- 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):
+ sql = """
+ CREATE RULE find_uptreatments_del AS ON DELETE TO find_uptreatments
+ DO INSTEAD DELETE FROM archaeological_finds_find where id=NULL;
+
+ CREATE RULE find_downtreatments_del AS ON DELETE TO find_downtreatments
+ DO INSTEAD DELETE FROM archaeological_finds_find where id=NULL;
+ CREATE RULE find_treatments_del AS ON DELETE TO find_treatments
+ DO INSTEAD DELETE FROM archaeological_finds_find where id=NULL;
+ """
+ db.execute(sql)
+
+ 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': '255', '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': '255', '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': '2017'})
+ },
+ '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'}),
+ 'collection': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['archaeological_warehouse.Collection']"}),
+ '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', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
+ 'container': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'on_delete': 'models.SET_NULL', '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', 'on_delete': 'models.SET_NULL', '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': '255', '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']"}),
+ 'min_number_of_individuals': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ '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']"}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'topographic_reference_point': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
+ 'upstream_treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'downstream'", 'null': 'True', 'on_delete': 'models.SET_NULL', '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': '255', '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': '255', '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'}),
+ 'collection_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ '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': '255', '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'}),
+ 'min_number_of_individuals': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'previous_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'thickness': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'topographic_reference_point': ('django.db.models.fields.CharField', [], {'max_length': '20', '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'},
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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': '200', 'null': 'True', 'blank': 'True'}),
+ 'file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'goal': ('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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'location_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'organization_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'other_reference': ('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'}),
+ 'target_is_basket': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'treatment_state_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.historicaltreatmentfile': {
+ 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalTreatmentFile'},
+ 'applicant_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'applicant_organisation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '200', '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', [], {'default': '1'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ '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': {'unique_together': "(('year', 'index'),)", 'object_name': 'Treatment'},
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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': '200', 'null': 'True', 'blank': 'True'}),
+ 'file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'to': "orm['archaeological_finds.TreatmentFile']"}),
+ 'goal': ('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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']", 'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'other_reference': ('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'}),
+ 'target_is_basket': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'treatment_state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentState']", 'null': 'True', 'blank': 'True'}),
+ 'treatment_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_finds.TreatmentType']", 'symmetrical': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.treatmentfile': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('year', 'index'),)", 'object_name': 'TreatmentFile'},
+ 'applicant': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_applicant'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'applicant_organisation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_applicant'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '200', '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_treatmentfile'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentFileType']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.treatmentfilesource': {
+ 'Meta': {'object_name': 'TreatmentFileSource'},
+ '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': "'treatmentfilesource_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': '255', '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': '255', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
+ 'treatment_file': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_finds.TreatmentFile']"})
+ },
+ 'archaeological_finds.treatmentfiletype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentFileType'},
+ '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.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': '255', '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': '255', '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.treatmentstate': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentState'},
+ '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.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'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentType']", 'null': 'True', 'blank': 'True'}),
+ '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': '2'}),
+ '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'}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}),
+ 'treatment_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_finds.TreatmentFile']"}),
+ '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': '255', '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'}),
+ 'scientific_documentation_comment': ('django.db.models.fields.TextField', [], {'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': '255', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operations'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ '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.collection': {
+ 'Meta': {'ordering': "('name',)", 'object_name': 'Collection'},
+ 'description': ('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_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_collection'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'collections'", 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ 'archaeological_warehouse.container': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('index', 'location'),)", 'object_name': 'Container'},
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cached_location': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'containers'", 'to': "orm['archaeological_warehouse.Warehouse']"}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'responsible': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_containers'", 'null': 'True', 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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'}),
+ 'associated_divisions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']", 'symmetrical': 'False', 'through': "orm['archaeological_warehouse.WarehouseDivisionLink']", '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': '200'}),
+ '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.warehousedivision': {
+ 'Meta': {'object_name': 'WarehouseDivision'},
+ '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_warehouse.warehousedivisionlink': {
+ 'Meta': {'ordering': "('warehouse', 'order')", 'unique_together': "(('warehouse', 'division'),)", 'object_name': 'WarehouseDivisionLink'},
+ 'division': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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']},
+ 'advanced_shortcut_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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/models.py b/archaeological_finds/models.py
index aa5eacc30..50c42ef30 100644
--- a/archaeological_finds/models.py
+++ b/archaeological_finds/models.py
@@ -1,1017 +1,16 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# Copyright (C) 2012-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# See the file COPYING for details.
-
-import datetime
-
-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, post_save, post_delete
-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, post_save_cache
-
-from archaeological_operations.models import AdministrativeAct
-from archaeological_context_records.models import ContextRecord, Dating
-
-from ishtar_common.models import PRIVATE_FIELDS
-from archaeological_warehouse.models import Warehouse, Container
-
-
-class MaterialType(GeneralType):
- code = models.CharField(_(u"Code"), max_length=10, blank=True, null=True)
- recommendation = models.TextField(_(u"Recommendation"), blank=True,
- null=True)
- parent = models.ForeignKey("MaterialType", blank=True, null=True,
- verbose_name=_(u"Parent material"))
-
- class Meta:
- verbose_name = _(u"Material type")
- verbose_name_plural = _(u"Material types")
- ordering = ('label',)
-post_save.connect(post_save_cache, sender=MaterialType)
-post_delete.connect(post_save_cache, sender=MaterialType)
-
-
-class ConservatoryState(GeneralType):
- parent = models.ForeignKey("ConservatoryState", blank=True, null=True,
- verbose_name=_(u"Parent conservatory state"))
-
- class Meta:
- verbose_name = _(u"Conservatory state")
- verbose_name_plural = _(u"Conservatory states")
- ordering = ('label',)
-post_save.connect(post_save_cache, sender=ConservatoryState)
-post_delete.connect(post_save_cache, sender=ConservatoryState)
-
-
-class PreservationType(GeneralType):
- class Meta:
- verbose_name = _(u"Preservation type")
- verbose_name_plural = _(u"Preservation types")
- ordering = ('label',)
-post_save.connect(post_save_cache, sender=PreservationType)
-post_delete.connect(post_save_cache, sender=PreservationType)
-
-
-class IntegrityType(GeneralType):
- class Meta:
- verbose_name = _(u"Integrity / interest type")
- verbose_name_plural = _(u"Integrity / interest types")
- ordering = ('label',)
-post_save.connect(post_save_cache, sender=IntegrityType)
-post_delete.connect(post_save_cache, sender=IntegrityType)
-
-
-class RemarkabilityType(GeneralType):
- class Meta:
- verbose_name = _(u"Remarkability type")
- verbose_name_plural = _(u"Remarkability types")
- ordering = ('label',)
-post_save.connect(post_save_cache, sender=RemarkabilityType)
-post_delete.connect(post_save_cache, sender=RemarkabilityType)
-
-
-class ObjectType(GeneralType):
- parent = models.ForeignKey("ObjectType", blank=True, null=True,
- verbose_name=_(u"Parent"))
-
- class Meta:
- verbose_name = _(u"Object type")
- verbose_name_plural = _(u"Object types")
- ordering = ('parent__label', 'label',)
-
- def full_label(self):
- lbls = [self.label]
- item = self
- while item.parent:
- item = item.parent
- lbls.append(item.label)
- return u" > ".join(reversed(lbls))
-
- def __unicode__(self):
- return self.label
-post_save.connect(post_save_cache, sender=ObjectType)
-post_delete.connect(post_save_cache, sender=ObjectType)
-
-IS_ISOLATED_CHOICES = (
- ('U', _(u"Unknow")),
- ('O', _(u"Object")),
- ('B', _(u"Batch"))
-)
-
-
-class BaseFind(BaseHistorizedItem, OwnPerms):
- IS_ISOLATED_DICT = dict(IS_ISOLATED_CHOICES)
- label = models.TextField(_(u"Free ID"))
- external_id = models.TextField(_(u"External ID"), blank=True, null=True)
- auto_external_id = models.BooleanField(
- _(u"External ID is set automatically"), default=False)
- description = models.TextField(_(u"Description"), blank=True, null=True)
- comment = models.TextField(_(u"Comment"), blank=True, null=True)
- topographic_localisation = models.CharField(
- _(u"Topographic localisation"), blank=True, null=True, max_length=120)
- special_interest = models.CharField(_(u"Special interest"), blank=True,
- null=True, max_length=120)
- context_record = models.ForeignKey(
- ContextRecord, related_name='base_finds',
- verbose_name=_(u"Context Record"))
- discovery_date = models.DateField(_(u"Discovery date"),
- blank=True, null=True)
- batch = models.CharField(_(u"Batch/object"), max_length=1, default="U",
- choices=IS_ISOLATED_CHOICES)
- index = models.IntegerField(u"Index", default=0)
- material_index = models.IntegerField(_(u"Material index"), default=0)
- point = models.PointField(_(u"Point"), blank=True, null=True, dim=3)
- line = models.LineStringField(_(u"Line"), blank=True, null=True)
- polygon = models.PolygonField(_(u"Polygon"), blank=True, null=True)
- cache_short_id = models.TextField(
- _(u"Short ID"), blank=True, null=True,
- help_text=_(u"Cached value - do not edit"))
- cache_complete_id = models.TextField(
- _(u"Complete ID"), blank=True, null=True,
- help_text=_(u"Cached value - do not edit"))
- history = HistoricalRecords()
- RELATED_POST_PROCESS = ['find']
-
- class Meta:
- verbose_name = _(u"Base find")
- verbose_name_plural = _(u"Base finds")
- permissions = (
- ("view_basefind", ugettext(u"Can view all Base finds")),
- ("view_own_basefind", ugettext(u"Can view own Base find")),
- ("add_own_basefind", ugettext(u"Can add own Base find")),
- ("change_own_basefind", ugettext(u"Can change own Base find")),
- ("delete_own_basefind", ugettext(u"Can delete own Base find")),
- )
-
- def __unicode__(self):
- return self.label
-
- def get_last_find(self):
- # TODO: manage virtuals - property(last_find) ?
- finds = self.find.filter().order_by("-order").all()
- return finds and finds[0]
-
- @classmethod
- def get_max_index(cls, operation):
- q = BaseFind.objects\
- .filter(context_record__operation=operation)
- if q.count():
- return q.aggregate(Max('index'))['index__max']
- return 0
-
- def complete_id(self):
- # OPE|MAT.CODE|UE|FIND_index
- if not self.context_record.operation:
- return
- # find = self.get_last_find()
- ope = self.context_record.operation
- c_id = [unicode(ope.code_patriarche) if ope.code_patriarche else
- (unicode(ope.year) + "-" + unicode(ope.operation_code))]
- materials = set()
- for find in self.find.filter(downstream_treatment__isnull=True):
- for mat in find.material_types.all():
- if mat.code:
- materials.add(mat.code)
- c_id.append(u'-'.join(sorted(list(materials))))
- c_id.append(self.context_record.label)
- max_index = str(self.get_max_index(ope))
- c_id.append((u'{:0' + str(len(max_index)) + 'd}').format(self.index))
- return settings.JOINT.join(c_id)
-
- def short_id(self):
- # OPE|FIND_index
- if not self.context_record.operation:
- return
- ope = self.context_record.operation
- c_id = [(ope.code_patriarche and unicode(ope.code_patriarche)) or
- (unicode(ope.year) + "-" + unicode(ope.operation_code))]
- max_index = str(self.get_max_index(ope))
- c_id.append((u'{:0' + str(len(max_index)) + 'd}').format(self.index))
- return settings.JOINT.join(c_id)
-
- def full_label(self):
- return self._real_label() or self._temp_label() or u""
-
- def material_type_label(self):
- find = self.get_last_find()
- finds = [find and find.material_type.code or '']
- ope = self.context_record.operation
- finds += [unicode(ope.code_patriarche) or
- (unicode(ope.year) + "-" + unicode(ope.operation_code))]
- finds += [self.context_record.label, unicode(self.material_index)]
- return settings.JOINT.join(finds)
-
- def _real_label(self):
- if not self.context_record.parcel \
- or not self.context_record.operation \
- or not self.context_record.operation.code_patriarche:
- return
- find = self.get_last_find()
- lbl = find.label or self.label
- return settings.JOINT.join(
- [unicode(it) for it in (
- self.context_record.operation.code_patriarche,
- self.context_record.label, lbl) if it])
-
- def _temp_label(self):
- if not self.context_record.parcel:
- return
- find = self.get_last_find()
- lbl = find.label or self.label
- return settings.JOINT.join(
- [unicode(it) for it in (
- self.context_record.parcel.year, self.index,
- self.context_record.label, lbl) if it])
-
- @property
- def name(self):
- return self.label
-
- @classmethod
- def get_extra_fields(cls):
- fields = {}
- for field in Find._meta.many_to_many:
- if field.name == 'base_finds':
- fields['find'] = field.related.model
- return fields
-
- def save(self, *args, **kwargs):
- returned = super(BaseFind, self).save(*args, **kwargs)
-
- updated = False
- if not self.external_id or self.auto_external_id:
- external_id = get_external_id('base_find_external_id', self)
- if external_id != self.external_id:
- updated = True
- self.auto_external_id = True
- self.external_id = external_id
- if updated:
- self._cached_label_checked = False
- self.save()
- return returned
-
-WEIGHT_UNIT = (('g', _(u"g")),
- ('kg', _(u"kg")),)
-
-CHECK_CHOICES = (('NC', _(u"Not checked")),
- ('CI', _(u"Checked but incorrect")),
- ('CC', _(u"Checked and correct")),
- )
-
-
-class FindBasket(Basket):
- items = models.ManyToManyField('Find', blank=True, null=True,
- related_name='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',
- 'base_finds.context_record.operation.operation_code',
- 'container.reference', 'container.location',
- 'base_finds.batch',
- 'base_finds.context_record.parcel.town',
- 'base_finds.context_record.parcel', ]
- if settings.COUNTRY == 'fr':
- TABLE_COLS.insert(
- 6, 'base_finds.context_record.operation.code_patriarche')
- TABLE_COLS_FOR_OPE = [
- 'base_finds.cache_short_id',
- 'base_finds.cache_complete_id',
- 'previous_id', 'label', 'material_types',
- 'datings.period', 'find_number', 'object_types',
- 'description',
- 'base_finds.context_record.parcel.town',
- 'base_finds.context_record.parcel', ]
-
- EXTRA_FULL_FIELDS = [
- 'base_finds.cache_short_id', 'base_finds.cache_complete_id',
- 'base_finds.comment', 'base_finds.description',
- 'base_finds.topographic_localisation',
- 'base_finds.special_interest',
- 'base_finds.discovery_date']
- EXTRA_FULL_FIELDS_LABELS = {
- 'base_finds.cache_short_id': _(u"Base find - Short ID"),
- 'base_finds.cache_complete_id': _(u"Base find - Complete ID"),
- 'base_finds.comment': _(u"Base find - Comment"),
- 'base_finds.description': _(u"Base find - Description"),
- 'base_finds.topographic_localisation': _(u"Base find - "
- u"Topographic localisation"),
- 'base_finds.special_interest': _(u"Base find - Special interest"),
- 'base_finds.discovery_date': _(u"Base find - Discovery date"),
- }
- ATTRS_EQUIV = {'get_first_base_find': 'base_finds'}
-
- # search parameters
- REVERSED_BOOL_FIELDS = ['image__isnull']
- 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 = {
- 'base_finds__cache_short_id':
- 'base_finds__cache_short_id__icontains',
- 'base_finds__cache_complete_id':
- 'base_finds__cache_complete_id__icontains',
- 'label':
- 'label__icontains',
- 'base_finds__context_record':
- 'base_finds__context_record__pk',
- 'base_finds__context_record__parcel__town':
- 'base_finds__context_record__parcel__town',
- 'base_finds__context_record__operation__year':
- 'base_finds__context_record__operation__year__contains',
- 'base_finds__context_record__operation':
- 'base_finds__context_record__operation__pk',
- 'archaeological_sites':
- 'base_finds__context_record__operation__archaeological_sites__pk',
- 'base_finds__context_record__operation__code_patriarche':
- 'base_finds__context_record__operation__code_patriarche',
- 'datings__period': 'datings__period__pk',
- 'base_finds__find__description':
- 'base_finds__find__description__icontains',
- 'base_finds__batch': 'base_finds__batch',
- 'basket': 'basket',
- 'cached_label': 'cached_label__icontains',
- 'image': 'image__isnull'}
-
- # fields
- base_finds = models.ManyToManyField(BaseFind, verbose_name=_(u"Base find"),
- related_name='find')
- external_id = models.TextField(_(u"External ID"), blank=True, null=True)
- auto_external_id = models.BooleanField(
- _(u"External ID is set automatically"), default=False)
- order = models.IntegerField(_(u"Order"), default=1)
- label = models.TextField(_(u"Free ID"))
- description = models.TextField(_(u"Description"), blank=True, null=True)
- material_types = models.ManyToManyField(
- MaterialType, verbose_name=_(u"Material types"), related_name='finds')
- conservatory_state = models.ForeignKey(
- ConservatoryState, verbose_name=_(u"Conservatory state"), blank=True,
- null=True)
- conservatory_comment = models.TextField(_(u"Conservatory comment"),
- blank=True, null=True)
- preservation_to_considers = models.ManyToManyField(
- PreservationType, verbose_name=_(u"Type of preservation to consider"),
- related_name='finds')
- volume = models.FloatField(_(u"Volume (l)"), blank=True, null=True)
- weight = models.FloatField(_(u"Weight (g)"), blank=True, null=True)
- weight_unit = models.CharField(_(u"Weight unit"), max_length=4,
- blank=True, null=True, choices=WEIGHT_UNIT)
- find_number = models.IntegerField(_("Find number"), blank=True, null=True)
- upstream_treatment = models.ForeignKey(
- "Treatment", blank=True, null=True,
- related_name='downstream',
- verbose_name=_("Upstream treatment"))
- downstream_treatment = models.ForeignKey(
- "Treatment", blank=True, null=True, related_name='upstream',
- verbose_name=_("Downstream treatment"))
- datings = models.ManyToManyField(Dating, verbose_name=_(u"Dating"),
- related_name='find')
- container = models.ForeignKey(
- Container, verbose_name=_(u"Container"), blank=True, null=True,
- related_name='finds')
- is_complete = models.NullBooleanField(_(u"Is complete?"), blank=True,
- null=True)
- object_types = models.ManyToManyField(
- ObjectType, verbose_name=_(u"Object types"), related_name='find')
- integrities = models.ManyToManyField(
- IntegrityType, verbose_name=_(u"Integrity / interest"),
- related_name='find')
- remarkabilities = models.ManyToManyField(
- RemarkabilityType, verbose_name=_(u"Remarkability"),
- related_name='find')
- length = models.FloatField(_(u"Length (cm)"), blank=True, null=True)
- width = models.FloatField(_(u"Width (cm)"), blank=True, null=True)
- height = models.FloatField(_(u"Height (cm)"), blank=True, null=True)
- diameter = models.FloatField(_(u"Diameter (cm)"), blank=True, null=True)
- dimensions_comment = models.TextField(_(u"Dimensions comment"),
- blank=True, null=True)
- mark = models.TextField(_(u"Mark"), blank=True, null=True)
- comment = models.TextField(_(u"Comment"), blank=True, null=True)
- dating_comment = models.TextField(_(u"Comment on dating"), blank=True,
- null=True)
- previous_id = models.TextField(_(u"Previous ID"), blank=True, null=True)
- index = models.IntegerField(u"Index", default=0)
- checked = models.CharField(_(u"Check"), max_length=2, default='NC',
- choices=CHECK_CHOICES)
- check_date = models.DateField(_(u"Check date"),
- 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/'
-
- class Meta:
- verbose_name = _(u"Find")
- verbose_name_plural = _(u"Finds")
- permissions = (
- ("view_find", ugettext(u"Can view all Finds")),
- ("view_own_find", ugettext(u"Can view own Find")),
- ("add_own_find", ugettext(u"Can add own Find")),
- ("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):
- lbl = settings.JOINT.join([
- getattr(self, attr)
- for attr in ('administrative_index', 'label')
- if getattr(self, attr)])
- return lbl
-
- @property
- def short_label(self):
- return self.reference
-
- @property
- def dating(self):
- return u" ; ".join([unicode(dating) for dating in self.datings.all()])
-
- @property
- def show_url(self):
- return reverse('show-find', args=[self.pk, ''])
-
- @property
- def name(self):
- return u" - ".join([base_find.name
- for base_find in self.base_finds.all()])
-
- @property
- def full_label(self):
- lbl = u" - ".join([
- getattr(self, attr)
- for attr in ('label', 'administrative_index')
- if getattr(self, attr)])
- base = u" - ".join([base_find.complete_id()
- for base_find in self.base_finds.all()])
- if base:
- lbl += u' ({})'.format(base)
- return lbl
-
- def get_first_base_find(self):
- q = self.base_finds
- if not q.count():
- return
- return q.order_by('-pk').all()[0]
-
- @property
- def reference(self):
- bf = self.get_first_base_find()
- if not bf:
- return "00"
- return bf.short_id()
-
- @property
- def administrative_index(self):
- bf = self.get_first_base_find()
- 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)
-
- def _get_treatments(self, model, rel='upstream'):
- treatments, findtreats = [], []
- for findtreat in model.objects.filter(
- find_id=self.pk).order_by(
- 'treatment_nb', 'treatment__start_date',
- 'treatment__end_date').distinct().all():
- if findtreat.pk in findtreats:
- continue
- findtreats.append(findtreat.pk)
- q = getattr(findtreat.treatment, rel).distinct().order_by(
- 'label')
- treatments.append((q.all(), findtreat.treatment))
- return treatments
-
- def upstream_treatments(self):
- return self._get_treatments(FindUpstreamTreatments, 'upstream')
-
- def downstream_treatments(self):
- return self._get_treatments(FindDownstreamTreatments, 'downstream')
-
- def all_treatments(self):
- return self.upstream_treatments() + self.downstream_treatments()
-
- def get_department(self):
- bf = self.get_first_base_find()
- if not bf:
- return "00"
- return bf.context_record.operation.get_department()
-
- def get_town_label(self):
- bf = self.get_first_base_find()
- if not bf:
- return "00"
- return bf.context_record.operation.get_town_label()
-
- @classmethod
- def get_periods(cls, slice='year', fltr={}):
- q = cls.objects
- if fltr:
- q = q.filter(**fltr)
- if slice == 'year':
- years = set()
- finds = q.filter(downstream_treatment__isnull=True)
- for find in finds:
- bi = find.base_finds.all()
- if not bi:
- continue
- bi = bi[0]
- if bi.context_record.operation.start_date:
- yr = bi.context_record.operation.start_date.year
- years.add(yr)
- return list(years)
-
- @classmethod
- def get_by_year(cls, year, fltr={}):
- q = cls.objects
- if fltr:
- q = q.filter(**fltr)
- return q.filter(
- downstream_treatment__isnull=True,
- base_finds__context_record__operation__start_date__year=year)
-
- @classmethod
- def get_operations(cls):
- operations = set()
- finds = cls.objects.filter(downstream_treatment__isnull=True)
- for find in finds:
- bi = find.base_finds.all()
- if not bi:
- continue
- bi = bi[0]
- pk = bi.context_record.operation.pk
- operations.add(pk)
- return list(operations)
-
- @classmethod
- def get_by_operation(cls, operation_id):
- return cls.objects.filter(
- downstream_treatment__isnull=True,
- base_finds__context_record__operation__pk=operation_id)
-
- @classmethod
- def get_total_number(cls, fltr={}):
- q = cls.objects
- if fltr:
- q = q.filter(**fltr)
- return q.filter(downstream_treatment__isnull=True).count()
-
- def duplicate(self, user):
- model = self.__class__
- # base fields
- table_cols = [field.name for field in model._meta.fields
- if field.name not in PRIVATE_FIELDS or
- field.name == 'order']
- dct = dict([(attr, getattr(self, attr)) for attr in
- table_cols])
- dct['order'] += 1
- dct['history_modifier'] = user
- new = self.__class__(**dct)
- new.save()
-
- # m2m fields
- m2m = [field.name for field in model._meta.many_to_many
- if field.name not in PRIVATE_FIELDS]
- for field in m2m:
- for val in getattr(self, field).all():
- getattr(new, field).add(val)
- return new
-
- @classmethod
- def get_query_owns(cls, user):
- return Q(base_finds__context_record__operation__scientist=user.
- ishtaruser.person) |\
- Q(base_finds__context_record__operation__in_charge=user.
- ishtaruser.person) |\
- Q(history_creator=user)
-
- @classmethod
- def get_owns(cls, user, menu_filtr=None, limit=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,
- limit=limit)
- return sorted(
- owns, key=lambda x: x.cached_label
- if hasattr(x, 'cached_label') else unicode(x))
-
- def _generate_cached_label(self):
- return unicode(self)
-
- def save(self, *args, **kwargs):
- super(Find, self).save(*args, **kwargs)
-
- updated = False
- self.skip_history_when_saving = True
- if not self.external_id or self.auto_external_id:
- external_id = get_external_id('find_external_id', self)
- if external_id != self.external_id:
- updated = True
- self.auto_external_id = True
- self.external_id = external_id
- if updated:
- self._cached_label_checked = False
- self.save()
- return
-
- q = self.base_finds
- if not self.index and q.count():
- operation = q.filter(
- context_record__operation__pk__isnull=False).order_by(
- '-context_record__operation__start_date')
- if operation.count():
- operation = operation.all()[0].context_record.operation
- q = Find.objects\
- .filter(base_finds__context_record__operation=operation)
- if self.pk:
- q = q.exclude(pk=self.pk)
- if q.count():
- self.index = q.aggregate(Max('index'))['index__max'] + 1
- else:
- self.index = 1
- self._cached_label_checked = False
- self.save()
- for base_find in self.base_finds.filter(
- context_record__operation__pk__isnull=False).all():
- modified = False
- if not base_find.index:
- modified = True
- base_find.index = BaseFind.get_max_index(
- base_find.context_record.operation) + 1
- short_id = base_find.short_id()
- if base_find.cache_short_id != short_id:
- base_find.cache_short_id = short_id
- modified = True
- complete_id = base_find.complete_id()
- if base_find.cache_complete_id != complete_id:
- base_find.cache_complete_id = complete_id
- modified = True
- if modified:
- base_find.skip_history_when_saving = True
- base_find._cached_label_checked = False
- base_find.save()
- # if not base_find.material_index:
- # idx = BaseFind.objects\
- # .filter(context_record=base_find.context_record,
- # find__material_types=self.material_type)\
- # .aggregate(Max('material_index'))
- # base_find.material_index = \
- # 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:
- return
- # recalculate complete id and external id
- obj.save()
-
-m2m_changed.connect(base_find_find_changed, sender=Find.base_finds.through)
-
-
-class FindSource(Source):
- SHOW_URL = 'show-findsource'
- MODIFY_URL = 'find_source_modify'
- TABLE_COLS = ['find__base_finds__context_record__operation',
- 'find__base_finds__context_record', 'find'] + \
- Source.TABLE_COLS
-
- # search parameters
- 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',
- 'comment': 'comment__icontains',
- 'additional_information': 'additional_information__icontains',
- 'person': 'authors__person__pk',
- 'find__base_finds__context_record__operation__year':
- 'find__base_finds__context_record__operation__year',
- 'find__base_finds__context_record__operation__operation_code':
- 'find__base_finds__context_record__operation__operation_code',
- 'find__base_finds__context_record__operation__code_patriarche':
- 'find__base_finds__context_record__operation__code_patriarche',
- 'find__datings__period': 'find__datings__period__pk',
- 'find__description': 'find__description__icontains',
- }
-
- class Meta:
- verbose_name = _(u"Find documentation")
- verbose_name_plural = _(u"Find documentations")
- find = models.ForeignKey(Find, verbose_name=_(u"Find"),
- related_name="source")
-
- @property
- def owner(self):
- return self.find
-
-
-class TreatmentType(GeneralType):
- virtual = models.BooleanField(_(u"Virtual"))
- upstream_is_many = models.BooleanField(
- _(u"Upstream is many"), default=False,
- help_text=_(
- u"Check this if for this treatment from many finds you'll get "
- u"one."))
- downstream_is_many = models.BooleanField(
- _(u"Downstream is many"), default=False,
- help_text=_(
- u"Check this if for this treatment from one find you'll get "
- u"many."))
-
- class Meta:
- verbose_name = _(u"Treatment type")
- verbose_name_plural = _(u"Treatment types")
- ordering = ('label',)
-post_save.connect(post_save_cache, sender=TreatmentType)
-post_delete.connect(post_save_cache, sender=TreatmentType)
-
-
-class Treatment(BaseHistorizedItem, OwnPerms):
- external_id = models.CharField(_(u"External ID"), blank=True, null=True,
- max_length=120)
- container = models.ForeignKey(Container, verbose_name=_(u"Container"),
- blank=True, null=True)
- description = models.TextField(_(u"Description"), blank=True, null=True)
- comment = models.TextField(_(u"Comment"), blank=True, null=True)
- treatment_type = models.ForeignKey(TreatmentType,
- verbose_name=_(u"Treatment type"))
- location = models.ForeignKey(
- Warehouse, verbose_name=_(u"Location"), blank=True, null=True,
- help_text=_(
- u"Location where the treatment is done. Target warehouse for "
- u"a move."))
- other_location = models.CharField(_(u"Other location"), max_length=200,
- blank=True, null=True)
- person = models.ForeignKey(
- Person, verbose_name=_(u"Doer"), blank=True, null=True,
- on_delete=models.SET_NULL, related_name='treatments')
- start_date = models.DateField(_(u"Start date"), blank=True, null=True)
- end_date = models.DateField(_(u"End date"), blank=True, null=True)
- history = HistoricalRecords()
-
- class Meta:
- verbose_name = _(u"Treatment")
- verbose_name_plural = _(u"Treatments")
- permissions = (
- ("view_treatment", ugettext(u"Can view all Treatments")),
- ("view_own_treatment", ugettext(u"Can view own Treatment")),
- ("add_own_treatment", ugettext(u"Can add own Treatment")),
- ("change_own_treatment", ugettext(u"Can change own Treatment")),
- ("delete_own_treatment", ugettext(u"Can delete own Treatment")),
- )
-
- def __unicode__(self):
- lbl = unicode(self.treatment_type)
- if self.person:
- lbl += u" %s %s" % (_(u"by"), unicode(self.person))
- return lbl
-
- def save(self, *args, **kwargs):
- items, user, extra_args_for_new = [], None, []
- if "items" in kwargs:
- items = kwargs.pop('items')
- if "user" in kwargs:
- user = kwargs.pop('user')
- if "extra_args_for_new" in kwargs:
- extra_args_for_new = kwargs.pop('extra_args_for_new')
- is_new = self.pk is None
- super(Treatment, self).save(*args, **kwargs)
- if not is_new or not items:
- return
- basket = None
- if hasattr(items, "items"):
- basket = items
- items = basket.items.all()
- for item in items:
- new = item.duplicate(user)
- item.downstream_treatment = self
- item.save()
- new.upstream_treatment = self
- for k in extra_args_for_new:
- setattr(new, k, extra_args_for_new[k])
- new.save()
- # update baskets
- for basket in FindBasket.objects.filter(items__pk=item.pk).all():
- basket.items.remove(item)
- basket.items.add(new)
-
-
-class AbsFindTreatments(models.Model):
- find = models.ForeignKey(Find, verbose_name=_(u"Find"),
- related_name='%(class)s_related')
- treatment = models.ForeignKey(Treatment, verbose_name=_(u"Treatment"),
- primary_key=True)
- # primary_key is set to prevent django to ask for an id column
- # treatment is not a primary key
- treatment_nb = models.IntegerField(_(u"Order"))
- TABLE_COLS = ['treatment__treatment_type',
- 'treatment__start_date', 'treatment__end_date',
- 'treatment__location', 'treatment__container',
- 'treatment__person', 'treatment_nb']
- EXTRA_FULL_FIELDS_LABELS = {
- 'treatment__treatment_type': _(u"Treatment type"),
- 'treatment__start_date': _(u"Start date"),
- 'treatment__end_date': _(u"End date"),
- 'treatment__location': _(u"Location"),
- 'treatment__container': _(u"Container"),
- 'treatment__person': _(u"Doer"),
- 'treatment__upstream': _(u"Related finds"),
- 'treatment__downstream': _(u"Related finds"),
- }
-
- class Meta:
- abstract = True
-
- def __unicode__(self):
- return u"{} - {} [{}]".format(
- self.find, self.treatment, self.treatment_nb)
-
-
-class FindUpstreamTreatments(AbsFindTreatments):
- """
- CREATE VIEW find_uptreatments_tree AS
- WITH RECURSIVE rel_tree AS (
- SELECT id AS find_id, upstream_treatment_id, downstream_treatment_id,
- 1 AS level,
- array[upstream_treatment_id] AS path_info
- FROM archaeological_finds_find
- WHERE upstream_treatment_id is null
- UNION ALL
- SELECT c.id AS find_id, c.upstream_treatment_id,
- c.downstream_treatment_id,
- p.level + 1, p.path_info||c.upstream_treatment_id
- FROM archaeological_finds_find c
- JOIN rel_tree p
- ON c.upstream_treatment_id = p.downstream_treatment_id
- )
- SELECT DISTINCT find_id, path_info, level
- FROM rel_tree ORDER BY find_id;
-
- CREATE VIEW find_uptreatments AS
- SELECT DISTINCT find_id,
- path_info[nb] AS treatment_id, level - nb + 1 AS treatment_nb
- FROM (SELECT *, generate_subscripts(path_info, 1) AS nb
- FROM find_uptreatments_tree) y
- WHERE path_info[nb] is not NULL
- ORDER BY find_id, treatment_id;
- """
- TABLE_COLS = ['treatment__treatment_type',
- 'treatment__upstream',
- 'treatment__start_date', 'treatment__end_date',
- 'treatment__location', 'treatment__container',
- 'treatment__person', 'treatment_nb']
-
- # search parameters
- EXTRA_REQUEST_KEYS = {'find_id': 'find_id'}
-
- class Meta:
- managed = False
- db_table = 'find_uptreatments'
- unique_together = ('find', 'treatment')
- ordering = ('find', '-treatment_nb')
-
-
-class FindDownstreamTreatments(AbsFindTreatments):
- """
- CREATE VIEW find_downtreatments_tree AS
- WITH RECURSIVE rel_tree AS (
- SELECT id AS find_id, downstream_treatment_id, upstream_treatment_id,
- 1 AS level,
- array[downstream_treatment_id] AS path_info
- FROM archaeological_finds_find
- WHERE downstream_treatment_id is null
- UNION ALL
- SELECT c.id AS find_id, c.downstream_treatment_id,
- c.upstream_treatment_id,
- p.level + 1, p.path_info||c.downstream_treatment_id
- FROM archaeological_finds_find c
- JOIN rel_tree p
- ON c.downstream_treatment_id = p.upstream_treatment_id
- )
- SELECT DISTINCT find_id, path_info, level
- FROM rel_tree ORDER BY find_id;
-
- CREATE VIEW find_downtreatments AS
- SELECT DISTINCT find_id,
- path_info[nb] AS treatment_id, level - nb + 1 AS treatment_nb
- FROM (SELECT *, generate_subscripts(path_info, 1) AS nb
- FROM find_downtreatments_tree) y
- WHERE path_info[nb] is not NULL
- ORDER BY find_id, treatment_id;
- """
- TABLE_COLS = ['treatment__treatment_type',
- 'treatment__downstream',
- 'treatment__start_date', 'treatment__end_date',
- 'treatment__location', 'treatment__container',
- 'treatment__person', 'treatment_nb']
-
- # search parameters
- EXTRA_REQUEST_KEYS = {'find_id': 'find_id'}
-
- class Meta:
- managed = False
- db_table = 'find_downtreatments'
- unique_together = ('find', 'treatment')
- ordering = ('find', '-treatment_nb')
-
-
-class FindTreatments(AbsFindTreatments):
- """
- CREATE VIEW find_treatments AS
- SELECT find_id, treatment_id, treatment_nb, TRUE as upstream
- FROM find_uptreatments
- UNION
- SELECT find_id, treatment_id, treatment_nb, FALSE as upstream
- FROM find_downtreatments
- ORDER BY find_id, treatment_id, upstream;
- """
- upstream = models.BooleanField(_(u"Is upstream"))
-
- class Meta:
- managed = False
- db_table = 'find_treatments'
- unique_together = ('find', 'treatment')
- ordering = ('find', 'upstream', '-treatment_nb')
-
-
-class TreatmentSource(Source):
- class Meta:
- verbose_name = _(u"Treatment documentation")
- verbose_name_plural = _(u"Treament documentations")
- treatment = models.ForeignKey(
- Treatment, verbose_name=_(u"Treatment"), related_name="source")
-
- @property
- def owner(self):
- return self.treatment
-
-
-class Property(LightHistorizedItem):
- find = models.ForeignKey(Find, verbose_name=_(u"Find"))
- administrative_act = models.ForeignKey(
- AdministrativeAct, verbose_name=_(u"Administrative act"))
- person = models.ForeignKey(Person, verbose_name=_(u"Person"),
- related_name='properties')
- start_date = models.DateField(_(u"Start date"))
- end_date = models.DateField(_(u"End date"))
-
- class Meta:
- verbose_name = _(u"Property")
- verbose_name_plural = _(u"Properties")
-
- def __unicode__(self):
- return self.person + settings.JOINT + self.find
+from archaeological_finds.models_finds import MaterialType, ConservatoryState,\
+ PreservationType, IntegrityType, RemarkabilityType, ObjectType, BaseFind, \
+ FindBasket, Find, FindSource, Property, IS_ISOLATED_CHOICES, CHECK_CHOICES
+from archaeological_finds.models_treatments import TreatmentType, Treatment, \
+ AbsFindTreatments, FindUpstreamTreatments, FindDownstreamTreatments, \
+ FindTreatments, TreatmentSource, TreatmentFile, TreatmentFileType, \
+ TreatmentFileSource, TreatmentState
+
+__all__ = ['MaterialType', 'ConservatoryState', 'PreservationType',
+ 'IntegrityType', 'RemarkabilityType', 'ObjectType',
+ 'BaseFind', 'FindBasket', 'Find', 'FindSource', 'Property',
+ 'IS_ISOLATED_CHOICES', 'CHECK_CHOICES',
+ 'TreatmentType', 'TreatmentState', 'Treatment', 'AbsFindTreatments',
+ 'FindUpstreamTreatments', 'FindDownstreamTreatments',
+ 'FindTreatments', 'TreatmentSource', 'TreatmentFile',
+ 'TreatmentFileType', 'TreatmentFileSource']
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
new file mode 100644
index 000000000..e29669773
--- /dev/null
+++ b/archaeological_finds/models_finds.py
@@ -0,0 +1,813 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2012-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# See the file COPYING for details.
+
+import datetime
+
+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, post_save, post_delete
+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, post_save_cache
+
+from archaeological_operations.models import AdministrativeAct
+from archaeological_context_records.models import ContextRecord, Dating
+
+from ishtar_common.models import PRIVATE_FIELDS
+from archaeological_warehouse.models import Container, Collection
+
+
+class MaterialType(GeneralType):
+ code = models.CharField(_(u"Code"), max_length=10, blank=True, null=True)
+ recommendation = models.TextField(_(u"Recommendation"), blank=True,
+ null=True)
+ parent = models.ForeignKey("MaterialType", blank=True, null=True,
+ verbose_name=_(u"Parent material"))
+
+ class Meta:
+ verbose_name = _(u"Material type")
+ verbose_name_plural = _(u"Material types")
+ ordering = ('label',)
+post_save.connect(post_save_cache, sender=MaterialType)
+post_delete.connect(post_save_cache, sender=MaterialType)
+
+
+class ConservatoryState(GeneralType):
+ parent = models.ForeignKey("ConservatoryState", blank=True, null=True,
+ verbose_name=_(u"Parent conservatory state"))
+
+ class Meta:
+ verbose_name = _(u"Conservatory state")
+ verbose_name_plural = _(u"Conservatory states")
+ ordering = ('label',)
+post_save.connect(post_save_cache, sender=ConservatoryState)
+post_delete.connect(post_save_cache, sender=ConservatoryState)
+
+
+class PreservationType(GeneralType):
+ class Meta:
+ verbose_name = _(u"Preservation type")
+ verbose_name_plural = _(u"Preservation types")
+ ordering = ('label',)
+post_save.connect(post_save_cache, sender=PreservationType)
+post_delete.connect(post_save_cache, sender=PreservationType)
+
+
+class IntegrityType(GeneralType):
+ class Meta:
+ verbose_name = _(u"Integrity / interest type")
+ verbose_name_plural = _(u"Integrity / interest types")
+ ordering = ('label',)
+post_save.connect(post_save_cache, sender=IntegrityType)
+post_delete.connect(post_save_cache, sender=IntegrityType)
+
+
+class RemarkabilityType(GeneralType):
+ class Meta:
+ verbose_name = _(u"Remarkability type")
+ verbose_name_plural = _(u"Remarkability types")
+ ordering = ('label',)
+post_save.connect(post_save_cache, sender=RemarkabilityType)
+post_delete.connect(post_save_cache, sender=RemarkabilityType)
+
+
+class ObjectType(GeneralType):
+ parent = models.ForeignKey("ObjectType", blank=True, null=True,
+ verbose_name=_(u"Parent"))
+
+ class Meta:
+ verbose_name = _(u"Object type")
+ verbose_name_plural = _(u"Object types")
+ ordering = ('parent__label', 'label',)
+
+ def full_label(self):
+ lbls = [self.label]
+ item = self
+ while item.parent:
+ item = item.parent
+ lbls.append(item.label)
+ return u" > ".join(reversed(lbls))
+
+ def __unicode__(self):
+ return self.label
+post_save.connect(post_save_cache, sender=ObjectType)
+post_delete.connect(post_save_cache, sender=ObjectType)
+
+IS_ISOLATED_CHOICES = (
+ ('U', _(u"Unknow")),
+ ('O', _(u"Object")),
+ ('B', _(u"Batch"))
+)
+
+
+class BaseFind(BaseHistorizedItem, OwnPerms):
+ IS_ISOLATED_DICT = dict(IS_ISOLATED_CHOICES)
+ label = models.TextField(_(u"Free ID"))
+ external_id = models.TextField(_(u"External ID"), blank=True, null=True)
+ auto_external_id = models.BooleanField(
+ _(u"External ID is set automatically"), default=False)
+ description = models.TextField(_(u"Description"), blank=True, null=True)
+ comment = models.TextField(_(u"Comment"), blank=True, null=True)
+ topographic_localisation = models.CharField(
+ _(u"Topographic localisation"), blank=True, null=True, max_length=120)
+ special_interest = models.CharField(_(u"Special interest"), blank=True,
+ null=True, max_length=120)
+ context_record = models.ForeignKey(
+ ContextRecord, related_name='base_finds',
+ verbose_name=_(u"Context Record"))
+ discovery_date = models.DateField(_(u"Discovery date"),
+ blank=True, null=True)
+ batch = models.CharField(_(u"Batch/object"), max_length=1, default="U",
+ choices=IS_ISOLATED_CHOICES)
+ index = models.IntegerField(u"Index", default=0)
+ material_index = models.IntegerField(_(u"Material index"), default=0)
+ point = models.PointField(_(u"Point"), blank=True, null=True, dim=3)
+ line = models.LineStringField(_(u"Line"), blank=True, null=True)
+ polygon = models.PolygonField(_(u"Polygon"), blank=True, null=True)
+ cache_short_id = models.TextField(
+ _(u"Short ID"), blank=True, null=True,
+ help_text=_(u"Cached value - do not edit"))
+ cache_complete_id = models.TextField(
+ _(u"Complete ID"), blank=True, null=True,
+ help_text=_(u"Cached value - do not edit"))
+ history = HistoricalRecords()
+ RELATED_POST_PROCESS = ['find']
+
+ class Meta:
+ verbose_name = _(u"Base find")
+ verbose_name_plural = _(u"Base finds")
+ permissions = (
+ ("view_basefind", ugettext(u"Can view all Base finds")),
+ ("view_own_basefind", ugettext(u"Can view own Base find")),
+ ("add_own_basefind", ugettext(u"Can add own Base find")),
+ ("change_own_basefind", ugettext(u"Can change own Base find")),
+ ("delete_own_basefind", ugettext(u"Can delete own Base find")),
+ )
+
+ def __unicode__(self):
+ return self.label
+
+ def get_last_find(self):
+ # TODO: manage virtuals - property(last_find) ?
+ finds = self.find.filter().order_by("-order").all()
+ return finds and finds[0]
+
+ @classmethod
+ def get_max_index(cls, operation):
+ q = BaseFind.objects \
+ .filter(context_record__operation=operation)
+ if q.count():
+ return q.aggregate(Max('index'))['index__max']
+ return 0
+
+ def complete_id(self):
+ # OPE|MAT.CODE|UE|FIND_index
+ if not self.context_record.operation:
+ return
+ # find = self.get_last_find()
+ ope = self.context_record.operation
+ c_id = [unicode(ope.code_patriarche) if ope.code_patriarche else
+ (unicode(ope.year) + "-" + unicode(ope.operation_code))]
+ materials = set()
+ for find in self.find.filter(downstream_treatment__isnull=True):
+ for mat in find.material_types.all():
+ if mat.code:
+ materials.add(mat.code)
+ c_id.append(u'-'.join(sorted(list(materials))))
+ c_id.append(self.context_record.label)
+ max_index = str(self.get_max_index(ope))
+ c_id.append((u'{:0' + str(len(max_index)) + 'd}').format(self.index))
+ return settings.JOINT.join(c_id)
+
+ def short_id(self):
+ # OPE|FIND_index
+ if not self.context_record.operation:
+ return
+ ope = self.context_record.operation
+ c_id = [(ope.code_patriarche and unicode(ope.code_patriarche)) or
+ (unicode(ope.year) + "-" + unicode(ope.operation_code))]
+ max_index = str(self.get_max_index(ope))
+ c_id.append((u'{:0' + str(len(max_index)) + 'd}').format(self.index))
+ return settings.JOINT.join(c_id)
+
+ def full_label(self):
+ return self._real_label() or self._temp_label() or u""
+
+ def material_type_label(self):
+ find = self.get_last_find()
+ finds = [find and find.material_type.code or '']
+ ope = self.context_record.operation
+ finds += [unicode(ope.code_patriarche) or
+ (unicode(ope.year) + "-" + unicode(ope.operation_code))]
+ finds += [self.context_record.label, unicode(self.material_index)]
+ return settings.JOINT.join(finds)
+
+ def _real_label(self):
+ if not self.context_record.parcel \
+ or not self.context_record.operation \
+ or not self.context_record.operation.code_patriarche:
+ return
+ find = self.get_last_find()
+ lbl = find.label or self.label
+ return settings.JOINT.join(
+ [unicode(it) for it in (
+ self.context_record.operation.code_patriarche,
+ self.context_record.label, lbl) if it])
+
+ def _temp_label(self):
+ if not self.context_record.parcel:
+ return
+ find = self.get_last_find()
+ lbl = find.label or self.label
+ return settings.JOINT.join(
+ [unicode(it) for it in (
+ self.context_record.parcel.year, self.index,
+ self.context_record.label, lbl) if it])
+
+ @property
+ def name(self):
+ return self.label
+
+ @classmethod
+ def get_extra_fields(cls):
+ fields = {}
+ for field in Find._meta.many_to_many:
+ if field.name == 'base_finds':
+ fields['find'] = field.related.model
+ return fields
+
+ def save(self, *args, **kwargs):
+ returned = super(BaseFind, self).save(*args, **kwargs)
+
+ updated = False
+ if not self.external_id or self.auto_external_id:
+ external_id = get_external_id('base_find_external_id', self)
+ if external_id != self.external_id:
+ updated = True
+ self.auto_external_id = True
+ self.external_id = external_id
+ if updated:
+ self._cached_label_checked = False
+ self.save()
+ return returned
+
+WEIGHT_UNIT = (('g', _(u"g")),
+ ('kg', _(u"kg")),)
+
+CHECK_CHOICES = (('NC', _(u"Not checked")),
+ ('CI', _(u"Checked but incorrect")),
+ ('CC', _(u"Checked and correct")),
+ )
+
+
+class FindBasket(Basket):
+ items = models.ManyToManyField('Find', blank=True, null=True,
+ related_name='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__label',
+ 'base_finds__context_record__parcel__town',
+ 'base_finds__context_record__operation__year',
+ 'base_finds__context_record__operation__operation_code',
+ 'container__cached_label',
+ 'base_finds__batch',
+ 'base_finds__context_record__parcel__town',
+ 'base_finds__context_record__parcel', ]
+ if settings.COUNTRY == 'fr':
+ TABLE_COLS.insert(
+ 6, 'base_finds__context_record__operation__code_patriarche')
+ TABLE_COLS_FOR_OPE = [
+ 'base_finds__cache_short_id',
+ 'base_finds__cache_complete_id',
+ 'previous_id', 'label', 'material_types',
+ 'datings__period__label', 'find_number', 'object_types',
+ 'container__cached_label',
+ 'description',
+ 'base_finds__context_record__parcel__town',
+ 'base_finds__context_record__parcel', ]
+ COL_LABELS = {
+ 'datings__period__label': _(u"Periods"),
+ 'container__cached_label': _(u"Container"),
+ }
+
+ EXTRA_FULL_FIELDS = [
+ 'base_finds__cache_short_id', 'base_finds__cache_complete_id',
+ 'base_finds__comment', 'base_finds__description',
+ 'base_finds__topographic_localisation',
+ 'base_finds__special_interest',
+ 'base_finds__discovery_date']
+ EXTRA_FULL_FIELDS_LABELS = {
+ 'base_finds__cache_short_id': _(u"Base find - Short ID"),
+ 'base_finds__cache_complete_id': _(u"Base find - Complete ID"),
+ 'base_finds__comment': _(u"Base find - Comment"),
+ 'base_finds__description': _(u"Base find - Description"),
+ 'base_finds__topographic_localisation': _(u"Base find - "
+ u"Topographic localisation"),
+ 'base_finds__special_interest': _(u"Base find - Special interest"),
+ 'base_finds__discovery_date': _(u"Base find - Discovery date"),
+ }
+ ATTRS_EQUIV = {'get_first_base_find': 'base_finds'}
+
+ # search parameters
+ REVERSED_BOOL_FIELDS = ['image__isnull']
+ 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 = {
+ 'base_finds__cache_short_id':
+ 'base_finds__cache_short_id__icontains',
+ 'base_finds__cache_complete_id':
+ 'base_finds__cache_complete_id__icontains',
+ 'label':
+ 'label__icontains',
+ 'base_finds__context_record':
+ 'base_finds__context_record__pk',
+ 'base_finds__context_record__parcel__town':
+ 'base_finds__context_record__parcel__town',
+ 'base_finds__context_record__operation__year':
+ 'base_finds__context_record__operation__year__contains',
+ 'base_finds__context_record__operation':
+ 'base_finds__context_record__operation__pk',
+ 'archaeological_sites':
+ 'base_finds__context_record__operation__archaeological_sites__pk',
+ 'base_finds__context_record__operation__code_patriarche':
+ 'base_finds__context_record__operation__code_patriarche',
+ 'datings__period': 'datings__period__pk',
+ 'base_finds__find__description':
+ 'base_finds__find__description__icontains',
+ 'base_finds__batch': 'base_finds__batch',
+ 'basket': 'basket',
+ 'cached_label': 'cached_label__icontains',
+ 'image': 'image__isnull'}
+ EXTRA_REQUEST_KEYS.update(
+ dict(
+ [(key, key) for key in TABLE_COLS
+ if key not in EXTRA_REQUEST_KEYS]
+ )
+ )
+ EXTRA_REQUEST_KEYS.update(
+ dict(
+ [(key, key) for key in TABLE_COLS_FOR_OPE
+ if key not in EXTRA_REQUEST_KEYS]
+ )
+ )
+
+ # fields
+ base_finds = models.ManyToManyField(BaseFind, verbose_name=_(u"Base find"),
+ related_name='find')
+ external_id = models.TextField(_(u"External ID"), blank=True, null=True)
+ auto_external_id = models.BooleanField(
+ _(u"External ID is set automatically"), default=False)
+ order = models.IntegerField(_(u"Order"), default=1)
+ label = models.TextField(_(u"Free ID"))
+ description = models.TextField(_(u"Description"), blank=True, null=True)
+ material_types = models.ManyToManyField(
+ MaterialType, verbose_name=_(u"Material types"), related_name='finds')
+ conservatory_state = models.ForeignKey(
+ ConservatoryState, verbose_name=_(u"Conservatory state"), blank=True,
+ null=True, on_delete=models.SET_NULL)
+ conservatory_comment = models.TextField(_(u"Conservatory comment"),
+ blank=True, null=True)
+ preservation_to_considers = models.ManyToManyField(
+ PreservationType, verbose_name=_(u"Type of preservation to consider"),
+ related_name='finds')
+ volume = models.FloatField(_(u"Volume (l)"), blank=True, null=True)
+ weight = models.FloatField(_(u"Weight (g)"), blank=True, null=True)
+ weight_unit = models.CharField(_(u"Weight unit"), max_length=4,
+ blank=True, null=True, choices=WEIGHT_UNIT)
+ find_number = models.IntegerField(_(u"Find number"), blank=True, null=True)
+ upstream_treatment = models.ForeignKey(
+ "Treatment", blank=True, null=True,
+ related_name='downstream', on_delete=models.SET_NULL,
+ verbose_name=_(u"Upstream treatment"))
+ downstream_treatment = models.ForeignKey(
+ "Treatment", blank=True, null=True, related_name='upstream',
+ verbose_name=_(u"Downstream treatment"), on_delete=models.SET_NULL)
+ datings = models.ManyToManyField(Dating, verbose_name=_(u"Dating"),
+ related_name='find')
+ container = models.ForeignKey(
+ Container, verbose_name=_(u"Container"), blank=True, null=True,
+ related_name='finds', on_delete=models.SET_NULL)
+ is_complete = models.NullBooleanField(_(u"Is complete?"), blank=True,
+ null=True)
+ object_types = models.ManyToManyField(
+ ObjectType, verbose_name=_(u"Object types"), related_name='find')
+ integrities = models.ManyToManyField(
+ IntegrityType, verbose_name=_(u"Integrity / interest"),
+ related_name='find')
+ remarkabilities = models.ManyToManyField(
+ RemarkabilityType, verbose_name=_(u"Remarkability"),
+ related_name='find')
+ min_number_of_individuals = models.IntegerField(
+ _(u"Minimum number of individuals (MNI)"), blank=True, null=True)
+ length = models.FloatField(_(u"Length (cm)"), blank=True, null=True)
+ width = models.FloatField(_(u"Width (cm)"), blank=True, null=True)
+ height = models.FloatField(_(u"Height (cm)"), blank=True, null=True)
+ diameter = models.FloatField(_(u"Diameter (cm)"), blank=True, null=True)
+ thickness = models.FloatField(_(u"Thickness (cm)"), blank=True, null=True)
+ topographic_reference_point = models.CharField(
+ _(u"Point of topographic reference"), max_length=20,
+ blank=True, null=True)
+ dimensions_comment = models.TextField(_(u"Dimensions comment"),
+ blank=True, null=True)
+ mark = models.TextField(_(u"Mark"), blank=True, null=True)
+ comment = models.TextField(_(u"Comment"), blank=True, null=True)
+ dating_comment = models.TextField(_(u"Comment on dating"), blank=True,
+ null=True)
+ previous_id = models.TextField(_(u"Previous ID"), blank=True, null=True)
+ index = models.IntegerField(u"Index", default=0)
+ checked = models.CharField(_(u"Check"), max_length=2, default='NC',
+ choices=CHECK_CHOICES)
+ check_date = models.DateField(_(u"Check date"),
+ default=datetime.date.today)
+ estimated_value = models.FloatField(_(u"Estimated value"), blank=True,
+ null=True)
+ collection = models.ForeignKey(
+ Collection, verbose_name=_(u"Collection"), blank=True, null=True,
+ related_name='finds', on_delete=models.SET_NULL)
+ cached_label = models.TextField(_(u"Cached name"), null=True, blank=True)
+ history = HistoricalRecords()
+ BASKET_MODEL = FindBasket
+ IMAGE_PREFIX = 'finds/'
+
+ class Meta:
+ verbose_name = _(u"Find")
+ verbose_name_plural = _(u"Finds")
+ permissions = (
+ ("view_find", ugettext(u"Can view all Finds")),
+ ("view_own_find", ugettext(u"Can view own Find")),
+ ("add_own_find", ugettext(u"Can add own Find")),
+ ("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):
+ lbl = settings.JOINT.join(
+ [getattr(self, attr) for attr in ('administrative_index', 'label')
+ if getattr(self, attr)])
+ return lbl
+
+ @property
+ def short_label(self):
+ return self.reference
+
+ @property
+ def dating(self):
+ return u" ; ".join([unicode(dating) for dating in self.datings.all()])
+
+ @property
+ def show_url(self):
+ return reverse('show-find', args=[self.pk, ''])
+
+ @property
+ def name(self):
+ return u" - ".join([base_find.name
+ for base_find in self.base_finds.all()])
+
+ @property
+ def full_label(self):
+ lbl = u" - ".join([getattr(self, attr)
+ for attr in ('label', 'administrative_index')
+ if getattr(self, attr)])
+ base = u" - ".join([base_find.complete_id()
+ for base_find in self.base_finds.all()])
+ if base:
+ lbl += u' ({})'.format(base)
+ return lbl
+
+ def get_first_base_find(self):
+ q = self.base_finds
+ if not q.count():
+ return
+ return q.order_by('-pk').all()[0]
+
+ @property
+ def reference(self):
+ bf = self.get_first_base_find()
+ if not bf:
+ return "00"
+ return bf.short_id()
+
+ @property
+ def administrative_index(self):
+ bf = self.get_first_base_find()
+ 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)
+
+ def _get_treatments(self, model, rel='upstream'):
+ treatments, findtreats = [], []
+ for findtreat in model.objects.filter(
+ find_id=self.pk).order_by(
+ 'treatment_nb', 'treatment__start_date',
+ 'treatment__end_date').distinct().all():
+ if findtreat.pk in findtreats:
+ continue
+ findtreats.append(findtreat.pk)
+ q = getattr(findtreat.treatment, rel).distinct().order_by(
+ 'label')
+ treatments.append((q.all(), findtreat.treatment))
+ return treatments
+
+ @property
+ def weight_string(self):
+ if not self.weight:
+ return ""
+ return "{} {}".format(self.weight, self.weight_unit or "")
+
+ def upstream_treatments(self):
+ from archaeological_finds.models_treatments import \
+ FindUpstreamTreatments
+ return self._get_treatments(FindUpstreamTreatments, 'upstream')
+
+ def downstream_treatments(self):
+ from archaeological_finds.models_treatments import \
+ FindDownstreamTreatments
+ return self._get_treatments(FindDownstreamTreatments, 'downstream')
+
+ def all_treatments(self):
+ return self.upstream_treatments() + self.downstream_treatments()
+
+ def get_department(self):
+ bf = self.get_first_base_find()
+ if not bf:
+ return "00"
+ return bf.context_record.operation.get_department()
+
+ def get_town_label(self):
+ bf = self.get_first_base_find()
+ if not bf:
+ return "00"
+ return bf.context_record.operation.get_town_label()
+
+ @classmethod
+ def get_periods(cls, slice='year', fltr={}):
+ q = cls.objects
+ if fltr:
+ q = q.filter(**fltr)
+ if slice == 'year':
+ years = set()
+ finds = q.filter(downstream_treatment__isnull=True)
+ for find in finds:
+ bi = find.base_finds.all()
+ if not bi:
+ continue
+ bi = bi[0]
+ if bi.context_record.operation.start_date:
+ yr = bi.context_record.operation.start_date.year
+ years.add(yr)
+ return list(years)
+
+ @classmethod
+ def get_by_year(cls, year, fltr={}):
+ q = cls.objects
+ if fltr:
+ q = q.filter(**fltr)
+ return q.filter(
+ downstream_treatment__isnull=True,
+ base_finds__context_record__operation__start_date__year=year)
+
+ @classmethod
+ def get_operations(cls):
+ operations = set()
+ finds = cls.objects.filter(downstream_treatment__isnull=True)
+ for find in finds:
+ bi = find.base_finds.all()
+ if not bi:
+ continue
+ bi = bi[0]
+ pk = bi.context_record.operation.pk
+ operations.add(pk)
+ return list(operations)
+
+ @classmethod
+ def get_by_operation(cls, operation_id):
+ return cls.objects.filter(
+ downstream_treatment__isnull=True,
+ base_finds__context_record__operation__pk=operation_id)
+
+ @classmethod
+ def get_total_number(cls, fltr={}):
+ q = cls.objects
+ if fltr:
+ q = q.filter(**fltr)
+ return q.filter(downstream_treatment__isnull=True).count()
+
+ def duplicate(self, user):
+ model = self.__class__
+ # base fields
+ table_cols = [field.name for field in model._meta.fields
+ if field.name not in PRIVATE_FIELDS or
+ field.name == 'order']
+ dct = dict([(attr, getattr(self, attr)) for attr in
+ table_cols])
+ dct['order'] += 1
+ dct['history_modifier'] = user
+ new = self.__class__(**dct)
+ new.save()
+
+ # m2m fields
+ m2m = [field.name for field in model._meta.many_to_many
+ if field.name not in PRIVATE_FIELDS]
+ for field in m2m:
+ for val in getattr(self, field).all():
+ getattr(new, field).add(val)
+ return new
+
+ @classmethod
+ def get_query_owns(cls, user):
+ return Q(base_finds__context_record__operation__scientist=user.
+ ishtaruser.person) | \
+ Q(base_finds__context_record__operation__in_charge=user.
+ ishtaruser.person) | \
+ Q(history_creator=user)
+
+ @classmethod
+ def get_owns(cls, user, menu_filtr=None, limit=None):
+ replace_query = None
+ if menu_filtr and 'contextrecord' in menu_filtr:
+ replace_query = Q(
+ base_finds__context_record=menu_filtr['contextrecord']
+ )
+ owns = super(Find, cls).get_owns(
+ user, replace_query=replace_query,
+ limit=limit)
+ return sorted(
+ owns, key=lambda x: x.cached_label
+ if hasattr(x, 'cached_label') else unicode(x))
+
+ def _generate_cached_label(self):
+ return unicode(self)
+
+ def save(self, *args, **kwargs):
+ super(Find, self).save(*args, **kwargs)
+
+ updated = False
+ self.skip_history_when_saving = True
+ if not self.external_id or self.auto_external_id:
+ external_id = get_external_id('find_external_id', self)
+ if external_id != self.external_id:
+ updated = True
+ self.auto_external_id = True
+ self.external_id = external_id
+ if updated:
+ self._cached_label_checked = False
+ self.save()
+ return
+
+ q = self.base_finds
+ if not self.index and q.count():
+ operation = q.filter(
+ context_record__operation__pk__isnull=False).order_by(
+ '-context_record__operation__start_date')
+ if operation.count():
+ operation = operation.all()[0].context_record.operation
+ q = Find.objects \
+ .filter(base_finds__context_record__operation=operation)
+ if self.pk:
+ q = q.exclude(pk=self.pk)
+ if q.count():
+ self.index = q.aggregate(Max('index'))['index__max'] + 1
+ else:
+ self.index = 1
+ self._cached_label_checked = False
+ self.save()
+ for base_find in self.base_finds.filter(
+ context_record__operation__pk__isnull=False).all():
+ modified = False
+ if not base_find.index:
+ modified = True
+ base_find.index = BaseFind.get_max_index(
+ base_find.context_record.operation) + 1
+ short_id = base_find.short_id()
+ if base_find.cache_short_id != short_id:
+ base_find.cache_short_id = short_id
+ modified = True
+ complete_id = base_find.complete_id()
+ if base_find.cache_complete_id != complete_id:
+ base_find.cache_complete_id = complete_id
+ modified = True
+ if modified:
+ base_find.skip_history_when_saving = True
+ base_find._cached_label_checked = False
+ base_find.save()
+ # if not base_find.material_index:
+ # idx = BaseFind.objects\
+ # .filter(context_record=base_find.context_record,
+ # find__material_types=self.material_type)\
+ # .aggregate(Max('material_index'))
+ # base_find.material_index = \
+ # 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:
+ return
+ # recalculate complete id and external id
+ obj.save()
+
+m2m_changed.connect(base_find_find_changed, sender=Find.base_finds.through)
+
+
+class FindSource(Source):
+ SHOW_URL = 'show-findsource'
+ MODIFY_URL = 'find_source_modify'
+ TABLE_COLS = [
+ 'find__base_finds__context_record__operation',
+ 'find__base_finds__context_record', 'find'] + \
+ Source.TABLE_COLS
+
+ # search parameters
+ 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',
+ 'comment': 'comment__icontains',
+ 'additional_information': 'additional_information__icontains',
+ 'person': 'authors__person__pk',
+ 'find__base_finds__context_record__operation__year':
+ 'find__base_finds__context_record__operation__year',
+ 'find__base_finds__context_record__operation__operation_code':
+ 'find__base_finds__context_record__operation__operation_code',
+ 'find__base_finds__context_record__operation__code_patriarche':
+ 'find__base_finds__context_record__operation__code_patriarche',
+ 'find__datings__period': 'find__datings__period__pk',
+ 'find__description': 'find__description__icontains',
+ }
+
+ class Meta:
+ verbose_name = _(u"Find documentation")
+ verbose_name_plural = _(u"Find documentations")
+ find = models.ForeignKey(Find, verbose_name=_(u"Find"),
+ related_name="source")
+
+ @property
+ def owner(self):
+ return self.find
+
+
+class Property(LightHistorizedItem):
+ find = models.ForeignKey(Find, verbose_name=_(u"Find"))
+ administrative_act = models.ForeignKey(
+ AdministrativeAct, verbose_name=_(u"Administrative act"))
+ person = models.ForeignKey(Person, verbose_name=_(u"Person"),
+ related_name='properties')
+ start_date = models.DateField(_(u"Start date"))
+ end_date = models.DateField(_(u"End date"))
+
+ class Meta:
+ verbose_name = _(u"Property")
+ verbose_name_plural = _(u"Properties")
+
+ def __unicode__(self):
+ return self.person + settings.JOINT + self.find
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
new file mode 100644
index 000000000..b8ed79a62
--- /dev/null
+++ b/archaeological_finds/models_treatments.py
@@ -0,0 +1,568 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# See the file COPYING for details.
+
+import datetime
+
+from django.conf import settings
+from django.contrib.gis.db import models
+from django.db.models import Max, Q
+from django.db.models.signals import post_save, post_delete, pre_delete
+from django.template.defaultfilters import slugify
+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, \
+ OwnPerms, HistoricalRecords, Person, Organization, Source, \
+ ValueGetter, post_save_cache, ShortMenuItem
+from archaeological_warehouse.models import Warehouse, Container
+from archaeological_finds.models_finds import Find, FindBasket
+from archaeological_operations.models import ClosedItem
+
+
+class TreatmentType(GeneralType):
+ order = models.IntegerField(_(u"Order"), default=10)
+ parent = models.ForeignKey("TreatmentType", verbose_name=_(u"Parent type"),
+ blank=True, null=True)
+ virtual = models.BooleanField(_(u"Virtual"))
+ upstream_is_many = models.BooleanField(
+ _(u"Upstream is many"), default=False,
+ help_text=_(
+ u"Check this if for this treatment from many finds you'll get "
+ u"one."))
+ downstream_is_many = models.BooleanField(
+ _(u"Downstream is many"), default=False,
+ help_text=_(
+ u"Check this if for this treatment from one find you'll get "
+ u"many."))
+
+ class Meta:
+ verbose_name = _(u"Treatment type")
+ verbose_name_plural = _(u"Treatment types")
+ ordering = ('label',)
+post_save.connect(post_save_cache, sender=TreatmentType)
+post_delete.connect(post_save_cache, sender=TreatmentType)
+
+
+class TreatmentState(GeneralType):
+ class Meta:
+ verbose_name = _(u"Treatment state type")
+ verbose_name_plural = _(u"Treatment state types")
+ ordering = ('label',)
+post_save.connect(post_save_cache, sender=TreatmentState)
+post_delete.connect(post_save_cache, sender=TreatmentState)
+
+
+class Treatment(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):
+ SHOW_URL = 'show-treatment'
+ TABLE_COLS = ('year', 'index', 'treatment_types__label',
+ 'treatment_state__label',
+ 'label', 'person',
+ 'start_date', 'downstream_cached_label',
+ 'upstream_cached_label')
+ REVERSED_BOOL_FIELDS = ['image__isnull']
+ EXTRA_REQUEST_KEYS = {
+ "label": 'label__icontains',
+ "other_reference": 'other_reference__icontains',
+ "treatment_types": "treatment_types__pk",
+ "downstream_cached_label": "downstream__cached_label",
+ "upstream_cached_label": "upstream__cached_label",
+ 'image': 'image__isnull',
+ }
+ COL_LABELS = {
+ "downstream_cached_label": _(u"Downstream find"),
+ "upstream_cached_label": _(u"Upstream find"),
+ }
+ IMAGE_PREFIX = 'treatment'
+ SLUG = 'treatment'
+ label = models.CharField(_(u"Label"), blank=True, null=True,
+ max_length=200)
+ other_reference = models.CharField(_(u"Other ref."), blank=True, null=True,
+ max_length=200)
+ year = models.IntegerField(_(u"Year"),
+ default=lambda: datetime.datetime.now().year)
+ index = models.IntegerField(_(u"Index"), default=1)
+ file = models.ForeignKey(
+ 'TreatmentFile', related_name='treatments', blank=True, null=True,
+ verbose_name=_(u"Associated request"))
+ treatment_types = models.ManyToManyField(
+ TreatmentType, verbose_name=_(u"Treatment type"))
+ treatment_state = models.ForeignKey(
+ TreatmentState, verbose_name=_(u"State"), blank=True, null=True,
+ )
+ location = models.ForeignKey(
+ Warehouse, verbose_name=_(u"Location"), blank=True, null=True,
+ help_text=_(
+ u"Location where the treatment is done. Target warehouse for "
+ u"a move."))
+ person = models.ForeignKey(
+ Person, verbose_name=_(u"Responsible"), blank=True, null=True,
+ on_delete=models.SET_NULL, related_name='treatments')
+ organization = models.ForeignKey(
+ Organization, verbose_name=_(u"Organization"), blank=True, null=True,
+ on_delete=models.SET_NULL, related_name='treatments')
+ external_id = models.CharField(_(u"External ID"), blank=True, null=True,
+ max_length=200)
+ comment = models.TextField(_(u"Comment"), blank=True, null=True)
+ description = models.TextField(_(u"Description"), blank=True, null=True)
+ goal = models.TextField(_(u"Goal"), blank=True, null=True)
+ start_date = models.DateField(_(u"Start date"), blank=True, null=True)
+ end_date = models.DateField(_(u"Closing date"), blank=True, null=True)
+ container = models.ForeignKey(Container, verbose_name=_(u"Container"),
+ blank=True, null=True)
+ target_is_basket = models.BooleanField(_(u"Target a basket"),
+ default=False)
+ cached_label = models.TextField(_(u"Cached name"), null=True, blank=True)
+ history = HistoricalRecords()
+
+ class Meta:
+ verbose_name = _(u"Treatment")
+ verbose_name_plural = _(u"Treatments")
+ unique_together = ('year', 'index')
+ permissions = (
+ ("view_treatment", ugettext(u"Can view all Treatments")),
+ ("view_own_treatment", ugettext(u"Can view own Treatment")),
+ ("add_own_treatment", ugettext(u"Can add own Treatment")),
+ ("change_own_treatment", ugettext(u"Can change own Treatment")),
+ ("delete_own_treatment", ugettext(u"Can delete own Treatment")),
+ )
+
+ def __unicode__(self):
+ if self.cached_label:
+ return self.cached_label
+ self.skip_history_when_saving = True
+ self.save()
+ return self.cached_label
+
+ @property
+ def short_class_name(self):
+ return _(u"TREATMENT")
+
+ @classmethod
+ def get_query_owns(cls, user):
+ return (Q(history_creator=user) |
+ Q(person__ishtaruser=user.ishtaruser)) \
+ & Q(end_date__isnull=True)
+
+ @classmethod
+ def get_owns(cls, user, menu_filtr=None, limit=None):
+ replace_query = None
+ if menu_filtr:
+ if 'treatmentfile' in menu_filtr:
+ replace_query = Q(file=menu_filtr['treatmentfile'])
+ if 'find' in menu_filtr:
+ q = Q(upstream=menu_filtr['find']) | Q(
+ downstream=menu_filtr['find'])
+ if replace_query:
+ replace_query = replace_query | q
+ else:
+ replace_query = q
+ owns = super(Treatment, cls).get_owns(
+ user, replace_query=replace_query, limit=limit)
+ return sorted(
+ owns, key=lambda x: x.cached_label
+ if hasattr(x, 'cached_label') else unicode(x))
+
+ def _generate_cached_label(self):
+ items = [unicode(getattr(self, k))
+ for k in ['year', 'index', 'other_reference', 'label'] if
+ getattr(self, k)]
+ return u'{} | {}'.format(u"-".join(items), self.treatment_types_lbl())
+
+ def treatment_types_lbl(self):
+ """
+ Treatment types label
+ :return: string
+ """
+ return u" ; ".join([unicode(t) for t in self.treatment_types.all()])
+
+ def pre_save(self):
+ # is not new
+ if self.pk is not None:
+ return
+ self.index = 1
+ q = Treatment.objects.filter(year=self.year)
+ if q.count():
+ self.index = q.all().aggregate(Max('index'))['index__max'] + 1
+
+ def save(self, *args, **kwargs):
+ items, user, extra_args_for_new = [], None, []
+ if "items" in kwargs:
+ items = kwargs.pop('items')
+ if "user" in kwargs:
+ user = kwargs.pop('user')
+ if "extra_args_for_new" in kwargs:
+ extra_args_for_new = kwargs.pop('extra_args_for_new')
+ self.pre_save()
+ super(Treatment, self).save(*args, **kwargs)
+ updated = []
+ if hasattr(items, "items"):
+ items = items.items.all()
+ for item in items:
+ new = item.duplicate(user)
+ item.downstream_treatment = self
+ item.save()
+ new.upstream_treatment = self
+ for k in extra_args_for_new:
+ setattr(new, k, extra_args_for_new[k])
+ new.save()
+ updated.append(new.pk)
+ # update baskets
+ for basket in \
+ FindBasket.objects.filter(items__pk=item.pk).all():
+ basket.items.remove(item)
+ basket.items.add(new)
+ # manage containers
+ for find in Find.objects.filter(upstream_treatment=self).all():
+ if find.container != self.container:
+ find.container = self.container
+ if find.pk in updated:
+ # don't record twice history
+ find.skip_history_when_saving = True
+ find.save()
+
+ @property
+ def associated_filename(self):
+ return "-".join([str(slugify(getattr(self, attr)))
+ for attr in ('year', 'index', 'label')])
+
+post_save.connect(cached_label_changed, sender=Treatment)
+
+
+def pre_delete_treatment(sender, **kwargs):
+ treatment = kwargs.get('instance')
+ for find in Find.objects.filter(upstream_treatment=treatment).all():
+ if find.downstream_treatment:
+ # a new treatment have be done since the deleted treatment
+ # TODO !
+ # raise NotImplemented()
+ pass
+ find.delete()
+ for find in Find.objects.filter(downstream_treatment=treatment).all():
+ find.downstream_treatment = None
+ find.save()
+
+pre_delete.connect(pre_delete_treatment, sender=Treatment)
+
+
+class AbsFindTreatments(models.Model):
+ find = models.ForeignKey(Find, verbose_name=_(u"Find"),
+ related_name='%(class)s_related')
+ treatment = models.ForeignKey(Treatment, verbose_name=_(u"Treatment"),
+ primary_key=True)
+ # primary_key is set to prevent django to ask for an id column
+ # treatment is not a primary key
+ treatment_nb = models.IntegerField(_(u"Order"))
+ TABLE_COLS = ["treatment__" + col for col in Treatment.TABLE_COLS] + \
+ ['treatment_nb']
+ EXTRA_FULL_FIELDS_LABELS = {
+ 'treatment__treatment_type': _(u"Treatment type"),
+ 'treatment__start_date': _(u"Start date"),
+ 'treatment__end_date': _(u"End date"),
+ 'treatment__location': _(u"Location"),
+ 'treatment__container': _(u"Container"),
+ 'treatment__person': _(u"Doer"),
+ 'treatment__upstream': _(u"Related finds"),
+ 'treatment__downstream': _(u"Related finds"),
+ }
+
+ class Meta:
+ abstract = True
+
+ def __unicode__(self):
+ return u"{} - {} [{}]".format(
+ self.find, self.treatment, self.treatment_nb)
+
+
+class FindUpstreamTreatments(AbsFindTreatments):
+ CREATE_SQL = """
+ CREATE VIEW find_uptreatments_tree AS
+ WITH RECURSIVE rel_tree AS (
+ SELECT id AS find_id, upstream_treatment_id, downstream_treatment_id,
+ 1 AS level,
+ array[upstream_treatment_id] AS path_info
+ FROM archaeological_finds_find
+ WHERE upstream_treatment_id is null
+ UNION ALL
+ SELECT c.id AS find_id, c.upstream_treatment_id,
+ c.downstream_treatment_id,
+ p.level + 1, p.path_info||c.upstream_treatment_id
+ FROM archaeological_finds_find c
+ JOIN rel_tree p
+ ON c.upstream_treatment_id = p.downstream_treatment_id
+ )
+ SELECT DISTINCT find_id, path_info, level
+ FROM rel_tree ORDER BY find_id;
+
+ CREATE VIEW find_uptreatments AS
+ SELECT DISTINCT find_id,
+ path_info[nb] AS treatment_id, level - nb + 1 AS treatment_nb
+ FROM (SELECT *, generate_subscripts(path_info, 1) AS nb
+ FROM find_uptreatments_tree) y
+ WHERE path_info[nb] is not NULL
+ ORDER BY find_id, treatment_id;
+
+ -- deactivate deletion
+ CREATE RULE find_uptreatments_del AS ON DELETE TO find_uptreatments
+ DO INSTEAD DELETE FROM archaeological_finds_find where id=NULL;
+ """
+ DELETE_SQL = """
+ DROP VIEW find_uptreatments;
+ DROP VIEW find_uptreatments_tree;
+ """
+ TABLE_COLS = ['treatment__treatment_type',
+ 'treatment__upstream',
+ 'treatment__start_date', 'treatment__end_date',
+ 'treatment__location', 'treatment__container',
+ 'treatment__person', 'treatment_nb']
+
+ # search parameters
+ EXTRA_REQUEST_KEYS = {'find_id': 'find_id'}
+
+ class Meta:
+ managed = False
+ db_table = 'find_uptreatments'
+ unique_together = ('find', 'treatment')
+ ordering = ('find', '-treatment_nb')
+
+
+class FindDownstreamTreatments(AbsFindTreatments):
+ CREATE_SQL = """
+ CREATE VIEW find_downtreatments_tree AS
+ WITH RECURSIVE rel_tree AS (
+ SELECT id AS find_id, downstream_treatment_id, upstream_treatment_id,
+ 1 AS level,
+ array[downstream_treatment_id] AS path_info
+ FROM archaeological_finds_find
+ WHERE downstream_treatment_id is null
+ UNION ALL
+ SELECT c.id AS find_id, c.downstream_treatment_id,
+ c.upstream_treatment_id,
+ p.level + 1, p.path_info||c.downstream_treatment_id
+ FROM archaeological_finds_find c
+ JOIN rel_tree p
+ ON c.downstream_treatment_id = p.upstream_treatment_id
+ )
+ SELECT DISTINCT find_id, path_info, level
+ FROM rel_tree ORDER BY find_id;
+
+ CREATE VIEW find_downtreatments AS
+ SELECT DISTINCT find_id,
+ path_info[nb] AS treatment_id, level - nb + 1 AS treatment_nb
+ FROM (SELECT *, generate_subscripts(path_info, 1) AS nb
+ FROM find_downtreatments_tree) y
+ WHERE path_info[nb] is not NULL
+ ORDER BY find_id, treatment_id;
+
+ -- deactivate deletion
+ CREATE RULE find_downtreatments_del AS ON DELETE TO find_downtreatments
+ DO INSTEAD DELETE FROM archaeological_finds_find where id=NULL;
+ """
+ DELETE_SQL = """
+ DROP VIEW find_downtreatments;
+ DROP VIEW find_downtreatments_tree;
+ """
+ TABLE_COLS = ['treatment__treatment_type',
+ 'treatment__downstream',
+ 'treatment__start_date', 'treatment__end_date',
+ 'treatment__location', 'treatment__container',
+ 'treatment__person', 'treatment_nb']
+
+ # search parameters
+ EXTRA_REQUEST_KEYS = {'find_id': 'find_id'}
+
+ class Meta:
+ managed = False
+ db_table = 'find_downtreatments'
+ unique_together = ('find', 'treatment')
+ ordering = ('find', '-treatment_nb')
+
+
+class FindTreatments(AbsFindTreatments):
+ CREATE_SQL = """
+ CREATE VIEW find_treatments AS
+ SELECT find_id, treatment_id, treatment_nb, TRUE as upstream
+ FROM find_uptreatments
+ UNION
+ SELECT find_id, treatment_id, treatment_nb, FALSE as upstream
+ FROM find_downtreatments
+ ORDER BY find_id, treatment_id, upstream;
+
+ -- deactivate deletion
+ CREATE RULE find_treatments_del AS ON DELETE TO find_treatments
+ DO INSTEAD DELETE FROM archaeological_finds_find where id=NULL;
+ """
+ DELETE_SQL = """
+ DROP VIEW find_treatments;
+ """
+ upstream = models.BooleanField(_(u"Is upstream"))
+
+ class Meta:
+ managed = False
+ db_table = 'find_treatments'
+ unique_together = ('find', 'treatment')
+ ordering = ('find', 'upstream', '-treatment_nb')
+
+
+class TreatmentFileType(GeneralType):
+ class Meta:
+ verbose_name = _(u"Treatment request type")
+ verbose_name_plural = _(u"Treatment request types")
+ ordering = ('label',)
+post_save.connect(post_save_cache, sender=TreatmentFileType)
+post_delete.connect(post_save_cache, sender=TreatmentFileType)
+
+
+class TreatmentFile(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
+ ShortMenuItem):
+ SLUG = 'treatmentfile'
+ SHOW_URL = 'show-treatmentfile'
+ TABLE_COLS = ['type', 'year', 'index', 'internal_reference', 'name']
+ SLUG = 'treatmentfile'
+
+ # fields
+ year = models.IntegerField(_(u"Year"),
+ default=lambda: datetime.datetime.now().year)
+ index = models.IntegerField(_(u"Index"), default=1)
+ internal_reference = models.CharField(_(u"Internal reference"), blank=True,
+ null=True, max_length=200)
+ external_id = models.CharField(_(u"External ID"), blank=True, null=True,
+ max_length=200)
+ name = models.TextField(_(u"Name"), blank=True, null=True)
+ type = models.ForeignKey(TreatmentFileType,
+ verbose_name=_(u"Treatment request type"))
+ in_charge = models.ForeignKey(
+ Person, related_name='treatmentfile_responsability',
+ verbose_name=_(u"Person in charge"), on_delete=models.SET_NULL,
+ blank=True, null=True)
+ applicant = models.ForeignKey(
+ Person, related_name='treatmentfile_applicant',
+ verbose_name=_(u"Applicant"), on_delete=models.SET_NULL,
+ blank=True, null=True)
+ applicant_organisation = models.ForeignKey(
+ Organization, related_name='treatmentfile_applicant',
+ verbose_name=_(u"Applicant organisation"), on_delete=models.SET_NULL,
+ blank=True, null=True)
+ end_date = models.DateField(_(u"Closing date"), null=True, blank=True)
+ creation_date = models.DateField(
+ _(u"Creation date"), default=datetime.date.today, blank=True,
+ null=True)
+ reception_date = models.DateField(_(u'Reception date'), blank=True,
+ null=True)
+ comment = models.TextField(_(u"Comment"), null=True, blank=True)
+ cached_label = models.TextField(_(u"Cached name"), null=True, blank=True)
+ history = HistoricalRecords()
+
+ class Meta:
+ verbose_name = _(u"Treatment request")
+ verbose_name_plural = _(u"Treatment requests")
+ unique_together = ('year', 'index')
+ permissions = (
+ ("view_filetreatment",
+ ugettext(u"Can view all Treatment requests")),
+ ("view_own_filetreatment",
+ ugettext(u"Can view own Treatment request")),
+ ("add_own_filetreatment",
+ ugettext(u"Can add own Treatment request")),
+ ("change_own_filetreatment",
+ ugettext(u"Can change own Treatment request")),
+ ("delete_own_filetreatment",
+ ugettext(u"Can delete own Treatment request")),
+ )
+ ordering = ('cached_label',)
+
+ def __unicode__(self):
+ return self.cached_label
+
+ @property
+ def short_class_name(self):
+ return _(u"Treatment request")
+
+ @classmethod
+ def get_query_owns(cls, user):
+ return (Q(history_creator=user) |
+ Q(in_charge__ishtaruser=user.ishtaruser)) \
+ & Q(end_date__isnull=True)
+
+ @property
+ def associated_filename(self):
+ return "-".join([str(slugify(getattr(self, attr)))
+ for attr in ('year', 'index', 'internal_reference',
+ 'name') if getattr(self, attr)])
+
+ @classmethod
+ def get_owns(cls, user, menu_filtr=None, limit=None):
+ owns = super(TreatmentFile, cls).get_owns(user, limit=limit)
+ return sorted(
+ owns, key=lambda x: x.cached_label
+ if hasattr(x, 'cached_label') else unicode(x))
+
+ def _generate_cached_label(self):
+ items = [unicode(getattr(self, k))
+ for k in ['year', 'index', 'internal_reference', 'name'] if
+ getattr(self, k)]
+ return settings.JOINT.join(items)
+
+ def pre_save(self):
+ # is not new
+ if self.pk is not None:
+ return
+ self.index = 1
+ q = TreatmentFile.objects.filter(year=self.year)
+ if q.count():
+ self.index = q.all().aggregate(Max('index'))['index__max'] + 1
+
+ def save(self, *args, **kwargs):
+ self.pre_save()
+ super(TreatmentFile, self).save(*args, **kwargs)
+
+post_save.connect(cached_label_changed, sender=TreatmentFile)
+
+
+class TreatmentSource(Source):
+ treatment = models.ForeignKey(
+ Treatment, verbose_name=_(u"Treatment"), related_name="source")
+ BOOL_FIELDS = ['duplicate']
+ TABLE_COLS = ['treatment__cached_label'] + Source.TABLE_COLS
+ SHOW_URL = 'show-treatmentsource'
+
+ class Meta:
+ verbose_name = _(u"Treatment documentation")
+ verbose_name_plural = _(u"Treament documentations")
+
+ @property
+ def owner(self):
+ return self.treatment
+
+
+class TreatmentFileSource(Source):
+ treatment_file = models.ForeignKey(
+ TreatmentFile, verbose_name=_(u"Treatment request"),
+ related_name="source")
+ BOOL_FIELDS = ['duplicate']
+ TABLE_COLS = ['treatment_file__cached_label'] + Source.TABLE_COLS
+ SHOW_URL = 'show-treatmentfilesource'
+
+ class Meta:
+ verbose_name = _(u"Treatment request documentation")
+ verbose_name_plural = _(u"Treatment request documentations")
+
+ @property
+ def owner(self):
+ return self.treatment_file
diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html
index 00470906d..05a796a9f 100644
--- a/archaeological_finds/templates/ishtar/sheet_find.html
+++ b/archaeological_finds/templates/ishtar/sheet_find.html
@@ -44,11 +44,9 @@
{% field_li "Width (cm)" item.width %}
{% field_li "Height (cm)" item.height %}
{% field_li "Diameter (cm)" item.diameter %}
+{% field_li "Thickness (cm)" item.thickness %}
{% field_li "Volume (l)" item.volume %}
-
-{% if item.weight %}{% with item.weight|add:' '|add:item.weight_unit as weight %}
-{% field_li "Weight" weight %}
-{% endwith %}{% endif %}
+{% field_li "Weight" item.weight_string %}
{% if item.dimensions_comment %}
</ul>
{% field "Dimensions comment" item.dimensions_comment "<pre>" "</pre>" %}
@@ -56,6 +54,8 @@
{% endif %}
{% field_li "Find number" item.find_number %}
+{% field_li "Minimum number of individuals (MNI)" item.min_number_of_individuals %}
+{% field_li "Point of topographic reference" item.topographic_reference_point %}
{% field_li "Conservatory state" item.conservatory_state %}
{% if item.conservatory_comment %}
</ul>
@@ -73,9 +73,16 @@
{% if item.history_object and item.history_object.CHECK_DICT %}
{% field_li "Checked" item.checked|from_dict:item.history_object.CHECK_DICT %}
{% endif%}
-{% field_li "Container" item.container %}
</ul>
+{% if item.container %}
+<h3>{% trans "Warehouse"%}</h3>
+{% field_detail "Container" item.container %}
+{% field_detail "Responsible warehouse" item.container.responsible %}
+{% field_detail "Location (warehouse)" item.container.location %}
+{% field "Precise localisation" item.container.divisions_lbl %}
+{% endif %}
+
{% if item.upstream_treatment or item.downstream_treatment %}
<h3>{% trans "Treatments"%}</h3>
@@ -85,6 +92,9 @@
<div class='clean-table-wrap'>
<table id='{{window_id}}-upstream'>
<tr>
+ <th>&nbsp;</th>
+ <th>{% trans "Year - index" %}</th>
+ <th>{% trans "Label" %}</th>
<th>{% trans "Type" %}</th>
<th>{% trans "Related finds" %}</th>
<th>{% trans "Doer" %}</th>
@@ -94,7 +104,15 @@
</tr>
{% for items, treatment in item.upstream_treatments %}
<tr>
- <td class='string'>{{ treatment.treatment_type }}</td>
+ <td>
+ <a class="display_details" href="#"
+ onclick="load_window('{% url 'show-treatment' treatment.id %}/');">
+ <i class="fa fa-info-circle" aria-hidden="true"></i>
+ </a>
+ </td>
+ <td class='string'>{{ treatment.year }} - {{treatment.index}}</td>
+ <td class='string'>{{ treatment.label }}</td>
+ <td class='string'>{{ treatment.treatment_types_lbl }}</td>
<td class='item-list'>{% for item in items %}<span>{{item}} {{ item|link_to_window}}</span>{% endfor %}</td>
<td class='string'>{{ treatment.person|default_if_none:"-" }}</td>
<td class='string'>{{ treatment.container|default_if_none:"-" }}</td>
@@ -114,6 +132,9 @@
<div class='clean-table-wrap'>
<table id='{{window_id}}-downstream'>
<tr>
+ <th>&nbsp;</th>
+ <th>{% trans "Year - index" %}</th>
+ <th>{% trans "Label" %}</th>
<th>{% trans "Type" %}</th>
<th>{% trans "Related finds" %}</th>
<th>{% trans "Doer" %}</th>
@@ -123,7 +144,15 @@
</tr>
{% for items, treatment in item.downstream_treatments %}
<tr>
- <td class='string'>{{ treatment.treatment_type }}</td>
+ <td>
+ <a class="display_details" href="#"
+ onclick="load_window('{% url 'show-treatment' treatment.id %}/');">
+ <i class="fa fa-info-circle" aria-hidden="true"></i>
+ </a>
+ </td>
+ <td class='string'>{{ treatment.year }} - {{treatment.index}}</td>
+ <td class='string'>{{ treatment.label }}</td>
+ <td class='string'>{{ treatment.treatment_types_lbl }}</td>
<td class='item-list'>{% for item in items %}<span>{{item}} {{ item|link_to_window}}</span>{% endfor %}</td>
<td class='string'>{{ treatment.person|default_if_none:"" }}</td>
<td class='string'>{{ treatment.container|default_if_none:"-" }}</td>
diff --git a/archaeological_finds/templates/ishtar/sheet_treatment.html b/archaeological_finds/templates/ishtar/sheet_treatment.html
new file mode 100644
index 000000000..9ec9db754
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatment.html
@@ -0,0 +1,53 @@
+{% extends "ishtar/sheet.html" %}
+{% load i18n window_field from_dict link_to_window window_tables window_header humanize %}
+{% load url from future %}
+
+{% block head_title %}{% trans "Treatment" %}{% endblock %}
+{% block content %}
+{% window_nav item window_id 'show-treatment' 'treatment_modify' %}
+
+{% if item.image %}
+<a href='{{item.image.url}}' rel="prettyPhoto" title="{{item.label}}" class='photo'><img src='{{item.thumbnail.url}}'/></a>
+{% endif%}
+
+<p class="window-refs">{{ item.label|default:"" }}</p>
+{% if item.other_reference %}
+<p class="window-refs">{{ item.other_reference }}</p>{% endif %}
+<p class="window-refs">{{ item.year }} - {{ item.index }}</p>
+{% if item.external_id %}
+<p class="window-refs">{{ item.external_id }}</p>{% endif %}
+{% if item.end_date %}
+<p class="window-refs">{% trans "Closed" context "Treatment" %} ({{item.end_date}})</p>
+{% else %}
+<p class="window-refs">{% trans "Active" context "Treatment" %}</p>
+{% endif %}
+
+<ul class='form-flex'>
+ {% field_li_multiple "Treatment type" item.treatment_types %}
+ {% field_li "State" item.treatment_state %}
+ {% field_li_detail "Associated request" item.file %}
+ {% field_li "Location" item.location %}
+ {% field_li "Container" item.container %}
+ {% field_li "Responsible" item.person %}
+ {% field_li "Organization" item.organization %}
+ {% field_li "Start date" item.start_date %}
+ {% field_li "Closing date" item.end_date %}
+</ul>
+{% if item.description or item.comment or item.goal %}
+{% field "Comment" item.comment "<pre>" "</pre>" %}
+{% field "Description" item.description "<pre>" "</pre>" %}
+{% field "Goal" item.goal "<pre>" "</pre>" %}
+{% endif %}
+
+{% trans "Upstream finds" as finds %}
+{% if item.upstream.count %}
+{% dynamic_table_document finds 'finds_for_treatment' 'downstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %}
+{% endif %}
+
+{% trans "Downstream finds" as finds %}
+{% if item.downstream.count %}
+{% dynamic_table_document finds 'finds_for_treatment' 'upstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %}
+{% endif %}
+
+
+{% endblock %}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatment_pdf.html b/archaeological_finds/templates/ishtar/sheet_treatment_pdf.html
new file mode 100644
index 000000000..08df52e97
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatment_pdf.html
@@ -0,0 +1,18 @@
+{% extends "ishtar/sheet_treatment.html" %}
+{% block header %}
+<link rel="stylesheet" href="{{STATIC_URL}}/media/style_basic.css?ver={{VERSION}}" />
+{% endblock %}
+{% block main_head %}
+{{ block.super }}
+<div id="pdfheader">
+ Ishtar &ndash; {{APP_NAME}} &ndash; {{item}}
+</div>
+{% endblock %}
+{%block head_sheet%}{%endblock%}
+{%block main_foot%}
+<div id="pdffooter">
+ &ndash; <pdf:pagenumber/> &ndash;
+</div>
+</body>
+</html>
+{%endblock%}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatment_window.html b/archaeological_finds/templates/ishtar/sheet_treatment_window.html
new file mode 100644
index 000000000..fb0757d10
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatment_window.html
@@ -0,0 +1,3 @@
+{% extends "ishtar/sheet_treatment.html" %}
+{% block main_head %}{%endblock%}
+{% block main_foot %}{%endblock%}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentfile.html b/archaeological_finds/templates/ishtar/sheet_treatmentfile.html
new file mode 100644
index 000000000..097f5defd
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatmentfile.html
@@ -0,0 +1,50 @@
+{% extends "ishtar/sheet.html" %}
+{% load i18n window_field from_dict link_to_window window_tables window_header humanize %}
+{% load url from future %}
+
+{% block head_title %}{% trans "Treatment request" %}{% endblock %}
+{% block content %}
+{% window_nav item window_id 'show-treatmentfile' 'treatmentfile_modify' %}
+
+<p class="window-refs">{{ item.name|default:"" }}</p>
+{% if item.internal_reference %}
+<p class="window-refs">{{ item.internal_reference }}</p>{% endif %}
+<p class="window-refs">{{ item.year }} - {{ item.index }}</p>
+{% if item.external_id %}
+<p class="window-refs">{{ item.external_id }}</p>{% endif %}
+{% if item.end_date %}
+<p class="window-refs">{% trans "Closed" context "Treatment request" %} ({{item.end_date}})</p>
+{% else %}
+<p class="window-refs">{% trans "Active" context "Treatment request" %}</p>
+{% endif %}
+
+<ul class='form-flex'>
+ {% field_li "Type" item.type %}
+ {% field_li_detail "Responsible" item.in_charge %}
+ {% field_li "Creation date" item.creation_date %}
+ {% field_li "Reception date" item.reception_date %}
+ {% field_li "Closing date" item.end_date %}
+</ul>
+{% field "Comment" item.comment "<pre>" "</pre>" %}
+
+{% if item.applicant %}
+<h3>{% trans "Applicant" %}</h3>
+<ul class='form-flex'>
+ {% field_li_detail "Name" item.applicant %}
+</ul>
+{% field "Contact" item.applicant.address_lbl %}
+{% endif %}
+{% if item.applicant_organisation %}
+<h3>{% trans "Applicant organisation" %}</h3>
+<ul class='form-flex'>
+ {% field_li_detail "Name" item.applicant_organisation %}
+</ul>
+{% field "Contact" item.applicant.address_lbl %}
+{% endif %}
+
+{% trans "Treatments" as treatments %}
+{% if item.treatments.count %}
+{% dynamic_table_document treatments 'treatments' 'file' item.pk '' output '' 'treatment' %}
+{% endif %}
+
+{% endblock %}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentfile_pdf.html b/archaeological_finds/templates/ishtar/sheet_treatmentfile_pdf.html
new file mode 100644
index 000000000..be64ff7eb
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatmentfile_pdf.html
@@ -0,0 +1,18 @@
+{% extends "ishtar/sheet_treatmentfile.html" %}
+{% block header %}
+<link rel="stylesheet" href="{{STATIC_URL}}/media/style_basic.css?ver={{VERSION}}" />
+{% endblock %}
+{% block main_head %}
+{{ block.super }}
+<div id="pdfheader">
+ Ishtar &ndash; {{APP_NAME}} &ndash; {{item}}
+</div>
+{% endblock %}
+{%block head_sheet%}{%endblock%}
+{%block main_foot%}
+<div id="pdffooter">
+ &ndash; <pdf:pagenumber/> &ndash;
+</div>
+</body>
+</html>
+{%endblock%}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentfile_window.html b/archaeological_finds/templates/ishtar/sheet_treatmentfile_window.html
new file mode 100644
index 000000000..ac692c304
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatmentfile_window.html
@@ -0,0 +1,3 @@
+{% extends "ishtar/sheet_treatmentfile.html" %}
+{% block main_head %}{%endblock%}
+{% block main_foot %}{%endblock%}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentfilesource.html b/archaeological_finds/templates/ishtar/sheet_treatmentfilesource.html
new file mode 100644
index 000000000..e558296a8
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatmentfilesource.html
@@ -0,0 +1,12 @@
+{% extends "ishtar/sheet_source.html" %}
+{% load i18n window_field window_header link_to_window %}
+
+{% block head_title %}{% trans "Treatment request source" %}{% endblock %}
+
+{% block window_nav %}
+{% window_nav item window_id 'show-treatmentfilesource' 'treatmentfile_source_modify' %}
+{% endblock %}
+
+{% block related %}
+{% field "Related treatment request" item.owner '' item.owner|link_to_window %}
+{% endblock %}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentfilesource_pdf.html b/archaeological_finds/templates/ishtar/sheet_treatmentfilesource_pdf.html
new file mode 100644
index 000000000..d0a0ec8e7
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatmentfilesource_pdf.html
@@ -0,0 +1,18 @@
+{% extends "ishtar/sheet_treatmentfilesource.html" %}
+{% block header %}
+<link rel="stylesheet" href="{{STATIC_URL}}/media/style_basic.css?ver={{VERSION}}" />
+{% endblock %}
+{% block main_head %}
+{{ block.super }}
+<div id="pdfheader">
+Ishtar &ndash; {{APP_NAME}} &ndash; {{item}}
+</div>
+{% endblock %}
+{%block head_sheet%}{%endblock%}
+{%block main_foot%}
+<div id="pdffooter">
+&ndash; <pdf:pagenumber/> &ndash;
+</div>
+</body>
+</html>
+{%endblock%}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentfilesource_window.html b/archaeological_finds/templates/ishtar/sheet_treatmentfilesource_window.html
new file mode 100644
index 000000000..4ebf9c02a
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatmentfilesource_window.html
@@ -0,0 +1,3 @@
+{% extends "ishtar/sheet_treatmentfilesource.html" %}
+{% block main_head %}{%endblock%}
+{% block main_foot %}{%endblock%}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentsource.html b/archaeological_finds/templates/ishtar/sheet_treatmentsource.html
new file mode 100644
index 000000000..0825810ad
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatmentsource.html
@@ -0,0 +1,12 @@
+{% extends "ishtar/sheet_source.html" %}
+{% load i18n window_field window_header link_to_window %}
+
+{% block head_title %}{% trans "Treatment source" %}{% endblock %}
+
+{% block window_nav %}
+{% window_nav item window_id 'show-treatmentsource' 'treatment_source_modify' %}
+{% endblock %}
+
+{% block related %}
+{% field "Related treatment" item.owner '' item.owner|link_to_window %}
+{% endblock %}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentsource_pdf.html b/archaeological_finds/templates/ishtar/sheet_treatmentsource_pdf.html
new file mode 100644
index 000000000..c38764559
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatmentsource_pdf.html
@@ -0,0 +1,18 @@
+{% extends "ishtar/sheet_treatmentsource.html" %}
+{% block header %}
+<link rel="stylesheet" href="{{STATIC_URL}}/media/style_basic.css?ver={{VERSION}}" />
+{% endblock %}
+{% block main_head %}
+{{ block.super }}
+<div id="pdfheader">
+Ishtar &ndash; {{APP_NAME}} &ndash; {{item}}
+</div>
+{% endblock %}
+{%block head_sheet%}{%endblock%}
+{%block main_foot%}
+<div id="pdffooter">
+&ndash; <pdf:pagenumber/> &ndash;
+</div>
+</body>
+</html>
+{%endblock%}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentsource_window.html b/archaeological_finds/templates/ishtar/sheet_treatmentsource_window.html
new file mode 100644
index 000000000..2af5ff708
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/sheet_treatmentsource_window.html
@@ -0,0 +1,3 @@
+{% extends "ishtar/sheet_treatmentsource.html" %}
+{% block main_head %}{%endblock%}
+{% block main_foot %}{%endblock%}
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index a0a9f0a8a..ac87abc48 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -17,18 +17,187 @@
# See the file COPYING for details.
+import datetime
+
from django.conf import settings
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase
from ishtar_common.models import ImporterType, IshtarUser, ImporterColumn,\
FormaterType, ImportTarget
-from archaeological_finds import models
+from ishtar_common.models import Person
+from archaeological_context_records.models import ContextRecord
+from archaeological_finds import models, views
+from archaeological_warehouse.models import Warehouse, WarehouseType
from archaeological_context_records.tests import ImportContextRecordTest, \
ContextRecordInit
from ishtar_common import forms_common
+from ishtar_common.tests import WizardTest, WizardTestFormData as FormData
+
+
+class FindInit(ContextRecordInit):
+ test_context_records = False
+
+ 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):
+ self.base_finds = []
+
+ default = {'label': "Base find"}
+ if not data_base.get('history_modifier'):
+ data_base['history_modifier'] = self.get_default_user()
+ 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)
+
+ data["history_modifier"] = data_base["history_modifier"]
+ find = models.Find.objects.create(**data)
+ find.base_finds.add(base_find)
+ self.finds.append(find)
+ return self.finds, self.base_finds
+
+ def get_default_find(self, force=False):
+ finds, base_finds = self.create_finds(force=force)
+ if force:
+ return finds[-1], base_finds[-1]
+ return finds[0], base_finds[0]
+
+ def tearDown(self):
+ super(FindInit, self).tearDown()
+ if hasattr(self, 'finds'):
+ for f in self.finds:
+ try:
+ f.delete()
+ except:
+ pass
+ self.finds = []
+ if hasattr(self, 'base_finds'):
+ for f in self.base_finds:
+ try:
+ f.delete()
+ except:
+ pass
+ self.base_find = []
+
+
+class AFindWizardCreationTest(WizardTest, FindInit, TestCase):
+ # TODO: first to be run because of strange init things...
+ fixtures = [settings.ROOT_PATH +
+ '../fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../ishtar_common/fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../archaeological_files/fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../archaeological_operations/fixtures/initial_data-fr.json',
+ settings.ROOT_PATH +
+ '../archaeological_finds/fixtures/initial_data-fr.json',
+ settings.ROOT_PATH +
+ '../archaeological_warehouse/fixtures/initial_data-fr.json',
+ ]
+ url_name = 'find_creation'
+ wizard_name = 'find_wizard'
+ steps = views.find_creation_steps
+ form_datas = [
+ FormData(
+ 'Find creation',
+ form_datas={
+ 'selecrecord-find_creation': {'pk': 1},
+ 'find-find_creation': {
+ 'label': 'hop',
+ 'checked': 'NC',
+ 'check_date': '2016-01-01'
+ },
+ 'dating-find_creation': []
+ },
+ )
+ ]
+
+ def pre_wizard(self):
+ cr = self.create_context_record(
+ data={'parcel': self.create_parcel()[-1]}, force=True)[-1]
+
+ self.form_datas[0].form_datas['selecrecord-find_creation']['pk'] = cr.pk
+ self.find_number = models.Find.objects.count()
+ self.basefind_number = models.BaseFind.objects.count()
+ super(AFindWizardCreationTest, self).pre_wizard()
+
+ def post_wizard(self):
+ self.assertEqual(models.BaseFind.objects.count(),
+ self.basefind_number + 1)
+ self.assertEqual(models.Find.objects.count(),
+ self.find_number + 1)
+
+
+class ATreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
+ # TODO: first to be run because of strange init things...
+ fixtures = [settings.ROOT_PATH +
+ '../fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../ishtar_common/fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../archaeological_files/fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../archaeological_operations/fixtures/initial_data-fr.json',
+ settings.ROOT_PATH +
+ '../archaeological_finds/fixtures/initial_data-fr.json',
+ settings.ROOT_PATH +
+ '../archaeological_warehouse/fixtures/initial_data-fr.json',
+ ]
+ url_name = 'treatment_creation'
+ wizard_name = 'treatment_wizard'
+ steps = views.treatment_wizard_steps
+ form_datas = [
+ FormData(
+ 'Move treament',
+ form_datas={
+ 'file-treatment_creation': {},
+ 'basetreatment-treatment_creation': {
+ 'treatment_type': 4, # move
+ 'person': 1, # doer
+ 'location': 1, # associated warehouse
+ 'year': 2016,
+ 'target_is_basket': False
+ },
+ 'selecfind-treatment_creation': {
+ 'pk': 1,
+ 'resulting_pk': 1
+ }
+ },
+ ignored=('resultfind-treatment_creation',
+ 'selecbasket-treatment_creation',
+ 'resultfinds-treatment_creation'))
+ ]
+
+ def pre_wizard(self):
+ q = Warehouse.objects.filter(pk=1)
+ if not q.count():
+ warehouse = Warehouse.objects.create(
+ name="default", warehouse_type=WarehouseType.objects.all()[0])
+ warehouse.id = 1
+ warehouse.save()
+ q = Person.objects.filter(pk=1)
+ if not q.count():
+ person = Person.objects.create(name="default")
+ person.id = 1
+ person.save()
+ find, base_find = self.get_default_find(force=True)
+ self.form_datas[0].form_datas['selecfind-treatment_creation'][
+ 'pk'] = find.pk
+ self.form_datas[0].form_datas['selecfind-treatment_creation'][
+ 'resulting_pk'] = find.pk
+ self.treatment_number = models.Treatment.objects.count()
+ super(ATreatmentWizardCreationTest, self).pre_wizard()
+
+ def post_wizard(self):
+ self.assertEqual(models.Treatment.objects.count(),
+ self.treatment_number + 1)
class ImportFindTest(ImportContextRecordTest):
@@ -94,52 +263,6 @@ class ImportFindTest(ImportContextRecordTest):
self.assertEqual(len(images), 1)
-class FindInit(ContextRecordInit):
- test_context_records = False
-
- 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):
- self.base_finds = []
-
- default = {'label': "Base find"}
- if not data_base.get('history_modifier'):
- data_base['history_modifier'] = self.get_default_user()
- 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)
-
- data["history_modifier"] = data_base["history_modifier"]
- find = models.Find.objects.create(**data)
- find.base_finds.add(base_find)
- self.finds.append(find)
- return self.finds, self.base_finds
-
- def get_default_find(self):
- return self.create_finds()[0]
-
- def tearDown(self):
- super(FindInit, self).tearDown()
- if hasattr(self, 'finds'):
- for f in self.finds:
- try:
- f.delete()
- except:
- pass
- self.finds = []
- if hasattr(self, 'base_finds'):
- for f in self.base_finds:
- try:
- f.delete()
- except:
- pass
- self.base_find = []
-
-
class FindTest(FindInit, TestCase):
fixtures = [settings.ROOT_PATH +
'../fixtures/initial_data.json',
@@ -201,12 +324,13 @@ class PackagingTest(FindInit, TestCase):
def testPackaging(self):
treatment_type = models.TreatmentType.objects.get(txt_idx='packaging')
- treatment = models.Treatment(treatment_type=treatment_type)
+ treatment = models.Treatment()
items_nb = models.Find.objects.count()
treatment.save(user=self.get_default_user(), items=self.basket)
self.assertEqual(items_nb + self.basket.items.count(),
models.Find.objects.count(),
msg="Packaging doesn't generate enough new finds")
+ treatment.treatment_types.add(treatment_type)
# new version of the find is in the basket
for item in self.basket.items.all():
self.assertNotIn(
diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py
index 17cc4028f..7be07d015 100644
--- a/archaeological_finds/urls.py
+++ b/archaeological_finds/urls.py
@@ -17,7 +17,7 @@
# See the file COPYING for details.
-from django.conf.urls.defaults import *
+from django.conf.urls import *
from ishtar_common.wizards import check_rights
import views
@@ -88,8 +88,138 @@ urlpatterns = patterns(
url(r'^find_basket_deletion/$',
check_rights(['change_find', 'change_own_find'])(
views.DeleteFindBasketView.as_view()), name='delete_findbasket'),
- url(r'treatment_creation/(?P<step>.+)?$',
- views.treatment_creation_wizard, name='treatment_creation'),
+
+ url(r'^treatment_creation/(?P<step>.+)?$',
+ check_rights(['change_find', 'change_own_find'])(
+ views.treatment_creation_wizard), name='treatment_creation'),
+ url(r'^treatment_modification/(?P<step>.+)?$',
+ check_rights(['change_find', 'change_own_find'])(
+ views.treatment_modification_wizard),
+ name='treatment_modification'),
+ url(r'treatment_modify/(?P<pk>.+)/$',
+ views.treatment_modify, name='treatment_modify'),
+ url(r'^treatment_search/(?P<step>.+)?$',
+ check_rights(['view_find', 'view_own_find'])(
+ views.treatment_search_wizard), name='treatment_search'),
+ url(r'^treatment_deletion/(?P<step>.+)?$',
+ check_rights(['change_find', 'change_own_find'])(
+ views.treatment_deletion_wizard), name='treatment_deletion'),
+
+ url(r'^show-treatmentsource(?:/(?P<pk>.+))?/(?P<type>.+)?$',
+ views.show_treatmentsource,
+ name=models.TreatmentSource.SHOW_URL),
+ url(r'^get-treatmentsource/(?P<type>.+)?$',
+ views.get_treatmentsource,
+ name='get-treatmentsource'),
+ url(r'^treatment_source_search/(?P<step>.+)?$',
+ check_rights(['view_treatment', 'view_own_treatment'])(
+ views.treatment_source_search_wizard),
+ name='treatment_source_search'),
+ url(r'^treatment_source_creation/(?P<step>.+)?$',
+ check_rights(['change_treatment', 'change_own_treatment'])(
+ views.treatment_source_creation_wizard),
+ name='treatment_source_creation'),
+ url(r'^treatment_source_modification/(?P<step>.+)?$',
+ check_rights(['change_treatment', 'change_own_treatment'])(
+ views.treatment_source_modification_wizard),
+ name='treatment_source_modification'),
+ url(r'^treatment_source_modify/(?P<pk>.+)/$',
+ views.treatment_source_modify, name='treatment_source_modify'),
+ url(r'^treatment_source_deletion/(?P<step>.+)?$',
+ check_rights(['change_treatment', 'change_own_treatment'])(
+ views.treatment_source_deletion_wizard),
+ name='treatment_source_deletion'),
+
+ url(r'^treatment_admacttreatment_search/(?P<step>.+)?$',
+ check_rights(['change_administrativeact'])(
+ views.treatment_administrativeact_search_wizard),
+ name='treatment_admacttreatment_search'),
+ url(r'^treatment_admacttreatment/(?P<step>.+)?$',
+ check_rights(['change_administrativeact'])(
+ views.treatment_administrativeact_wizard),
+ name='treatment_admacttreatment'),
+ url(r'^treatment_admacttreatment_modification/(?P<step>.+)?$',
+ check_rights(['change_administrativeact'])(
+ views.treatment_administrativeact_modification_wizard),
+ name='treatment_admacttreatment_modification'),
+ url(r'^treatment_administrativeacttreatment_modify/(?P<pk>.+)/$',
+ views.treatment_administrativeacttreatment_modify,
+ name='treatment_administrativeacttreatment_modify'),
+ url(r'^treatment_admacttreatment_deletion/(?P<step>.+)?$',
+ check_rights(['change_administrativeact'])(
+ views.treatment_admacttreatment_deletion_wizard),
+ name='treatment_admacttreatment_deletion'),
+ url(r'^get-administrativeacttreatment/(?P<type>.+)?$',
+ views.get_administrativeacttreatment,
+ name='get-administrativeacttreatment'),
+
+ url(r'^treatmentfle_admacttreatmentfle_search/(?P<step>.+)?$',
+ check_rights(['change_administrativeact'])(
+ views.treatmentfile_admacttreatmentfile_search_wizard),
+ name='treatmentfle_admacttreatmentfle_search'),
+ url(r'^treatmentfle_admacttreatmentfle_modification/(?P<step>.+)?$',
+ check_rights(['change_administrativeact'])(
+ views.treatmentfile_admacttreatmentfile_modification_wizard),
+ name='treatmentfle_admacttreatmentfle_modification'),
+ url(r'^treatmentfle_admacttreatmentfle/(?P<step>.+)?$',
+ check_rights(['change_administrativeact'])(
+ views.treatmentfile_admacttreatmentfile_wizard),
+ name='treatmentfle_admacttreatmentfle'),
+ url(r'^treatmentfile_administrativeacttreatmentfile_modify/(?P<pk>.+)/$',
+ views.treatmentfile_administrativeacttreatmentfile_modify,
+ name='treatmentfile_administrativeacttreatmentfile_modify'),
+ url(r'^treatmentfle_admacttreatmentfle_deletion/(?P<step>.+)?$',
+ check_rights(['change_administrativeact'])(
+ views.treatmentfile_admacttreatmentfile_deletion_wizard),
+ name='treatmentfle_admacttreatmentfle_deletion'),
+
+ url(r'^show-treatmentfilesource(?:/(?P<pk>.+))?/(?P<type>.+)?$',
+ views.show_treatmentfilesource,
+ name=models.TreatmentFileSource.SHOW_URL),
+ url(r'^get-treatmentfilesource/(?P<type>.+)?$',
+ views.get_treatmentfilesource,
+ name='get-treatmentfilesource'),
+ url(r'^treatmentfile_source_search/(?P<step>.+)?$',
+ check_rights(['view_treatmentfile', 'view_own_treatmentfile'])(
+ views.treatmentfile_source_search_wizard),
+ name='treatmentfile_source_search'),
+ url(r'^treatmentfile_source_creation/(?P<step>.+)?$',
+ check_rights(['change_treatmentfile', 'change_own_treatmentfile'])(
+ views.treatmentfile_source_creation_wizard),
+ name='treatmentfile_source_creation'),
+ url(r'^treatmentfile_source_modification/(?P<step>.+)?$',
+ check_rights(['change_treatmentfile', 'change_own_treatmentfile'])(
+ views.treatmentfile_source_modification_wizard),
+ name='treatmentfile_source_modification'),
+ url(r'^treatmentfile_source_modify/(?P<pk>.+)/$',
+ views.treatmentfile_source_modify, name='treatmentfile_source_modify'),
+ url(r'^treatmentfile_source_deletion/(?P<step>.+)?$',
+ check_rights(['change_treatmentfile', 'change_own_treatmentfile'])(
+ views.treatmentfile_source_deletion_wizard),
+ name='treatmentfile_source_deletion'),
+
+
+ url(r'^treatmentfle_search/(?P<step>.+)?$',
+ check_rights(['change_find', 'change_own_find'])(
+ views.treatmentfile_search_wizard),
+ name='treatmentfile_search'),
+ url(r'treatmentfle_creation/(?P<step>.+)?$',
+ check_rights(['change_find', 'change_own_find'])(
+ views.treatmentfile_creation_wizard),
+ name='treatmentfile_creation'),
+ url(r'treatmentfle_modification/(?P<step>.+)?$',
+ check_rights(['change_find', 'change_own_find'])(
+ views.treatmentfile_modification_wizard),
+ name='treatmentfile_modification'),
+ url(r'^treatmentfile_modify/(?P<pk>.+)/$',
+ views.treatmentfile_modify, name='treatmentfile_modify'),
+ url(r'^treatmentfle_deletion/(?P<step>.+)?$',
+ check_rights(['change_find', 'change_own_find'])(
+ views.treatmentfile_deletion_wizard),
+ name='treatmentfile_deletion'),
+ url(r'get-administrativeacttreatmentfile/(?P<type>.+)?$',
+ views.get_administrativeacttreatmentfile,
+ name='get-administrativeacttreatmentfile'),
url(r'get-upstreamtreatment/(?P<type>.+)?$', views.get_upstreamtreatment,
name='get-upstreamtreatment'),
url(r'get-downstreamtreatment/(?P<type>.+)?$',
@@ -107,6 +237,8 @@ urlpatterns += patterns(
name='autocomplete-preservationtype'),
url(r'autocomplete-integritytype/$', 'autocomplete_integritytype',
name='autocomplete-integritytype'),
+ url(r'autocomplete-treatmentfile/$', 'autocomplete_treatmentfile',
+ name='autocomplete-treatmentfile'),
url(r'get-find/own/(?P<type>.+)?$', 'get_find',
name='get-own-find', kwargs={'force_own': True}),
url(r'get-find/(?P<type>.+)?$', 'get_find',
@@ -115,6 +247,10 @@ urlpatterns += patterns(
name='get-own-find-for-ope', kwargs={'force_own': True}),
url(r'get-find-for-ope/(?P<type>.+)?$', 'get_find_for_ope',
name='get-find-for-ope'),
+ url(r'get-find-for-treatment/own/(?P<type>.+)?$', 'get_find_for_treatment',
+ name='get-own-find-for-treatment', kwargs={'force_own': True}),
+ url(r'get-find-for-treatment/(?P<type>.+)?$', 'get_find_for_treatment',
+ name='get-find-for-treatment'),
url(r'get-find-full/own/(?P<type>.+)?$', 'get_find',
name='get-own-find-full', kwargs={'full': True, 'force_own': True}),
url(r'get-find-full/(?P<type>.+)?$', 'get_find',
@@ -127,14 +263,44 @@ urlpatterns += patterns(
url(r'get-findsource-full/(?P<type>.+)?$',
'get_findsource', name='get-findsource-full',
kwargs={'full': True}),
- url(r'show-findsource(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_findsource',
+ url(r'^show-findsource(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_findsource',
name=models.FindSource.SHOW_URL),
- url(r'show-find/basket-(?P<pk>.+)/(?P<type>.+)?$', 'show_findbasket',
+ url(r'^show-find/basket-(?P<pk>.+)/(?P<type>.+)?$', 'show_findbasket',
name='show-findbasket'),
- url(r'show-find(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_find',
+ url(r'^show-find(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_find',
name=models.Find.SHOW_URL),
- url(r'show-historized-find/(?P<pk>.+)?/(?P<date>.+)?$',
+ url(r'^show-historized-find/(?P<pk>.+)?/(?P<date>.+)?$',
'show_find', name='show-historized-find'),
- url(r'revert-find/(?P<pk>.+)/(?P<date>.+)$',
+ url(r'^revert-find/(?P<pk>.+)/(?P<date>.+)$',
'revert_find', name='revert-find'),
+ url(r'^get-treatment/(?P<type>.+)?$',
+ 'get_treatment', name='get-treatment'),
+ url(r'get-treatment-shortcut/(?P<type>.+)?$',
+ 'get_treatment', name='get-treatment-shortcut',
+ kwargs={'full': 'shortcut'}),
+ url(r'^show-treatment(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_treatment',
+ name=models.Treatment.SHOW_URL),
+ url(r'get-treatmentfile/(?P<type>.+)?$',
+ 'get_treatmentfile', name='get-treatmentfile'),
+ url(r'get-treatmentfile-shortcut/(?P<type>.+)?$',
+ 'get_treatmentfile', name='get-treatmentfile-shortcut',
+ kwargs={'full': 'shortcut'}),
+ url(r'^show-treatmentfile(?:/(?P<pk>.+))?/(?P<type>.+)?$',
+ 'show_treatmentfile',
+ name=models.TreatmentFile.SHOW_URL),
+ # url(r'show-treatmentfile(?:/(?P<pk>.+))?/(?P<type>.+)?$',
+ # 'show_treatmentfile',
+ # name=models.TreatmentFile.SHOW_URL),
+)
+
+urlpatterns += patterns(
+ 'archaeological_operations.views',
+ url(r'^treatment_administrativeact_document/$',
+ 'administrativeactfile_document',
+ name='treatment-administrativeact-document',
+ kwargs={'treatment': True}),
+ url(r'^treatmentfle_administrativeact_document/$',
+ 'administrativeactfile_document',
+ name='treatmentfle-administrativeact-document',
+ kwargs={'treatment_file': True}),
)
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index 89babe9b7..01e88c1b7 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -17,24 +17,32 @@
# See the file COPYING for details.
+import json
+
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import reverse
-from django.http import HttpResponseRedirect
+from django.db.models import Q
+from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _
from django.views.generic import TemplateView
from django.views.generic.edit import CreateView, FormView
+from ishtar_common.models import IshtarUser
+from archaeological_operations.models import AdministrativeAct
+
from ishtar_common.forms import FinalForm
from ishtar_common.forms_common import SourceForm, AuthorFormset, \
SourceDeletionForm
-from ishtar_common.models import IshtarUser
+from archaeological_operations.forms import FinalAdministrativeActDeleteForm
from archaeological_context_records.forms \
import RecordFormSelection as RecordFormSelectionTable
from ishtar_common.views import get_item, show_item, revert_item, \
get_autocomplete_generic, IshtarMixin, LoginRequiredMixin
+
from ishtar_common.wizards import SearchWizard
+from archaeological_operations.wizards import AdministrativeActDeletionWizard
from wizards import *
from forms import *
@@ -45,6 +53,57 @@ get_find = get_item(models.Find, 'get_find', 'find')
get_find_for_ope = get_item(models.Find, 'get_find', 'find',
own_table_cols=models.Find.TABLE_COLS_FOR_OPE)
+get_find_for_treatment = get_item(
+ models.Find, 'get_find', 'find',
+ own_table_cols=models.Find.TABLE_COLS_FOR_OPE, base_request={})
+
+show_treatment = show_item(models.Treatment, 'treatment')
+get_treatment = get_item(models.Treatment, 'get_treatment', 'treatment')
+
+get_administrativeacttreatment = get_item(
+ AdministrativeAct, 'get_administrativeacttreatment',
+ 'administrativeacttreatment',
+ base_request={"treatment__pk__isnull": False})
+
+show_treatmentfile = show_item(models.TreatmentFile, 'treatmentfile')
+get_treatmentfile = get_item(models.TreatmentFile, 'get_treatmentfile',
+ 'treatmentfile')
+
+get_administrativeacttreatmentfile = get_item(
+ AdministrativeAct, 'get_administrativeacttreatmentfile',
+ 'administrativeacttreatmentfile',
+ base_request={"treatment_file__pk__isnull": False})
+
+
+def autocomplete_treatmentfile(request):
+ if not request.user.has_perm('ishtar_common.view_treatment',
+ models.Treatment) and \
+ not request.user.has_perm('ishtar_common.view_own_treatment',
+ models.Treatment) \
+ and not request.user.ishtaruser.has_right('treatmentfile_search',
+ session=request.session):
+ return HttpResponse(mimetype='text/plain')
+ if not request.GET.get('term'):
+ return HttpResponse(mimetype='text/plain')
+ q = request.GET.get('term')
+ query = Q()
+ for q1 in q.split(' '):
+ for q in q1.split(' '):
+ extra = Q(internal_reference__icontains=q) | \
+ Q(external_id__icontains=q) | \
+ Q(name__icontains=q)
+ try:
+ int(q)
+ extra = extra | Q(year=q) | Q(index=q)
+ except ValueError:
+ pass
+ query = query & extra
+ limit = 20
+ files = models.TreatmentFile.objects.filter(query)[:limit]
+ data = json.dumps([{'id': file.pk, 'value': unicode(file)}
+ for file in files])
+ return HttpResponse(data, mimetype='text/plain')
+
show_findsource = show_item(models.FindSource, 'findsource')
get_findsource = get_item(models.FindSource, 'get_findsource', 'findsource')
@@ -53,11 +112,15 @@ revert_find = revert_item(models.Find)
show_findbasket = show_item(models.FindBasket, 'findbasket')
-find_creation_wizard = FindWizard.as_view([
+find_creation_steps = [
('selecrecord-find_creation', RecordFormSelectionTable),
('find-find_creation', FindForm),
('dating-find_creation', DatingFormSet),
- ('final-find_creation', FinalForm)],
+ ('final-find_creation', FinalForm)
+]
+
+find_creation_wizard = FindWizard.as_view(
+ find_creation_steps,
label=_(u"New find"),
url_name='find_creation',)
@@ -282,28 +345,219 @@ get_downstreamtreatment = get_item(
models.FindDownstreamTreatments, 'get_downstreamtreatment',
'downtreatment')
-treatment_creation_wizard = TreatmentWizard.as_view([
+treatment_wizard_steps = [
+ ('file-treatment_creation', TreatmentFormFileChoice),
('basetreatment-treatment_creation', BaseTreatmentForm),
('selecfind-treatment_creation', UpstreamFindFormSelection),
- ('resultfind-treatment_creation', ResultFindForm),
- ('resultfinds-treatment_creation', ResultFindFormSet),
- ('final-treatment_creation', FinalForm)],
+ ('selecbasket-treatment_creation', SelectFindBasketForm),
+ # ('resultfind-treatment_creation', ResultFindForm),
+ # ('resultfinds-treatment_creation', ResultFindFormSet),
+ ('final-treatment_creation', FinalForm)]
+
+treatment_search_wizard = SearchWizard.as_view([
+ ('general-treatment_search', TreatmentFormSelection)],
+ label=_(u"Treatment search"),
+ url_name='treatment_search',)
+
+treatment_creation_wizard = TreatmentWizard.as_view(
+ treatment_wizard_steps,
condition_dict={
- 'selecfind-treatment_creation':
- check_not_exist('basetreatment-treatment_creation',
- 'basket'),
- 'resultfinds-treatment_creation':
- check_type_field('basetreatment-treatment_creation',
- 'treatment_type', models.TreatmentType,
- 'downstream_is_many'),
- 'resultfind-treatment_creation':
- check_type_field('basetreatment-treatment_creation',
- 'treatment_type', models.TreatmentType,
- 'upstream_is_many')},
+ 'selecfind-treatment_creation':
+ check_value('basetreatment-treatment_creation',
+ 'target_is_basket', False),
+ 'selecbasket-treatment_creation':
+ check_value('basetreatment-treatment_creation',
+ 'target_is_basket', True),
+ # 'resultfinds-treatment_creation':
+ # check_type_field('basetreatment-treatment_creation',
+ # 'treatment_type', models.TreatmentType,
+ # 'downstream_is_many'),
+ # 'resultfind-treatment_creation':
+ # check_type_field('basetreatment-treatment_creation',
+ # 'treatment_type', models.TreatmentType,
+ # 'upstream_is_many')
+ },
label=_(u"New treatment"),
url_name='treatment_creation',)
-"""
+treatment_modification_wizard = TreatmentModificationWizard.as_view(
+ [('selec-treatment_modification', TreatmentFormSelection),
+ ('file-treatment_modification', TreatmentFormFileChoice),
+ ('basetreatment-treatment_modification', TreatmentModifyForm),
+ ('final-treatment_modification', FinalForm)],
+ label=_(u"Modify"),
+ url_name='treatment_modification',
+)
+
+
+def treatment_modify(request, pk):
+ treatment_modification_wizard(request)
+ TreatmentModificationWizard.session_set_value(
+ request, 'selec-treatment_modification', 'pk', pk, reset=True)
+ return redirect(reverse(
+ 'treatment_modification',
+ kwargs={'step': 'basetreatment-treatment_modification'}))
+
+
+treatment_deletion_wizard = TreatmentDeletionWizard.as_view([
+ ('selec-treatment_deletion', TreatmentFormSelection),
+ ('final-treatment_deletion', TreatmentDeletionForm)],
+ label=_(u"Treatment deletion"),
+ url_name='treatment_deletion',)
+
+treatment_administrativeact_search_wizard = \
+ SearchWizard.as_view([
+ ('selec-treatment_admacttreatment_search',
+ AdministrativeActTreatmentFormSelection)],
+ label=_(u"Treatment: search administrative act"),
+ url_name='treatment_admacttreatment_search',)
+
+treatment_administrativeact_wizard = \
+ TreatmentAdministrativeActWizard.as_view([
+ ('selec-treatment_admacttreatment', TreatmentFormSelection),
+ ('administrativeact-treatment_admacttreatment',
+ AdministrativeActTreatmentForm),
+ ('final-treatment_admacttreatment', FinalForm)],
+ label=_(u"Treatment: new administrative act"),
+ url_name='treatment_admacttreatment',)
+
+treatment_administrativeact_modification_wizard = \
+ TreatmentEditAdministrativeActWizard.as_view([
+ ('selec-treatment_admacttreatment_modification',
+ AdministrativeActTreatmentFormSelection),
+ ('administrativeact-treatment_admacttreatment_modification',
+ AdministrativeActTreatmentModifForm),
+ ('final-treatment_admacttreatment_modification', FinalForm)],
+ label=_(u"Treatment: administrative act modification"),
+ url_name='treatment_admacttreatment_modification',)
+
+treatment_admacttreatment_deletion_wizard = \
+ AdministrativeActDeletionWizard.as_view([
+ ('selec-treatment_admacttreatment_deletion',
+ AdministrativeActTreatmentFormSelection),
+ ('final-treatment_admacttreatment_deletion',
+ FinalAdministrativeActDeleteForm)],
+ label=_(u"Treatment: administrative act deletion"),
+ url_name='treatment_admacttreatment_deletion',)
+
+
+def treatment_administrativeacttreatment_modify(request, pk):
+ treatment_administrativeact_modification_wizard(request)
+ TreatmentEditAdministrativeActWizard.session_set_value(
+ request,
+ 'selec-treatment_admacttreatment_modification',
+ 'pk', pk, reset=True)
+ return redirect(
+ reverse(
+ 'treatment_admacttreatment_modification',
+ kwargs={
+ 'step':
+ 'administrativeact-treatment_admacttreatment_modification'
+ }))
+
+
+# treatment request
+
+treatmentfile_search_wizard = SearchWizard.as_view([
+ ('general-treatmentfile_search', TreatmentFileFormSelection)],
+ label=_(u"Treatment request search"),
+ url_name='treatmentfile_search',)
+
+treatmentfile_wizard_steps = [
+ ('treatmentfile-treatmentfile_creation', TreatmentFileForm),
+ ('final-treatmentfile_creation', FinalForm)]
+
+
+treatmentfile_creation_wizard = TreatmentFileWizard.as_view(
+ treatmentfile_wizard_steps,
+ label=_(u"New treatment request"),
+ url_name='treatmentfile_creation',)
+
+treatmentfile_modification_wizard = TreatmentFileModificationWizard.as_view(
+ [('selec-treatmentfile_modification', TreatmentFileFormSelection),
+ ('treatmentfile-treatmentfile_modification', TreatmentFileModifyForm),
+ ('final-treatmentfile_modification', FinalForm)],
+ label=_(u"Modify"),
+ url_name='treatmentfile_modification',
+)
+
+
+def treatmentfile_modify(request, pk):
+ treatmentfile_modification_wizard(request)
+ TreatmentFileModificationWizard.session_set_value(
+ request, 'selec-treatmentfile_modification', 'pk', pk, reset=True)
+ return redirect(reverse(
+ 'treatmentfile_modification',
+ kwargs={'step': 'treatmentfile-treatmentfile_modification'}))
+
+treatmentfile_deletion_wizard = TreatmentFileDeletionWizard.as_view([
+ ('selec-treatmentfile_deletion', TreatmentFileFormSelection),
+ ('final-treatmentfile_deletion', TreatmentFileDeletionForm)],
+ label=_(u"Treatment request deletion"),
+ url_name='treatmentfile_deletion',)
+
+treatmentfile_admacttreatmentfile_search_wizard = \
+ SearchWizard.as_view([
+ ('selec-treatmentfle_admacttreatmentfle_search',
+ AdministrativeActTreatmentFileFormSelection)],
+ label=_(u"Treatment request: search administrative act"),
+ url_name='treatmentfle_admacttreatmentfle_search',)
+
+
+treatmentfile_admacttreatmentfile_wizard = \
+ TreatmentFileAdministrativeActWizard.as_view([
+ ('selec-treatmentfle_admacttreatmentfle', TreatmentFileFormSelection),
+ ('admact-treatmentfle_admacttreatmentfle',
+ AdministrativeActTreatmentFileForm),
+ ('final-treatmentfle_admacttreatmentfle', FinalForm)],
+ label=_(u"Treatment request: new administrative act"),
+ url_name='treatmentfle_admacttreatmentfle',)
+
+treatmentfile_admacttreatmentfile_modification_wizard = \
+ TreatmentFileEditAdministrativeActWizard.as_view([
+ ('selec-treatmentfle_admacttreatmentfle_modification',
+ AdministrativeActTreatmentFileFormSelection),
+ ('admact-treatmentfle_admacttreatmentfle_modification',
+ AdministrativeActTreatmentFileModifForm),
+ ('final-treatmentfle_admacttreatmentfle_modification', FinalForm)],
+ label=_(u"Treatment request: administrative act modification"),
+ url_name='treatmentfle_admacttreatmentfle_modification',)
+
+treatmentfile_admacttreatmentfile_deletion_wizard = \
+ AdministrativeActDeletionWizard.as_view([
+ ('selec-treatmentfle_admacttreatmentfle_deletion',
+ AdministrativeActTreatmentFileFormSelection),
+ ('final-treatmentfle_admacttreatmentfle_deletion',
+ FinalAdministrativeActDeleteForm)],
+ label=_(u"Treatment request: administrative act deletion"),
+ url_name='treatmentfle_admacttreatmentfle_deletion',)
+
+
+def treatmentfile_administrativeacttreatmentfile_modify(request, pk):
+ treatmentfile_admacttreatmentfile_modification_wizard(request)
+ TreatmentFileEditAdministrativeActWizard.session_set_value(
+ request,
+ 'selec-treatmentfle_admacttreatmentfle_modification',
+ 'pk', pk, reset=True)
+ return redirect(
+ reverse(
+ 'treatmentfle_admacttreatmentfle_modification',
+ kwargs={
+ 'step':
+ 'admact-treatmentfle_admacttreatmentfle_modification'
+ }))
+
+# sources
+
+show_treatmentsource = show_item(models.TreatmentSource, 'treatmentsource')
+get_treatmentsource = get_item(models.TreatmentSource, 'get_treatmentsource',
+ 'treatmentsource')
+
+treatment_source_search_wizard = SearchWizard.as_view([
+ ('selec-treatment_source_search', TreatmentSourceFormSelection)],
+ label=_(u"Treatment: source search"),
+ url_name='treatment_source_search',)
+
treatment_source_creation_wizard = TreatmentSourceWizard.as_view([
('selec-treatment_source_creation', SourceTreatmentFormSelection),
('source-treatment_source_creation', SourceForm),
@@ -311,4 +565,72 @@ treatment_source_creation_wizard = TreatmentSourceWizard.as_view([
('final-treatment_source_creation', FinalForm)],
url_name='treatment_source_creation',)
-"""
+treatment_source_modification_wizard = TreatmentSourceWizard.as_view([
+ ('selec-treatment_source_modification', TreatmentSourceFormSelection),
+ ('source-treatment_source_modification', SourceForm),
+ ('authors-treatment_source_modification', AuthorFormset),
+ ('final-treatment_source_modification', FinalForm)],
+ label=_(u"Treatment: source modification"),
+ url_name='treatment_source_modification',)
+
+
+def treatment_source_modify(request, pk):
+ treatment_source_modification_wizard(request)
+ TreatmentSourceWizard.session_set_value(
+ request, 'selec-treatment_source_modification', 'pk', pk, reset=True)
+ return redirect(reverse(
+ 'treatment_source_modification',
+ kwargs={'step': 'source-treatment_source_modification'}))
+
+treatment_source_deletion_wizard = TreatmentSourceDeletionWizard.as_view([
+ ('selec-treatment_source_deletion', TreatmentSourceFormSelection),
+ ('final-treatment_source_deletion', SourceDeletionForm)],
+ label=_(u"Treatment: source deletion"),
+ url_name='treatment_source_deletion',)
+
+# treatment request sources
+
+show_treatmentfilesource = show_item(models.TreatmentFileSource,
+ 'treatmentfilesource')
+get_treatmentfilesource = get_item(
+ models.TreatmentFileSource, 'get_treatmentfilesource',
+ 'treatmentfilesource')
+
+treatmentfile_source_search_wizard = SearchWizard.as_view([
+ ('selec-treatmentfile_source_search', TreatmentFileSourceFormSelection)],
+ label=_(u"Treatment request: source search"),
+ url_name='treatmentfile_source_search',)
+
+treatmentfile_source_creation_wizard = TreatmentFileSourceWizard.as_view([
+ ('selec-treatmentfile_source_creation', SourceTreatmentFileFormSelection),
+ ('source-treatmentfile_source_creation', SourceForm),
+ ('authors-treatmentfile_source_creation', AuthorFormset),
+ ('final-treatmentfile_source_creation', FinalForm)],
+ url_name='treatmentfile_source_creation',)
+
+treatmentfile_source_modification_wizard = TreatmentFileSourceWizard.as_view([
+ ('selec-treatmentfile_source_modification',
+ TreatmentFileSourceFormSelection),
+ ('source-treatmentfile_source_modification', SourceForm),
+ ('authors-treatmentfile_source_modification', AuthorFormset),
+ ('final-treatmentfile_source_modification', FinalForm)],
+ label=_(u"Treatment request: source modification"),
+ url_name='treatmentfile_source_modification',)
+
+
+def treatmentfile_source_modify(request, pk):
+ treatmentfile_source_modification_wizard(request)
+ TreatmentFileSourceWizard.session_set_value(
+ request, 'selec-treatmentfile_source_modification', 'pk', pk,
+ reset=True)
+ return redirect(reverse(
+ 'treatmentfile_source_modification',
+ kwargs={'step': 'source-treatmentfile_source_modification'}))
+
+treatmentfile_source_deletion_wizard = \
+ TreatmentFileSourceDeletionWizard.as_view([
+ ('selec-treatmentfile_source_deletion',
+ TreatmentFileSourceFormSelection),
+ ('final-treatmentfile_source_deletion', SourceDeletionForm)],
+ label=_(u"Treatment request: source deletion"),
+ url_name='treatmentfile_source_deletion',)
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index f897969c4..dab4a76d4 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -17,11 +17,15 @@
# See the file COPYING for details.
-from django.core.exceptions import ObjectDoesNotExist
+from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
from django.utils.translation import ugettext_lazy as _
from ishtar_common.forms import reverse_lazy
from ishtar_common.wizards import Wizard, DeletionWizard, SourceWizard
+from archaeological_operations.wizards import OperationAdministrativeActWizard
+
+from archaeological_operations.models import AdministrativeAct
+from archaeological_context_records.models import ContextRecord
import models
@@ -37,7 +41,7 @@ class FindWizard(Wizard):
main_form_key = 'selecrecord-' + self.url_name
try:
idx = int(self.session_get_value(main_form_key, 'pk'))
- current_cr = models.ContextRecord.objects.get(pk=idx)
+ current_cr = ContextRecord.objects.get(pk=idx)
return current_cr
except(TypeError, ValueError, ObjectDoesNotExist):
pass
@@ -63,7 +67,7 @@ class FindWizard(Wizard):
def get_extra_model(self, dct, form_list):
dct = super(FindWizard, self).get_extra_model(dct, form_list)
dct['order'] = 1
- if 'pk' in dct and type(dct['pk']) == models.ContextRecord:
+ if 'pk' in dct and type(dct['pk']) == ContextRecord:
dct['base_finds__context_record'] = dct.pop('pk')
return dct
@@ -84,15 +88,125 @@ class FindDeletionWizard(DeletionWizard):
class TreatmentWizard(Wizard):
model = models.Treatment
+ wizard_done_window = reverse_lazy('show-treatment')
basket_step = 'basetreatment-treatment_creation'
+ saved_args = {"items": []}
- def get_form_kwargs(self, step):
- kwargs = super(TreatmentWizard, self).get_form_kwargs(step)
+ def get_form_kwargs(self, step, **kwargs):
+ kwargs = super(TreatmentWizard, self).get_form_kwargs(step, **kwargs)
if self.basket_step not in step:
return kwargs
kwargs['user'] = self.request.user
return kwargs
+ def get_extra_model(self, dct, form_list):
+ """
+ Remove basket ID to the result dict
+ """
+ dct = super(TreatmentWizard, self).get_extra_model(dct, form_list)
+ if 'resulting_pk' in dct:
+ try:
+ find = models.Find.objects.get(pk=dct.pop('resulting_pk'))
+ if 'own' in self.current_right \
+ and not find.is_own(dct['history_modifier']):
+ raise PermissionDenied
+ dct['items'] = [find]
+ except models.Find.DoesNotExist:
+ raise PermissionDenied
+ if 'basket' in dct:
+ basket = dct.pop('basket')
+ if basket.user.pk != dct['history_modifier'].pk:
+ raise PermissionDenied
+ dct['items'] = list(basket.items.all())
+ return dct
+
+
+class TreatmentModificationWizard(TreatmentWizard):
+ modification = True
+
+
+class TreatmentDeletionWizard(DeletionWizard):
+ model = models.Treatment
+ fields = ['label', 'other_reference', 'year', 'index',
+ 'treatment_types', 'location', 'person', 'organization',
+ 'external_id', 'comment', 'description',
+ 'goal', 'start_date', 'end_date', 'container']
+
+
+class TreatmentAdministrativeActWizard(OperationAdministrativeActWizard):
+ model = models.Treatment
+ current_obj_slug = 'administrativeacttreatment'
+ ref_object_key = 'treatment'
+
+ def get_reminder(self):
+ return
+
+
+class TreatmentEditAdministrativeActWizard(TreatmentAdministrativeActWizard):
+ model = AdministrativeAct
+ edit = True
+
+ def get_associated_item(self, dct):
+ return self.get_current_object().treatment
+
+
+class TreatmentFileWizard(Wizard):
+ model = models.TreatmentFile
+ wizard_done_window = reverse_lazy('show-treatmentfile')
+
+
+class TreatmentFileModificationWizard(TreatmentFileWizard):
+ modification = True
+
+
+class TreatmentFileDeletionWizard(DeletionWizard):
+ model = models.TreatmentFile
+ fields = ['name', 'internal_reference', 'external_id', 'year',
+ 'index', 'type', 'in_charge', 'reception_date',
+ 'creation_date', 'end_date', 'comment']
+
+
+class TreatmentFileAdministrativeActWizard(
+ OperationAdministrativeActWizard):
+ model = models.TreatmentFile
+ current_obj_slug = 'administrativeacttreatmentfile'
+ ref_object_key = 'treatment_file'
+
+ def get_reminder(self):
+ form_key = 'selec-' + self.url_name
+ if self.url_name.endswith('_administrativeactop'):
+ # modification and deletion are suffixed with '_modification'
+ # and '_deletion' so it is creation
+ pk = self.session_get_value(form_key, "pk")
+ try:
+ return (
+ (_(u"Treatment request"),
+ unicode(models.TreatmentFile.objects.get(pk=pk))),
+ )
+ except models.TreatmentFile.DoesNotExist:
+ return
+ else:
+ admin_id = self.session_get_value(form_key, "pk")
+ try:
+ admin = AdministrativeAct.objects.get(pk=admin_id)
+ if not admin.operation:
+ return
+ return (
+ (_(u"Operation"), unicode(admin.operation)),
+ )
+ except AdministrativeAct.DoesNotExist:
+ return
+ return
+
+
+class TreatmentFileEditAdministrativeActWizard(
+ TreatmentFileAdministrativeActWizard):
+ model = AdministrativeAct
+ edit = True
+
+ def get_associated_item(self, dct):
+ return self.get_current_object().treatment_file
+
class FindSourceWizard(SourceWizard):
wizard_done_window = reverse_lazy('show-findsource')
@@ -106,3 +220,17 @@ class FindSourceDeletionWizard(DeletionWizard):
class TreatmentSourceWizard(SourceWizard):
model = models.TreatmentSource
+
+
+class TreatmentSourceDeletionWizard(DeletionWizard):
+ model = models.TreatmentSource
+ fields = ['treatment', 'title', 'source_type', 'authors']
+
+
+class TreatmentFileSourceWizard(SourceWizard):
+ model = models.TreatmentFileSource
+
+
+class TreatmentFileSourceDeletionWizard(DeletionWizard):
+ model = models.TreatmentFileSource
+ fields = ['treatment_file', 'title', 'source_type', 'authors']
diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py
index 47ab8419b..b97df85eb 100644
--- a/archaeological_operations/admin.py
+++ b/archaeological_operations/admin.py
@@ -100,7 +100,15 @@ class RelationTypeAdmin(admin.ModelAdmin):
admin.site.register(models.RelationType, RelationTypeAdmin)
-general_models = [models.RemainType, models.ActType, models.ReportState]
+
+class ActTypeAdmin(GeneralTypeAdmin):
+ list_filter = ('intented_to',)
+ list_display = ['label', 'txt_idx', 'available', 'intented_to']
+
+
+admin.site.register(models.ActType, ActTypeAdmin)
+
+general_models = [models.RemainType, models.ReportState]
for model in general_models:
admin.site.register(model, GeneralTypeAdmin)
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 37c35f4be..f9f1095be 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -33,8 +33,8 @@ from django.forms.formsets import formset_factory, DELETION_FIELD_NAME, \
from django.utils.translation import ugettext_lazy as _, pgettext_lazy
from django.utils.safestring import mark_safe
-from ishtar_common.models import valid_id, PersonType, Person, Town, \
- DocumentTemplate, Organization, OrganizationType, get_current_profile, \
+from ishtar_common.models import valid_id, Person, Town, \
+ DocumentTemplate, Organization, get_current_profile, \
person_type_pks_lazy, person_type_pk_lazy, organization_type_pks_lazy, \
organization_type_pk_lazy
@@ -515,7 +515,7 @@ class OperationSelect(TableSelect):
choices=[])
virtual_operation = forms.NullBooleanField(label=_(u"Virtual operation"))
archaeological_sites = forms.IntegerField(
- label=_("Archaelogical site"),
+ label=_("Archaeological site"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-archaeologicalsite'),
associated_model=models.ArchaeologicalSite),
@@ -637,7 +637,7 @@ class OperationFormFileChoice(forms.Form):
associated_models = {'associated_file': File, }
currents = {'associated_file': File}
associated_file = forms.IntegerField(
- label=_(u"Archaelogical file"),
+ label=_(u"Archaeological file"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-file'), associated_model=File),
validators=[valid_id(File)], required=False)
@@ -916,7 +916,7 @@ class OperationFormGeneral(ManageOldType, forms.Form):
msg = ''
if year and max_val:
msg = _(
- u"Operation code already exist for year: %(year)d - use a "
+ u"Operation code already exists for year: %(year)d - use a "
u"value bigger than %(last_val)d") % {
'year': year, 'last_val': max_val}
else:
@@ -930,7 +930,7 @@ class OperationFormModifGeneral(OperationFormGeneral):
required=False)
currents = {'associated_file': File}
associated_file = forms.IntegerField(
- label=_(u"Archaelogical file"),
+ label=_(u"Archaeological file"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-file'),
associated_model=File),
@@ -1143,7 +1143,7 @@ class ArchaeologicalSiteBasicForm(forms.Form):
base_model = 'archaeological_site'
associated_models = {'archaeological_site': models.ArchaeologicalSite}
archaeological_site = forms.IntegerField(
- label=_("Archaelogical site"),
+ label=_("Archaeological site"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-archaeologicalsite'),
associated_model=models.ArchaeologicalSite,
@@ -1158,7 +1158,7 @@ ArchaeologicalSiteFormSet.form_label = _("Archaeological sites")
class ArchaeologicalSiteSelectionForm(forms.Form):
- form_label = _("Associated archaelogical sites")
+ form_label = _("Associated archaeological sites")
archaeological_sites = forms.IntegerField(
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-archaeologicalsite'),
@@ -1377,7 +1377,7 @@ class AdministrativeActModifForm(object):
msg = ''
if year and max_val:
msg = _(
- u"This index already exist for year: %(year)d - use a "
+ u"This index already exists for year: %(year)d - use a "
u"value bigger than %(last_val)d") % {
'year': year, 'last_val': max_val}
else:
@@ -1403,8 +1403,8 @@ class DocumentGenerationAdminActForm(forms.Form):
def __init__(self, *args, **kwargs):
self.document_type = 'O'
- if 'operation' in kwargs:
- self.document_type = 'O' if kwargs.pop('operation') else 'F'
+ if 'document_type' in kwargs:
+ self.document_type = kwargs.pop('document_type')
self.obj = None
if 'obj' in kwargs:
self.obj = kwargs.pop('obj')
diff --git a/archaeological_operations/import_from_csv.py b/archaeological_operations/import_from_csv.py
index 45faae632..999ada690 100644
--- a/archaeological_operations/import_from_csv.py
+++ b/archaeological_operations/import_from_csv.py
@@ -18,7 +18,7 @@
# See the file COPYING for details.
"""
-Utils: import archaelogical operation from a CSV file
+Utils: import archaeological operation from a CSV file
"""
DELIMITER = ";"
diff --git a/archaeological_operations/import_from_dbf.py b/archaeological_operations/import_from_dbf.py
index 3ce41fdfc..fa452d605 100644
--- a/archaeological_operations/import_from_dbf.py
+++ b/archaeological_operations/import_from_dbf.py
@@ -18,7 +18,7 @@
# See the file COPYING for details.
"""
-Utils: import archaelogical operation from a DBF file
+Utils: import archaeological operation from a DBF file
"""
from __future__ import unicode_literals
diff --git a/archaeological_operations/ishtar_menu.py b/archaeological_operations/ishtar_menu.py
index a0852147a..5f937f01c 100644
--- a/archaeological_operations/ishtar_menu.py
+++ b/archaeological_operations/ishtar_menu.py
@@ -66,7 +66,7 @@ MENU_SECTIONS = [
'change_administrativeact']),
MenuItem(
'operation_administrativeactop',
- _(u"Add"),
+ _(u"Creation"),
model=models.AdministrativeAct,
access_controls=['change_administrativeact']),
MenuItem(
@@ -94,7 +94,7 @@ MENU_SECTIONS = [
access_controls=['view_operation',
'view_own_operation']),
MenuItem('operation_source_creation',
- _(u"Add"),
+ _(u"Creation"),
model=models.OperationSource,
access_controls=['change_operation',
'change_own_operation']),
diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot
index 0e55c760b..5db1dc5d5 100644
--- a/archaeological_operations/locale/django.pot
+++ b/archaeological_operations/locale/django.pot
@@ -5,16 +5,17 @@
# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata
+# Valérie-Emma Leroux <emma@iggdrasil.net>, 2017. #zanata
msgid ""
msgstr ""
-#: forms.py:67 forms.py:369 forms.py:1004 forms.py:1026 forms.py:1030
-#: models.py:1168 templates/ishtar/sheet_operation.html:144
+#: forms.py:69 forms.py:371 forms.py:1009 forms.py:1031 forms.py:1035
+#: models.py:1213 templates/ishtar/sheet_operation.html:144
#: templates/ishtar/blocks/window_tables/parcels.html:10
msgid "Parcels"
msgstr ""
-#: forms.py:70 forms.py:203 forms.py:980 models.py:1154
+#: forms.py:72 forms.py:205 forms.py:985 models.py:1199
#: templates/ishtar/blocks/window_tables/parcels.html:7
#: templates/ishtar/dashboards/dashboard_operation.html:432
#: templates/ishtar/dashboards/dashboard_operation.html:446
@@ -23,96 +24,96 @@ msgstr ""
msgid "Town"
msgstr ""
-#: forms.py:72 forms.py:459 forms.py:755 forms.py:1250 models.py:249
-#: models.py:971 models.py:1152
+#: forms.py:74 forms.py:455 forms.py:752 forms.py:1255 models.py:271
+#: models.py:1005 models.py:1197
#: templates/ishtar/blocks/window_tables/parcels.html:8
msgid "Year"
msgstr ""
-#: forms.py:75 models.py:1155
+#: forms.py:77 models.py:1200
#: templates/ishtar/blocks/window_tables/parcels.html:9
msgid "Section"
msgstr ""
-#: forms.py:78 models.py:1157
+#: forms.py:80 models.py:1202
msgid "Parcel number"
msgstr ""
-#: forms.py:80 models.py:1159 models.py:1176 models.py:1225
+#: forms.py:82 models.py:1204 models.py:1221 models.py:1270
msgid "Public domain"
msgstr ""
-#: forms.py:124
+#: forms.py:126
msgid "Town section is required."
msgstr ""
-#: forms.py:160
+#: forms.py:162
msgid "public domain"
msgstr ""
-#: forms.py:167
+#: forms.py:169
msgid "Current parcels"
msgstr ""
-#: forms.py:169
+#: forms.py:171
msgid "Deleted parcels"
msgstr ""
-#: forms.py:206
+#: forms.py:208
msgid "Full text input"
msgstr ""
-#: forms.py:208
+#: forms.py:210
msgid "example: \"2013: XD:1 to 13,24,33 to 39, YD:24\" or \"AB:24,AC:42\""
msgstr ""
-#: forms.py:363
+#: forms.py:365
msgid "There are identical parcels."
msgstr ""
-#: forms.py:378
+#: forms.py:380
msgid "Relation type"
msgstr ""
-#: forms.py:381 ishtar_menu.py:30 models.py:344 models.py:804 models.py:834
-#: models.py:862 models.py:963 models.py:1151 wizards.py:339 wizards.py:350
+#: forms.py:383 ishtar_menu.py:30 models.py:366 models.py:826 models.py:856
+#: models.py:884 models.py:987 models.py:1196 wizards.py:344 wizards.py:355
#: templates/ishtar/sheet_operation.html:4
msgid "Operation"
msgstr ""
-#: forms.py:401
+#: forms.py:403
msgid ":"
msgstr ""
-#: forms.py:409 forms.py:608 forms.py:1215
+#: forms.py:411 forms.py:605 forms.py:1220
msgid "You should select an operation."
msgstr ""
-#: forms.py:413
+#: forms.py:415
msgid "You should select a relation type."
msgstr ""
-#: forms.py:443
+#: forms.py:445
msgid "Current relations"
msgstr ""
-#: forms.py:445
+#: forms.py:447
msgid "Deleted relations"
msgstr ""
-#: forms.py:449 templates/ishtar/sheet_operation.html:83
+#: forms.py:451 templates/ishtar/sheet_operation.html:83
msgid "Relations"
msgstr ""
-#: forms.py:460 forms.py:1221 models.py:250
+#: forms.py:456 forms.py:1226 models.py:272
msgid "Numeric reference"
msgstr ""
-#: forms.py:466 forms.py:1261
+#: forms.py:462 forms.py:1266
msgid "Parcel (section/number/public domain)"
msgstr ""
-#: forms.py:469 forms.py:1264 models.py:805
+#: forms.py:465 forms.py:1269 models.py:827
#: templates/ishtar/dashboards/dashboard_operation.html:390
#: templates/ishtar/dashboards/dashboard_operation.html:411
#: templates/ishtar/dashboards/dashboard_operation.html:643
@@ -121,457 +122,454 @@ msgstr ""
msgid "Department"
msgstr ""
-#: forms.py:470 forms.py:1092 models.py:85
+#: forms.py:466 forms.py:1097 models.py:85
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8
msgid "Name"
msgstr ""
-#: forms.py:472 forms.py:675 forms.py:753 forms.py:1227 models.py:257
+#: forms.py:468 forms.py:672 forms.py:750 forms.py:1232 models.py:279
msgid "Operation type"
msgstr ""
-#: forms.py:474
+#: forms.py:470
msgid "Is open?"
msgstr ""
-#: forms.py:483 forms.py:782 models.py:246
+#: forms.py:478 forms.py:782 models.py:268
msgid "In charge"
msgstr ""
-#: forms.py:490 models.py:957
+#: forms.py:485 models.py:981
msgid "Scientist in charge"
msgstr ""
-#: forms.py:492 forms.py:677 forms.py:773 models.py:244
+#: forms.py:487 forms.py:674 forms.py:772 models.py:266
msgid "Operator"
msgstr ""
-#: forms.py:499 forms.py:1097 models.py:89 models.py:259
+#: forms.py:496 forms.py:1102 models.py:89 models.py:281
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:10
msgid "Remains"
msgstr ""
-#: forms.py:500 forms.py:1075 forms.py:1094 models.py:87 models.py:265
+#: forms.py:497 forms.py:1080 forms.py:1099 models.py:87 models.py:287
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9
msgid "Periods"
msgstr ""
-#: forms.py:501
+#: forms.py:498
msgid "Started before"
msgstr ""
-#: forms.py:503
+#: forms.py:500
msgid "Started after"
msgstr ""
-#: forms.py:505
+#: forms.py:502
msgid "Ended before"
msgstr ""
-#: forms.py:507
+#: forms.py:504
msgid "Ended after"
msgstr ""
-#: forms.py:510
+#: forms.py:507
msgid "Search within relations"
msgstr ""
-#: forms.py:512 forms.py:832
+#: forms.py:509 forms.py:837
msgid "Comment"
msgstr ""
-#: forms.py:513
+#: forms.py:510
msgid "Abstract (full text search)"
msgstr ""
-#: forms.py:515 forms.py:835 models.py:313
+#: forms.py:512 forms.py:840 models.py:335
msgid "Comment about scientific documentation"
msgstr ""
-#: forms.py:516 forms.py:837 models.py:325
+#: forms.py:513 forms.py:842 models.py:347
msgid "Record quality"
msgstr ""
-#: forms.py:517 forms.py:805 models.py:277
+#: forms.py:514 forms.py:807 models.py:299
msgid "Report processing"
msgstr ""
-#: forms.py:519 forms.py:840 models.py:320
+#: forms.py:516 forms.py:845 models.py:342
msgid "Virtual operation"
msgstr ""
-#: forms.py:521 forms.py:1141
-msgid "Archaelogical site"
+#: forms.py:518 forms.py:1142 forms.py:1146 models.py:93
+msgid "Archaeological site"
msgstr ""
-#: forms.py:527 forms.py:1268
+#: forms.py:524 forms.py:1273
msgid "Created by"
msgstr ""
-#: forms.py:533 forms.py:1274
+#: forms.py:530 forms.py:1279
msgid "Modified by"
msgstr ""
-#: forms.py:540
+#: forms.py:537
msgid "Documentation deadline before"
msgstr ""
-#: forms.py:542
+#: forms.py:539
msgid "Documentation deadline after"
msgstr ""
-#: forms.py:544 forms.py:825 models.py:332
+#: forms.py:541 forms.py:830 models.py:354
msgid "Documentation received"
msgstr ""
-#: forms.py:546
+#: forms.py:543
msgid "Finds deadline before"
msgstr ""
-#: forms.py:548
+#: forms.py:545
msgid "Finds deadline after"
msgstr ""
-#: forms.py:550 forms.py:830 models.py:336
+#: forms.py:547 forms.py:835 models.py:358
msgid "Finds received"
msgstr ""
-#: forms.py:595 forms.py:1213 views.py:168
+#: forms.py:592 forms.py:1218 views.py:168
msgid "Operation search"
msgstr ""
-#: forms.py:639
+#: forms.py:636
msgid "Associated file"
msgstr ""
-#: forms.py:643 forms.py:928 models.py:968 wizards.py:76
-msgid "Archaelogical file"
+#: forms.py:640 forms.py:933 models.py:493 models.py:883 models.py:992
+#: wizards.py:80
+msgid "Archaeological file"
msgstr ""
-#: forms.py:650 forms.py:652 models.py:327
+#: forms.py:647 forms.py:649 models.py:349
msgid "Abstract"
msgstr ""
-#: forms.py:655
+#: forms.py:652
msgid "months"
msgstr ""
-#: forms.py:655
+#: forms.py:652
msgid "years"
msgstr ""
-#: forms.py:657 models.py:230
+#: forms.py:654 models.py:252
msgid "Creation date"
msgstr ""
-#: forms.py:658
+#: forms.py:655
msgid "Start of field work"
msgstr ""
-#: forms.py:660
+#: forms.py:657
msgid "All"
msgstr ""
-#: forms.py:661
+#: forms.py:658
msgid "Preventive"
msgstr ""
-#: forms.py:662
+#: forms.py:659
msgid "Research"
msgstr ""
-#: forms.py:666
+#: forms.py:663
msgid "Slicing"
msgstr ""
-#: forms.py:669
+#: forms.py:666
msgid "Department detail"
msgstr ""
-#: forms.py:671
+#: forms.py:668
msgid "Date get from"
msgstr ""
-#: forms.py:673
+#: forms.py:670
msgid "Preventive/Research"
msgstr ""
-#: forms.py:679
+#: forms.py:676
msgid "Date after"
msgstr ""
-#: forms.py:681
+#: forms.py:678
msgid "Date before"
msgstr ""
-#: forms.py:683
+#: forms.py:680
msgid "With reports"
msgstr ""
-#: forms.py:684
+#: forms.py:681
msgid "With finds"
msgstr ""
-#: forms.py:736 forms.py:1322 templates/ishtar/sheet_administrativeact.html:13
+#: forms.py:733 forms.py:1327 templates/ishtar/sheet_administrativeact.html:20
#: templates/ishtar/sheet_operation.html:24
msgid "General"
msgstr ""
-#: forms.py:751 models.py:310
+#: forms.py:748 models.py:332
msgid "Generic name"
msgstr ""
-#: forms.py:760 models.py:279
+#: forms.py:757 models.py:301
msgid "Old code"
msgstr ""
-#: forms.py:763
+#: forms.py:760
msgid "Head scientist"
msgstr ""
-#: forms.py:779 models.py:309
+#: forms.py:779 models.py:331
msgid "Operator reference"
msgstr ""
-#: forms.py:791
+#: forms.py:793
msgid "Total surface (m2)"
msgstr ""
-#: forms.py:798 models.py:53 models.py:233 models.py:1341
+#: forms.py:800 models.py:53 models.py:255 models.py:1386
msgid "Start date"
msgstr ""
-#: forms.py:800 models.py:235
+#: forms.py:802 models.py:257
msgid "Excavation end date"
msgstr ""
-#: forms.py:803 models.py:236
+#: forms.py:805 models.py:258
msgid "Report delivery date"
msgstr ""
-#: forms.py:822 models.py:329
+#: forms.py:827 models.py:351
msgid "Deadline for submission of the documentation"
msgstr ""
-#: forms.py:827 models.py:334
+#: forms.py:832 models.py:356
msgid "Deadline for submission of the finds"
msgstr ""
-#: forms.py:842
+#: forms.py:847
msgid "Image"
msgstr ""
-#: forms.py:843
+#: forms.py:848
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
"p>"
msgstr ""
-#: forms.py:881
+#: forms.py:886
msgid ""
"If you want to set an excavation end date you have to provide a start date."
msgstr ""
-#: forms.py:886
+#: forms.py:891
msgid "The excavation end date cannot be before the start date."
msgstr ""
-#: forms.py:914
+#: forms.py:919
#, python-format
msgid ""
-"Operation code already exist for year: %(year)d - use a value bigger than "
+"Operation code already exists for year: %(year)d - use a value bigger than "
"%(last_val)d"
msgstr ""
-#: forms.py:918
+#: forms.py:923
msgid "Bad operation code"
msgstr ""
-#: forms.py:924 models.py:486
+#: forms.py:929 models.py:508
msgid "Operation code"
msgstr ""
-#: forms.py:950
+#: forms.py:955
msgid "Preventive informations - excavation"
msgstr ""
-#: forms.py:951 models.py:263
+#: forms.py:956 models.py:285
#: templates/ishtar/dashboards/dashboard_operation.html:701
msgid "Cost (euros)"
msgstr ""
-#: forms.py:952 models.py:268
+#: forms.py:957 models.py:290
msgid "Scheduled man-days"
msgstr ""
-#: forms.py:954 models.py:271
+#: forms.py:959 models.py:293
msgid "Optional man-days"
msgstr ""
-#: forms.py:956 models.py:274
+#: forms.py:961 models.py:296
msgid "Effective man-days"
msgstr ""
-#: forms.py:966
+#: forms.py:971
msgid "Preventive informations - diagnostic"
msgstr ""
-#: forms.py:969 models.py:293
+#: forms.py:974 models.py:315
msgid "Prescription on zoning"
msgstr ""
-#: forms.py:971 models.py:296
+#: forms.py:976 models.py:318
msgid "Prescription on large area"
msgstr ""
-#: forms.py:974 models.py:298
+#: forms.py:979 models.py:320
msgid "Prescription on geoarchaeological context"
msgstr ""
-#: forms.py:978 forms.py:1000 models.py:261 models.py:981
+#: forms.py:983 forms.py:1005 models.py:283 models.py:1015
msgid "Towns"
msgstr ""
-#: forms.py:1007 models.py:1167 models.py:1339
+#: forms.py:1012 models.py:1212 models.py:1384
msgid "Parcel"
msgstr ""
-#: forms.py:1059 models.py:45
+#: forms.py:1064 models.py:45
msgid "Remain types"
msgstr ""
-#: forms.py:1063 models.py:44
+#: forms.py:1068 models.py:44
msgid "Remain type"
msgstr ""
-#: forms.py:1079 templates/ishtar/sheet_operation.html:164
+#: forms.py:1084 templates/ishtar/sheet_operation.html:164
#: templates/ishtar/sheet_operation.html:195
msgid "Period"
msgstr ""
-#: forms.py:1091 models.py:84
+#: forms.py:1096 models.py:84
msgid "Reference"
msgstr ""
-#: forms.py:1120
+#: forms.py:1125
msgid "This reference already exists."
msgstr ""
-#: forms.py:1137 models.py:93
-msgid "Archaeological site"
-msgstr ""
-
-#: forms.py:1152 models.py:94 models.py:317
+#: forms.py:1157 models.py:94 models.py:339
#: templates/ishtar/sheet_operation.html:94
msgid "Archaeological sites"
msgstr ""
-#: forms.py:1156
-msgid "Associated archaelogical sites"
+#: forms.py:1161
+msgid "Associated archaeological sites"
msgstr ""
-#: forms.py:1162 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
+#: forms.py:1167 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
msgid "Search"
msgstr ""
-#: forms.py:1167
+#: forms.py:1172
msgid "Would you like to close this operation?"
msgstr ""
-#: forms.py:1172
+#: forms.py:1177
msgid "Would you like to delete this operation?"
msgstr ""
-#: forms.py:1181 forms.py:1251 forms.py:1387 models.py:836 models.py:948
+#: forms.py:1186 forms.py:1256 forms.py:1392 models.py:858 models.py:972
msgid "Index"
msgstr ""
-#: forms.py:1207
+#: forms.py:1212
#, python-format
msgid ""
"Index already exists for operation: %(operation)s - use a value bigger than "
"%(last_val)d"
msgstr ""
-#: forms.py:1219
+#: forms.py:1224
msgid "Operation's year"
msgstr ""
-#: forms.py:1226
+#: forms.py:1231
msgid "Operation's town"
msgstr ""
-#: forms.py:1239
+#: forms.py:1244
msgid "Documentation search"
msgstr ""
-#: forms.py:1241
+#: forms.py:1246
msgid "You should select a document."
msgstr ""
-#: forms.py:1258 forms.py:1325 models.py:873 models.py:942
+#: forms.py:1263 forms.py:1330 models.py:897 models.py:966
msgid "Act type"
msgstr ""
-#: forms.py:1259 forms.py:1457
+#: forms.py:1264 forms.py:1462
msgid "Indexed?"
msgstr ""
-#: forms.py:1265 forms.py:1330 models.py:972
+#: forms.py:1270 forms.py:1335 models.py:1006
#: templates/ishtar/blocks/window_tables/administrativacts.html:10
msgid "Object"
msgstr ""
-#: forms.py:1302 views.py:324
+#: forms.py:1307 views.py:329
msgid "Administrative act search"
msgstr ""
-#: forms.py:1317 forms.py:1415 forms.py:1482
+#: forms.py:1322 forms.py:1420 forms.py:1487
msgid "You should select an administrative act."
msgstr ""
-#: forms.py:1333 models.py:969
+#: forms.py:1338 models.py:1003
msgid "Signature date"
msgstr ""
-#: forms.py:1375
+#: forms.py:1380
#, python-format
msgid ""
-"This index already exist for year: %(year)d - use a value bigger than "
+"This index already exists for year: %(year)d - use a value bigger than "
"%(last_val)d"
msgstr ""
-#: forms.py:1379
+#: forms.py:1384
msgid "Bad index"
msgstr ""
-#: forms.py:1392
+#: forms.py:1397
msgid "Would you like to delete this administrative act?"
msgstr ""
-#: forms.py:1397
+#: forms.py:1402
msgid "Template"
msgstr ""
-#: forms.py:1421 forms.py:1425
+#: forms.py:1426 forms.py:1430
msgid "This document is not intended for this type of act."
msgstr ""
-#: forms.py:1443
+#: forms.py:1448
msgid "Doc generation"
msgstr ""
-#: forms.py:1445
+#: forms.py:1450
msgid "Generate the associated doc?"
msgstr ""
-#: forms.py:1466 ishtar_menu.py:121 views.py:377
+#: forms.py:1471 ishtar_menu.py:121 views.py:382
msgctxt "admin act register"
msgid "Register"
msgstr ""
-#: ishtar_menu.py:38
+#: ishtar_menu.py:38 ishtar_menu.py:69 ishtar_menu.py:97
msgid "Creation"
msgstr ""
@@ -587,15 +585,11 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:58 models.py:988
+#: ishtar_menu.py:58 models.py:1022
#: templates/ishtar/sheet_administrativeact.html:4
msgid "Administrative act"
msgstr ""
-#: ishtar_menu.py:69 ishtar_menu.py:97 widgets.py:55
-msgid "Add"
-msgstr ""
-
#: ishtar_menu.py:84
msgid "Documents"
msgstr ""
@@ -616,16 +610,16 @@ msgstr ""
msgid "General informations"
msgstr ""
-#: ishtar_menu.py:136 models.py:345
+#: ishtar_menu.py:136 models.py:367
#: templates/ishtar/dashboards/dashboard_operation.html:8
msgid "Operations"
msgstr ""
-#: models.py:52 models.py:70 models.py:1803
+#: models.py:52 models.py:70 models.py:1848
msgid "Order"
msgstr ""
-#: models.py:54 models.py:1342
+#: models.py:54 models.py:1387
msgid "End date"
msgstr ""
@@ -681,309 +675,369 @@ msgstr ""
msgid "Reliable"
msgstr ""
+#: models.py:230
+msgid "Year - Index"
+msgstr ""
+
+#: models.py:231
+msgid "Associated file (label)"
+msgstr ""
+
#: models.py:232
-msgid "Closing date"
+msgid "Operator name"
+msgstr ""
+
+#: models.py:233
+msgid "Scientist (full name)"
+msgstr ""
+
+#: models.py:234
+msgid "Associated file (external ID)"
+msgstr ""
+
+#: models.py:235
+msgid "Scientist (title)"
+msgstr ""
+
+#: models.py:236
+msgid "Scientist (surname)"
+msgstr ""
+
+#: models.py:237
+msgid "Scientist (name)"
+msgstr ""
+
+#: models.py:238
+msgid "Scientist - Organization (name)"
msgstr ""
#: models.py:239
+msgid "In charge (title)"
+msgstr ""
+
+#: models.py:240
+msgid "In charge (surname)"
+msgstr ""
+
+#: models.py:241
+msgid "In charge (name)"
+msgstr ""
+
+#: models.py:242
+msgid "In charge - Organization (name)"
+msgstr ""
+
+#: models.py:247
+msgid "Archaeological sites (reference)"
+msgstr ""
+
+#: models.py:254
+msgid "Closing date"
+msgstr ""
+
+#: models.py:261
msgid "In charge scientist"
msgstr ""
-#: models.py:254 models.py:1147
+#: models.py:276 models.py:1192
msgid "File"
msgstr ""
-#: models.py:258
+#: models.py:280
msgid "Surface (m2)"
msgstr ""
-#: models.py:311
+#: models.py:333
msgid "General comment"
msgstr ""
-#: models.py:314
+#: models.py:336
msgid "Cached name"
msgstr ""
-#: models.py:322
+#: models.py:344
msgid ""
"If checked, it means that this operation have not been officialy registered."
msgstr ""
-#: models.py:338
+#: models.py:360
msgid "Point"
msgstr ""
-#: models.py:339
+#: models.py:361
msgid "Multi polygon"
msgstr ""
-#: models.py:347
+#: models.py:369
msgid "Can view all Operations"
msgstr ""
-#: models.py:348
+#: models.py:370
msgid "Can view own Operation"
msgstr ""
-#: models.py:349
+#: models.py:371
msgid "Can add own Operation"
msgstr ""
-#: models.py:350
+#: models.py:372
msgid "Can change own Operation"
msgstr ""
-#: models.py:351
+#: models.py:373
msgid "Can delete own Operation"
msgstr ""
-#: models.py:352
+#: models.py:374
msgid "Can close Operation"
msgstr ""
-#: models.py:380
+#: models.py:402
msgid "OPE"
msgstr ""
-#: models.py:440
+#: models.py:462
msgid "Intercommunal"
msgstr ""
-#: models.py:471 models.py:861
-msgid "Archaeological file"
-msgstr ""
-
-#: models.py:472
+#: models.py:494
msgid "Code patriarche"
msgstr ""
-#: models.py:512
+#: models.py:534
msgid "This operation code already exists for this year"
msgstr ""
-#: models.py:545
+#: models.py:567
msgid "Number of parcels"
msgstr ""
-#: models.py:563
+#: models.py:585
msgid "Number of administrative acts"
msgstr ""
-#: models.py:571
+#: models.py:593
msgid "Number of indexed administrative acts"
msgstr ""
-#: models.py:579
+#: models.py:601
msgid "Number of context records"
msgstr ""
-#: models.py:615
+#: models.py:637
msgid "Number of finds"
msgstr ""
-#: models.py:660
+#: models.py:682
msgid "No type"
msgstr ""
-#: models.py:691
+#: models.py:713
msgid "Number of sources"
msgstr ""
-#: models.py:733 templates/ishtar/dashboards/dashboard_operation.html:309
+#: models.py:755 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:775
+#: models.py:797
msgid "Inverse relation"
msgstr ""
-#: models.py:779
+#: models.py:801
msgid "Operation relation type"
msgstr ""
-#: models.py:780
+#: models.py:802
msgid "Operation relation types"
msgstr ""
-#: models.py:793
+#: models.py:815
msgid "Operation record relation"
msgstr ""
-#: models.py:794
+#: models.py:816
msgid "Operation record relations"
msgstr ""
-#: models.py:840
+#: models.py:862
msgid "Operation documentation"
msgstr ""
-#: models.py:841
+#: models.py:863
msgid "Operation documentations"
msgstr ""
-#: models.py:844
+#: models.py:866
msgid "Can view all Operation sources"
msgstr ""
-#: models.py:846
+#: models.py:868
msgid "Can view own Operation source"
msgstr ""
-#: models.py:848
+#: models.py:870
msgid "Can add own Operation source"
msgstr ""
-#: models.py:850
+#: models.py:872
msgid "Can change own Operation source"
msgstr ""
-#: models.py:852
+#: models.py:874
msgid "Can delete own Operation source"
msgstr ""
-#: models.py:864
+#: models.py:885 models.py:997
+msgid "Treatment request"
+msgstr ""
+
+#: models.py:886 models.py:1002
+msgid "Treatment"
+msgstr ""
+
+#: models.py:888
msgid "Intended to"
msgstr ""
-#: models.py:866
+#: models.py:890
msgid "Code"
msgstr ""
-#: models.py:869
+#: models.py:893
msgid "Associated template"
msgstr ""
-#: models.py:870
+#: models.py:894
msgid "Indexed"
msgstr ""
-#: models.py:874
+#: models.py:898
msgid "Act types"
msgstr ""
-#: models.py:946
+#: models.py:970
msgid "Person in charge of the operation"
msgstr ""
-#: models.py:952
+#: models.py:976
msgid "Archaeological preventive operator"
msgstr ""
-#: models.py:960
+#: models.py:984
msgid "Signatory"
msgstr ""
-#: models.py:978
+#: models.py:1012
msgid "Departments"
msgstr ""
-#: models.py:979
+#: models.py:1013
msgid "Cached values get from associated departments"
msgstr ""
-#: models.py:982
+#: models.py:1016
msgid "Cached values get from associated towns"
msgstr ""
-#: models.py:989 templates/ishtar/sheet_operation.html:102
+#: models.py:1023 templates/ishtar/sheet_operation.html:102
#: templates/ishtar/sheet_operation.html:138
msgid "Administrative acts"
msgstr ""
-#: models.py:992
+#: models.py:1026
msgid "Can view all Administrative acts"
msgstr ""
-#: models.py:994
+#: models.py:1028
msgid "Can view own Administrative act"
msgstr ""
-#: models.py:996
+#: models.py:1030
msgid "Can add own Administrative act"
msgstr ""
-#: models.py:998
+#: models.py:1032
msgid "Can change own Administrative act"
msgstr ""
-#: models.py:1000
+#: models.py:1034
msgid "Can delete own Administrative act"
msgstr ""
-#: models.py:1009
+#: models.py:1043
#: templates/ishtar/blocks/window_tables/administrativacts.html:7
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7
msgid "Ref."
msgstr ""
-#: models.py:1092
+#: models.py:1137
msgid "This index already exists for this year"
msgstr ""
-#: models.py:1160
+#: models.py:1205
msgid "External ID"
msgstr ""
-#: models.py:1163
+#: models.py:1208
msgid "External ID is set automatically"
msgstr ""
-#: models.py:1164
+#: models.py:1209
msgid "Address - Locality"
msgstr ""
-#: models.py:1337
+#: models.py:1382
msgid "Owner"
msgstr ""
-#: models.py:1345
+#: models.py:1390
msgid "Parcel owner"
msgstr ""
-#: models.py:1346
+#: models.py:1391
msgid "Parcel owners"
msgstr ""
-#: models.py:1372
+#: models.py:1417
msgid "Recorded"
msgstr ""
-#: models.py:1373
+#: models.py:1418
msgid "Effective"
msgstr ""
-#: models.py:1374
+#: models.py:1419
msgid "Active"
msgstr ""
-#: models.py:1375
+#: models.py:1420
msgid "Field completed"
msgstr ""
-#: models.py:1376
+#: models.py:1421
msgid "Associated report"
msgstr ""
-#: models.py:1377
+#: models.py:1422
msgid "Closed"
msgstr ""
-#: models.py:1378
+#: models.py:1423
msgid "Documented and closed"
msgstr ""
-#: models.py:1804
+#: models.py:1849
msgid "Is preventive"
msgstr ""
-#: models.py:1807
+#: models.py:1852
msgid "Operation type old"
msgstr ""
-#: models.py:1808
+#: models.py:1853
msgid "Operation types old"
msgstr ""
@@ -999,93 +1053,53 @@ msgstr ""
msgid "Operation closing"
msgstr ""
-#: views.py:282
+#: views.py:287
msgid "Operation deletion"
msgstr ""
-#: views.py:287
+#: views.py:292
msgid "Operation: source search"
msgstr ""
-#: views.py:295
+#: views.py:300
msgid "Operation: source creation"
msgstr ""
-#: views.py:303
+#: views.py:308
msgid "Operation: source modification"
msgstr ""
-#: views.py:318
+#: views.py:323
msgid "Operation: source deletion"
msgstr ""
-#: views.py:337
+#: views.py:342
msgid "Operation: new administrative act"
msgstr ""
-#: views.py:347
+#: views.py:352
msgid "Operation: administrative act modification"
msgstr ""
-#: views.py:371
+#: views.py:376
msgid "Operation: administrative act deletion"
msgstr ""
-#: wizards.py:199
-msgid ""
-"Warning: No Archaelogical File is provided. If you have forget it return to "
-"the first step."
-msgstr ""
-
-#: templates/ishtar/sheet_administrativeact.html:14
-msgid "Year:"
-msgstr ""
-
-#: templates/ishtar/sheet_administrativeact.html:15
-msgid "Numerical reference:"
-msgstr ""
-
-#: templates/ishtar/sheet_administrativeact.html:16
-msgid "Internal reference:"
-msgstr ""
-
-#: templates/ishtar/sheet_administrativeact.html:17
-msgid "Type:"
-msgstr ""
-
-#: templates/ishtar/sheet_administrativeact.html:18
-msgid "Object:"
-msgstr ""
-
-#: templates/ishtar/sheet_administrativeact.html:19
-msgid "Signature date:"
-msgstr ""
-
-#: templates/ishtar/sheet_administrativeact.html:20
-msgid "In charge:"
-msgstr ""
-
-#: templates/ishtar/sheet_administrativeact.html:21
-msgid "Archaeological preventive operator:"
-msgstr ""
-
-#: templates/ishtar/sheet_administrativeact.html:23
-msgid "Associated file:"
+#: widgets.py:55
+msgid "Add"
msgstr ""
-#: templates/ishtar/sheet_administrativeact.html:24
-msgid "Associated operation:"
+#: wizards.py:203
+msgid ""
+"Warning: No Archaeological File is provided. If you have forget it return to "
+"the first step."
msgstr ""
-#: templates/ishtar/sheet_administrativeact.html:26
+#: templates/ishtar/sheet_administrativeact.html:36
#: templates/ishtar/sheet_operation.html:38
msgid "Surface:"
msgstr ""
-#: templates/ishtar/sheet_administrativeact.html:27
-msgid "Created by:"
-msgstr ""
-
#: templates/ishtar/sheet_operation.html:14
msgid "This operation is virtual."
msgstr ""
diff --git a/archaeological_operations/management/commands/import_operations_old.py b/archaeological_operations/management/commands/import_operations_old.py
index a9ecf41c9..4ad229e9a 100755
--- a/archaeological_operations/management/commands/import_operations_old.py
+++ b/archaeological_operations/management/commands/import_operations_old.py
@@ -29,7 +29,7 @@ IMPORTERS = {'csv':import_from_csv,
class Command(BaseCommand):
args = '<filename> [<lines>]'
- help = "Import archaelogical operations"
+ help = "Import archaeological operations"
def handle(self, *args, **options):
if not args or not args[0]:
diff --git a/archaeological_operations/migrations/0001_initial.py b/archaeological_operations/migrations/0001_initial.py
index 6e4b66ce6..4172b9beb 100644
--- a/archaeological_operations/migrations/0001_initial.py
+++ b/archaeological_operations/migrations/0001_initial.py
@@ -6,6 +6,7 @@ from django.db import models
class Migration(SchemaMigration):
+ depends_on = (('archaeological_files', '0001_initial.py'), )
def forwards(self, orm):
# Adding model 'RemainType'
@@ -1056,4 +1057,4 @@ class Migration(SchemaMigration):
}
}
- complete_apps = ['archaeological_operations'] \ No newline at end of file
+ complete_apps = ['archaeological_operations']
diff --git a/archaeological_operations/migrations/0012_auto__add_field_administrativeact_treatment_file__add_field_administra.py b/archaeological_operations/migrations/0012_auto__add_field_administrativeact_treatment_file__add_field_administra.py
new file mode 100644
index 000000000..43e10b926
--- /dev/null
+++ b/archaeological_operations/migrations/0012_auto__add_field_administrativeact_treatment_file__add_field_administra.py
@@ -0,0 +1,860 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+ depends_on = (
+ ('archaeological_finds',
+ '0013_auto__add_treatmentfilesource__add_treatmentfile__add_unique_treatment.py'),
+ )
+
+ def forwards(self, orm):
+ # Adding field 'AdministrativeAct.treatment_file'
+ db.add_column('archaeological_operations_administrativeact', 'treatment_file',
+ self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='administrative_act', null=True, to=orm['archaeological_finds.TreatmentFile']),
+ keep_default=False)
+
+ # Adding field 'AdministrativeAct.treatment'
+ db.add_column('archaeological_operations_administrativeact', 'treatment',
+ self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='administrative_act', null=True, to=orm['archaeological_finds.Treatment']),
+ keep_default=False)
+
+
+ # Changing field 'ActType.intented_to'
+ db.alter_column('archaeological_operations_acttype', 'intented_to', self.gf('django.db.models.fields.CharField')(max_length=2))
+ # Adding field 'HistoricalAdministrativeAct.treatment_file_id'
+ db.add_column('archaeological_operations_historicaladministrativeact', 'treatment_file_id',
+ self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'HistoricalAdministrativeAct.treatment_id'
+ db.add_column('archaeological_operations_historicaladministrativeact', 'treatment_id',
+ self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting field 'AdministrativeAct.treatment_file'
+ db.delete_column('archaeological_operations_administrativeact', 'treatment_file_id')
+
+ # Deleting field 'AdministrativeAct.treatment'
+ db.delete_column('archaeological_operations_administrativeact', 'treatment_id')
+
+
+ # Changing field 'ActType.intented_to'
+ db.alter_column('archaeological_operations_acttype', 'intented_to', self.gf('django.db.models.fields.CharField')(max_length=1))
+ # Deleting field 'HistoricalAdministrativeAct.treatment_file_id'
+ db.delete_column('archaeological_operations_historicaladministrativeact', 'treatment_file_id')
+
+ # Deleting field 'HistoricalAdministrativeAct.treatment_id'
+ db.delete_column('archaeological_operations_historicaladministrativeact', 'treatment_id')
+
+
+ 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': '2017'})
+ },
+ '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.treatment': {
+ 'Meta': {'unique_together': "(('year', 'index'),)", 'object_name': 'Treatment'},
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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': '200', 'null': 'True', 'blank': 'True'}),
+ 'file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'to': "orm['archaeological_finds.TreatmentFile']"}),
+ 'goal': ('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'}),
+ 'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']", 'null': 'True', 'blank': 'True'}),
+ 'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'other_reference': ('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'}),
+ 'target_is_basket': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'treatment_state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentState']", 'null': 'True', 'blank': 'True'}),
+ 'treatment_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_finds.TreatmentType']", 'symmetrical': 'False'}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.treatmentfile': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('year', 'index'),)", 'object_name': 'TreatmentFile'},
+ 'applicant': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_applicant'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'applicant_organisation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_applicant'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}),
+ 'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}),
+ 'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'external_id': ('django.db.models.fields.CharField', [], {'max_length': '200', '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_treatmentfile'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatmentfile_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+ 'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+ 'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentFileType']"}),
+ 'year': ('django.db.models.fields.IntegerField', [], {'default': '2017'})
+ },
+ 'archaeological_finds.treatmentfiletype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentFileType'},
+ '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.treatmentstate': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentState'},
+ '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.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'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentType']", 'null': 'True', 'blank': 'True'}),
+ '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': '2'}),
+ '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'}),
+ 'treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}),
+ 'treatment_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_finds.TreatmentFile']"}),
+ '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'}),
+ 'treatment_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'treatment_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', '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': '255', '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'}),
+ 'scientific_documentation_comment': ('django.db.models.fields.TextField', [], {'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': '255', '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': '255', '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'}),
+ 'scientific_documentation_comment': ('django.db.models.fields.TextField', [], {'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': '255', 'null': 'True', 'blank': 'True'}),
+ 'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operations'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}),
+ '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': '255', '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': '255', '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'})
+ },
+ 'archaeological_warehouse.container': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('index', 'location'),)", 'object_name': 'Container'},
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cached_location': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'containers'", 'to': "orm['archaeological_warehouse.Warehouse']"}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'responsible': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_containers'", 'null': 'True', 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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'}),
+ 'associated_divisions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']", 'symmetrical': 'False', 'through': "orm['archaeological_warehouse.WarehouseDivisionLink']", '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': '200'}),
+ '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.warehousedivision': {
+ 'Meta': {'object_name': 'WarehouseDivision'},
+ '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_warehouse.warehousedivisionlink': {
+ 'Meta': {'ordering': "('warehouse', 'order')", 'unique_together': "(('warehouse', 'division'),)", 'object_name': 'WarehouseDivisionLink'},
+ 'division': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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']},
+ 'advanced_shortcut_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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']
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 14e5e1f7e..129040706 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -225,6 +225,28 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
'finds_deadline_before': 'finds_deadline__lte',
'finds_deadline_after': 'finds_deadline__gte',
}
+ EXTRA_FULL_FIELDS_LABELS = {
+ 'full_code_patriarche': u"Code patriarche",
+ 'year_index': _(u"Year - Index"),
+ 'associated_file_short_label': _(u"Associated file (label)"),
+ 'operator__name': _(u"Operator name"),
+ 'scientist__raw_name': _(u"Scientist (full name)"),
+ 'associated_file__external_id': _(u"Associated file (external ID)"),
+ 'scientist__title': _(u"Scientist (title)"),
+ 'scientist__surname': _(u"Scientist (surname)"),
+ 'scientist__name': _(u"Scientist (name)"),
+ 'scientist__attached_to__name': _(u"Scientist - Organization (name)"),
+ 'in_charge__title': _(u"In charge (title)"),
+ 'in_charge__surname': _(u"In charge (surname)"),
+ 'in_charge__name': _(u"In charge (name)"),
+ 'in_charge__attached_to__name': _(u"In charge - Organization (name)"),
+ 'cira_rapporteur__surname': u"Rapporteur CIRA (prénom)",
+ 'cira_rapporteur__name': u"Rapporteur CIRA (nom)",
+ 'cira_rapporteur__attached_to__name': u"Rapporteur CIRA - "
+ u"Organisation (nom)",
+ 'archaeological_sites__reference': _(u"Archaeological sites ("
+ u"reference)"),
+ }
# fields definition
creation_date = models.DateField(_(u"Creation date"),
@@ -355,9 +377,9 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,
@classmethod
def get_owns(cls, user, menu_filtr=None, limit=None):
- replace_query = {}
- if menu_filtr:
- replace_query = {'associated_file': menu_filtr}
+ replace_query = None
+ if menu_filtr and 'file' in menu_filtr:
+ replace_query = Q(associated_file=menu_filtr['file'])
owns = super(Operation, cls).get_owns(
user, replace_query=replace_query,
limit=limit)
@@ -798,9 +820,9 @@ post_delete.connect(post_delete_record_relation, sender=RecordRelations)
class OperationByDepartment(models.Model):
- '''
+ """
Database view for dashboard
- '''
+ """
operation = models.ForeignKey(Operation, verbose_name=_(u"Operation"))
department = models.ForeignKey(Department, verbose_name=_(u"Department"),
blank=True, null=True)
@@ -860,8 +882,10 @@ class OperationSource(Source):
class ActType(GeneralType):
TYPE = (('F', _(u'Archaeological file')),
('O', _(u'Operation')),
+ ('TF', _(u'Treatment request')),
+ ('T', _(u'Treatment')),
)
- intented_to = models.CharField(_(u"Intended to"), max_length=1,
+ intented_to = models.CharField(_(u"Intended to"), max_length=2,
choices=TYPE)
code = models.CharField(_(u"Code"), max_length=10, blank=True, null=True)
associated_template = models.ManyToManyField(
@@ -965,7 +989,17 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter):
'archaeological_files.File',
blank=True, null=True,
related_name='administrative_act',
- verbose_name=_(u"Archaelogical file"))
+ verbose_name=_(u"Archaeological file"))
+ treatment_file = models.ForeignKey(
+ 'archaeological_finds.TreatmentFile',
+ blank=True, null=True,
+ related_name='administrative_act',
+ verbose_name=_(u"Treatment request"))
+ treatment = models.ForeignKey(
+ 'archaeological_finds.Treatment',
+ blank=True, null=True,
+ related_name='administrative_act',
+ verbose_name=_(u"Treatment"))
signature_date = models.DateField(_(u"Signature date"), blank=True,
null=True)
year = models.IntegerField(_(u"Year"), blank=True, null=True)
@@ -1003,7 +1037,7 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter):
def __unicode__(self):
return settings.JOINT.join(
[unicode(item) for item in [
- self.operation, self.associated_file, self.act_object]
+ self.related_item, self.act_object]
if item])
full_ref_lbl = _(u"Ref.")
@@ -1020,6 +1054,10 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter):
return u" ".join(lbl)
@property
+ def associated_filename(self):
+ return self.get_filename()
+
+ @property
def towns(self):
if self.associated_file:
return self.associated_file.towns.all()
@@ -1047,7 +1085,14 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter):
@property
def related_item(self):
- return self.operation if self.operation else self.associated_file
+ if self.operation:
+ return self.operation
+ if self.associated_file:
+ return self.associated_file
+ if self.treatment:
+ return self.treatment
+ if self.treatment_file:
+ return self.treatment_file
def get_filename(self):
filename = self.related_item.associated_filename
diff --git a/archaeological_operations/templates/ishtar/sheet_administrativeact.html b/archaeological_operations/templates/ishtar/sheet_administrativeact.html
index 57acf9cbe..b12c1f8c0 100644
--- a/archaeological_operations/templates/ishtar/sheet_administrativeact.html
+++ b/archaeological_operations/templates/ishtar/sheet_administrativeact.html
@@ -1,32 +1,46 @@
{% extends "ishtar/sheet.html" %}
-{% load i18n window_header %}
+{% load i18n window_header window_field %}
{% block head_title %}{% trans "Administrative act" %}{% endblock %}
{% block content %}
{% if item.operation %}
{% window_nav item window_id 'show-administrativeact' 'operation_administrativeactop_modify' %}
-{% else %}
+{% endif %}
+{% if item.associated_file %}
{% window_nav item window_id 'show-administrativeact' 'file_administrativeactfile_modify' %}
{% endif %}
+{% if item.treatment %}
+{% window_nav item window_id 'show-administrativeact' 'treatment_administrativeacttreatment_modify' %}
+{% endif %}
+{% if item.treatment_file %}
+{% window_nav item window_id 'show-administrativeact' 'treatmentfile_administrativeacttreatmentfile_modify' %}
+{% endif %}
<h3>{% trans "General"%}</h3>
-<p><label>{%trans "Year:"%}</label> <span class='value strong'>{{ item.year }}</span></p>
-{% if item.index %}<p><label>{%trans "Numerical reference:"%}</label> <span class='value strong'>{{ item.index }}</span></p>{% endif %}
-{% if item.ref_sra %}<p><label>{%trans "Internal reference:"%}</label> <span class='value strong'>{{ item.ref_sra }}</span></p>{% endif %}
-<p><label>{%trans "Type:"%}</label> <span class='value'>{{ item.act_type }}</span></p>
-{% if item.act_object %}<p><label>{%trans "Object:"%}</label> <span class='value'>{{ item.act_object }}</span></p>{% endif %}
-<p><label>{%trans "Signature date:"%}</label> <span class='value'>{{ item.signature_date }}</span></p>
-<p><label>{%trans "In charge:"%}</label> <span class='value'>{{ item.in_charge.full_label }}</span></p>
-{% if item.operator %}<p><label>{%trans "Archaeological preventive operator:"%}</label> <span class='value'>{{ item.operator }}</span></p>{% endif %}
-
-{% if item.associated_file %}<p><label>{%trans "Associated file:"%}</label> <span class='value'><a href='#' onclick='load_window("{% url show-file item.associated_file.pk ''%}")'>{{ item.associated_file }}</a></span></p>{% endif %} <!-- Displayed as Year/index/Commune/Common_name This should be a link to the file sheet of the related file -->
-{% if item.operation %}<p><label>{%trans "Associated operation:"%}</label> <span class='value'><a href='#' onclick='load_window("{% url show-operation item.operation.pk ''%}")'>{{ item.operation }}</a></span></p>{% endif %} <!-- Displayed as Year/index/Commune/Common_name This should be a link to the file sheet of the related operation -->
+<ul class='form-flex'>
+ {% field_li "Year" item.year %}
+ {% field_li "Index" item.index %}
+ {% field_li "Internal reference" item.ref_sra %}
+ {% field_li "Type" item.act_type %}
+ {% field_li "Object" item.act_object %}
+ {% field_li "Signature date" item.signature_date %}
+ {% field_li "In charge" item.in_charge %}
+ {% field_li "Archaeological preventive operator" item.operator %}
+ {% field_li_detail "Associated file" item.associated_file %}
+ {% field_li_detail "Operation" item.operation %}
+ {% field_li_detail "Treatment" item.treatment %}
+ {% field_li_detail "Treatment request" item.treatment_file %}
-{% if item.operation %}{% if item.operation.surface %}<p><label>{%trans "Surface:"%}</label> <span class='value'>{{ item.operation.surface }} m<sup>2</sup> ({{ item.operation.surface_ha }} ha)</span></p>{%endif%} {% endif %}
-<p><label>{%trans "Created by:"%}</label> <span class='value'>{{ item.history_creator.ishtaruser.full_label }}</span></p>
-{%comment%}{% if item.general_contractor.attached_to %}<p><label>{%trans "General contractor organisation:"%}</label> <span class='value'>{{ item.general_contractor.attached_to }}</span></p>{% endif %} <!-- Contractor's organisation displayed as concat of Name/Adress/postal_code/city -->
+ {% if item.operation and item.operation.surface %}
+ <li><label>{% trans "Surface:"%}</label> <span class='value'>{{ item.operation.surface }} m<sup>2</sup> ({{ item.operation.surface_ha }} ha)</span></li>
+ {% endif %}
+ {% field_li "Created by" item.history_creator.ishtaruser %}
+{% comment %}{% if item.general_contractor.attached_to %}<p>
+ <label>{% trans "General contractor organisation:"%}</label>
+ <span class='value'>{{ item.general_contractor.attached_to }}</span></p>{% endif %} <!-- Contractor's organisation displayed as concat of Name/Adress/postal_code/city -->
{% if item.general_contractor %}<p><label>{%trans "General contractor:"%}</label> <span class='value'>{{ item.general_contractor.full_label }}</span></p>{% endif %}
-{%endcomment%}
+{% endcomment %}
+</ul>
{% endblock %}
diff --git a/archaeological_operations/templates/ishtar/sheet_operation.html b/archaeological_operations/templates/ishtar/sheet_operation.html
index daddb42d6..43446c516 100644
--- a/archaeological_operations/templates/ishtar/sheet_operation.html
+++ b/archaeological_operations/templates/ishtar/sheet_operation.html
@@ -49,11 +49,11 @@
{% 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 %}
+{% field_li "Responsible for planning service" item.associated_file.responsible_town_planning_service.full_address %}
{% if item.associated_file.town_planning_service %}
- {% field_li "Town planning service organization" item.associated_file.town_planning_service.full_address %}
+ {% field_li "Planning service organization" item.associated_file.town_planning_service.full_address %}
{% else %}
- {% field_li "Town planning service organization" item.associated_file.responsible_town_planning_service.attached_to.full_address %}
+ {% field_li "Planning service organization" item.associated_file.responsible_town_planning_service.attached_to.full_address %}
{% endif %}
{% field_li "Permit type" item.associated_file.permit_type %}
{% field_li "Permit reference" item.associated_file.permit_reference %}
@@ -115,7 +115,7 @@
{% trans "Context record relations" as cr_rels %}
{% if item.context_record_relations_q.count %}
-{% dynamic_table_document cr_rels 'context_records_relations' 'left_record__operation' item.pk '' output %}
+{% dynamic_table_document cr_rels 'context_records_relations_detail' 'left_record__operation' item.pk '' output %}
{% endif %}
{% trans "Documents from associated context records" as cr_docs %}
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py
index dd294550e..d8399eedb 100644
--- a/archaeological_operations/tests.py
+++ b/archaeological_operations/tests.py
@@ -38,7 +38,8 @@ from ishtar_common.models import OrganizationType, Organization, \
ImporterType, IshtarUser, TargetKey, IshtarSiteProfile
from ishtar_common import forms_common
-from ishtar_common.tests import WizardTest, create_superuser, create_user
+from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \
+ create_superuser, create_user
class ImportOperationTest(TestCase):
@@ -481,7 +482,9 @@ class OperationInitTest(object):
self.parcels.append(models.Parcel.objects.create(**default))
return self.parcels
- def get_default_parcel(self):
+ def get_default_parcel(self, force=False):
+ if force:
+ return self.create_parcel()[-1]
return self.create_parcel()[0]
def create_operation(self, user=None, orga=None):
@@ -495,6 +498,8 @@ class OperationInitTest(object):
return self.operations
def get_default_operation(self, force=False):
+ if force:
+ return self.create_operation()[-1]
return self.create_operation()[0]
def tearDown(self):
@@ -668,20 +673,20 @@ class OperationWizardCreationTest(WizardTest, OperationInitTest, TestCase):
url_name = 'operation_creation'
wizard_name = 'operation_wizard'
steps = views.wizard_steps
- form_datas = [(
- # data
- {
- 'general-operation_creation': {
- 'operation_type': 1, # preventive diag
- 'year': 2016}
- },
- # ignored
- ('filechoice-operation_creation',
- 'preventive-operation_creation',
- 'towns-operation_creation',
- 'parcels-operation_creation',
- )
- )]
+ form_datas = [
+ FormData(
+ "Create a preventive diag",
+ form_datas={
+ 'general-operation_creation': {
+ 'operation_type': 1, # preventive diag
+ 'year': 2016}
+ },
+ ignored=('filechoice-operation_creation',
+ 'preventive-operation_creation',
+ 'towns-operation_creation',
+ 'parcels-operation_creation', )
+ )
+ ]
def pre_wizard(self):
self.operation_number = models.Operation.objects.count()
@@ -692,20 +697,56 @@ class OperationWizardCreationTest(WizardTest, OperationInitTest, TestCase):
self.operation_number + 1)
+class OperationWizardDeleteTest(OperationWizardCreationTest):
+ fixtures = OperationWizardCreationTest.fixtures
+ url_name = 'operation_deletion'
+ wizard_name = 'operation_deletion_wizard'
+ steps = views.operation_deletion_steps
+ form_datas = [
+ FormData(
+ "Wizard deletion test",
+ form_datas={
+ 'selec-operation_deletion': {'pk': None},
+ }
+ )
+ ]
+
+ def pass_test(self):
+ if not settings.SOUTH_TESTS_MIGRATE:
+ # with no migration the views are not created
+ return True
+
+ def pre_wizard(self):
+ self.ope = self.get_default_operation(force=True)
+ self.form_datas[0].form_datas['selec-operation_deletion']['pk'] = \
+ self.ope.pk
+ self.operation_number = models.Operation.objects.count()
+ super(OperationWizardDeleteTest, self).pre_wizard()
+
+ def post_wizard(self):
+ self.assertEqual(self.operation_number - 1,
+ models.Operation.objects.count())
+
+
class OperationWizardClosingTest(OperationWizardCreationTest):
fixtures = OperationWizardCreationTest.fixtures
url_name = 'operation_closing'
wizard_name = 'operation_closing_wizard'
steps = views.operation_closing_steps
- form_datas = [[
- {
- 'selec-operation_closing': {'pk': None},
- 'date-operation_closing': {'end_date': '2016-01-01'},
- }, []]]
+ form_datas = [
+ FormData(
+ "Wizard closing test",
+ form_datas={
+ 'selec-operation_closing': {'pk': None},
+ 'date-operation_closing': {'end_date': '2016-01-01'},
+ }
+ )
+ ]
def pre_wizard(self):
self.ope = self.get_default_operation()
- self.form_datas[0][0]['selec-operation_closing']['pk'] = self.ope.pk
+ self.form_datas[0].form_datas['selec-operation_closing']['pk'] = \
+ self.ope.pk
self.assertTrue(self.ope.is_active())
super(OperationWizardClosingTest, self).pre_wizard()
@@ -714,7 +755,7 @@ class OperationWizardClosingTest(OperationWizardCreationTest):
self.assertFalse(ope.is_active())
self.assertEqual(
ope.closing()['date'].strftime('%Y-%d-%m'),
- self.form_datas[0][0]['date-operation_closing']['end_date'])
+ self.form_datas[0].form_datas['date-operation_closing']['end_date'])
class OperationAdminActWizardCreationTest(WizardTest, OperationInitTest,
@@ -730,25 +771,24 @@ class OperationAdminActWizardCreationTest(WizardTest, OperationInitTest,
url_name = 'operation_administrativeactop'
wizard_name = 'operation_administrative_act_wizard'
steps = views.administrativeactop_steps
- form_datas = [[
- # data
- {
- 'selec-operation_administrativeactop': {
- },
- 'administrativeact-operation_administrativeactop': {
- 'signature_date': str(datetime.date.today())
- }
- },
- # ignored
- []
- ]]
+ form_datas = [
+ FormData(
+ "Admin act creation",
+ form_datas={
+ 'selec-operation_administrativeactop': {
+ },
+ 'administrativeact-operation_administrativeactop': {
+ 'signature_date': str(datetime.date.today())
+ }
+ },
+ )
+ ]
def pre_wizard(self):
ope = self.get_default_operation()
-
self.number = models.AdministrativeAct.objects.count()
- data = self.form_datas[0][0]
+ data = self.form_datas[0].form_datas
data['selec-operation_administrativeactop']['pk'] = ope.pk
act = models.ActType.objects.filter(intented_to='O').all()[0].pk
diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py
index aca98d4c4..e98ddc93f 100644
--- a/archaeological_operations/urls.py
+++ b/archaeological_operations/urls.py
@@ -128,9 +128,13 @@ urlpatterns += patterns(
# allow specialization for operations
url(r'show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$',
'show_administrativeact', name='show-administrativeactop'),
- # allow specialization for files
+ # allow specialization for files, treatment, treatment request
url(r'show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$',
'show_administrativeact', name='show-administrativeactfile'),
+ url(r'show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$',
+ 'show_administrativeact', name='show-administrativeacttreatment'),
+ url(r'show-administrativeact(?:/(?P<pk>.+))?/(?P<type>.+)?$',
+ 'show_administrativeact', name='show-administrativeacttreatmentfile'),
url(r'generatedoc-administrativeactop/(?P<pk>.+)?/(?P<template_pk>.+)?$',
'generatedoc_administrativeactop',
name='generatedoc-administrativeactop'),
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py
index 18d57e617..005fae0db 100644
--- a/archaeological_operations/views.py
+++ b/archaeological_operations/views.py
@@ -163,8 +163,8 @@ def dashboard_operation(request, *args, **kwargs):
return render_to_response('ishtar/dashboards/dashboard_operation.html',
dct, context_instance=RequestContext(request))
-operation_search_wizard = SearchWizard.as_view([
- ('general-operation_search', OperationFormSelection)],
+operation_search_wizard = SearchWizard.as_view(
+ [('general-operation_search', OperationFormSelection)],
label=_(u"Operation search"),
url_name='operation_search',)
@@ -276,9 +276,14 @@ operation_closing_wizard = OperationClosingWizard.as_view(
label=_(u"Operation closing"),
url_name='operation_closing',)
-operation_deletion_wizard = OperationDeletionWizard.as_view([
+
+operation_deletion_steps = [
('selec-operation_deletion', OperationFormSelection),
- ('final-operation_deletion', OperationDeletionForm)],
+ ('final-operation_deletion', OperationDeletionForm)
+]
+
+operation_deletion_wizard = OperationDeletionWizard.as_view(
+ operation_deletion_steps,
label=_(u"Operation deletion"),
url_name='operation_deletion',)
@@ -404,17 +409,30 @@ def generatedoc_administrativeactop(request, pk, template_pk=None):
return HttpResponse(mimetype='text/plain')
-def administrativeactfile_document(request, operation=True):
+def administrativeactfile_document(
+ request, file=False, treatment=False, treatment_file=False):
search_form = AdministrativeActOpeFormSelection
- if not operation:
+ document_type = 'O'
+ if file:
from archaeological_files.forms import \
AdministrativeActFileFormSelection
search_form = AdministrativeActFileFormSelection
+ document_type = 'F'
+ elif treatment:
+ from archaeological_finds.forms import \
+ AdministrativeActTreatmentFormSelection
+ search_form = AdministrativeActTreatmentFormSelection
+ document_type = 'T'
+ elif treatment_file:
+ from archaeological_finds.forms import \
+ AdministrativeActTreatmentFileFormSelection
+ search_form = AdministrativeActTreatmentFileFormSelection
+ document_type = 'TF'
dct = {}
if request.POST:
dct['search_form'] = search_form(request.POST)
dct['template_form'] = DocumentGenerationAdminActForm(
- operation=operation)
+ document_type=document_type)
c_object = None
try:
if dct['search_form'].is_valid():
@@ -425,7 +443,7 @@ def administrativeactfile_document(request, operation=True):
pass
if c_object:
dct['template_form'] = DocumentGenerationAdminActForm(
- request.POST, operation=operation, obj=c_object)
+ request.POST, document_type=document_type, obj=c_object)
if dct['template_form'].is_valid():
return generatedoc_administrativeactop(
request,
@@ -434,7 +452,7 @@ def administrativeactfile_document(request, operation=True):
else:
dct['search_form'] = search_form()
dct['template_form'] = DocumentGenerationAdminActForm(
- operation=operation)
+ document_type=document_type)
return render_to_response('ishtar/administrativeact_document.html', dct,
context_instance=RequestContext(request))
diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py
index 572a25ca0..94aafb87c 100644
--- a/archaeological_operations/wizards.py
+++ b/archaeological_operations/wizards.py
@@ -17,6 +17,8 @@
# See the file COPYING for details.
+import logging
+
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
@@ -33,6 +35,8 @@ from forms import GenerateDocForm
from archaeological_files.models import File
+logger = logging.getLogger(__name__)
+
class OperationWizard(Wizard):
model = models.Operation
@@ -73,7 +77,7 @@ class OperationWizard(Wizard):
def get_reminder(self):
archaeological_file = self.get_current_file()
if archaeological_file:
- return ((_("Archaelogical file"),
+ return ((_("Archaeological file"),
unicode(archaeological_file)),)
def get_context_data(self, form, **kwargs):
@@ -86,7 +90,7 @@ class OperationWizard(Wizard):
if step.startswith('towns'):
context['TOWNS'] = self.get_towns()
elif step.startswith('parcels-') and self.get_current_file():
- # if a file is acciated to the operation add the button "Add all"
+ # if a file is associated to the operation add the button "Add all"
context['add_all'] = True
if step.startswith('parcels') and \
hasattr(self, 'automatic_parcel_association'):
@@ -189,14 +193,14 @@ class OperationWizard(Wizard):
def get_formated_datas(self, forms):
"""
- Show a specific warning if no archaelogical file is provided
+ Show a specific warning if no archaeological file is provided
"""
datas = super(OperationWizard, self).get_formated_datas(forms)
# if the general town form is used the advertissement is relevant
has_no_af = [form.prefix for form in forms
if form.prefix == 'townsgeneral-operation'] and True
if has_no_af:
- datas = [[_(u"Warning: No Archaelogical File is provided. "
+ datas = [[_(u"Warning: No Archaeological File is provided. "
u"If you have forget it return to the first step."), []]]\
+ datas
return datas
@@ -245,7 +249,7 @@ class OperationWizard(Wizard):
request = self.request
post_data = request.POST.copy()
- # add all parcel from available in the archaelogical file
+ # add all parcel from available in the archaeological file
if not post_data.get('add_all_parcels'):
return super(OperationWizard, self).post(*args, **kwargs)
@@ -327,6 +331,7 @@ class OperationAdministrativeActWizard(OperationWizard):
edit = False
wizard_done_window = reverse_lazy('show-administrativeact')
current_obj_slug = 'administrativeactop'
+ ref_object_key = 'operation'
def get_reminder(self):
form_key = 'selec-' + self.url_name
@@ -389,11 +394,9 @@ class OperationAdministrativeActWizard(OperationWizard):
else:
associated_item = self.get_associated_item(dct)
if not associated_item:
+ logger.warning("Admin act save: no associated model")
return self.render(form_list[-1])
- if isinstance(associated_item, File):
- dct['associated_file'] = associated_item
- elif isinstance(associated_item, models.Operation):
- dct['operation'] = associated_item
+ dct[self.ref_object_key] = associated_item
admact = models.AdministrativeAct(**dct)
admact.save()
dct['item'] = admact
diff --git a/archaeological_warehouse/admin.py b/archaeological_warehouse/admin.py
index cf71dbab6..911809d0f 100644
--- a/archaeological_warehouse/admin.py
+++ b/archaeological_warehouse/admin.py
@@ -48,6 +48,6 @@ class ContainerAdmin(admin.ModelAdmin):
admin.site.register(models.Container, ContainerAdmin)
-general_models = [models.WarehouseType]
+general_models = [models.WarehouseType, models.WarehouseDivision]
for model in general_models:
admin.site.register(model, GeneralTypeAdmin)
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index b34be3ab3..e91d04d61 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -19,6 +19,7 @@
from django import forms
from django.conf import settings
+from django.forms.formsets import formset_factory
from django.utils.translation import ugettext_lazy as _
from ishtar_common.models import Person, valid_id
@@ -26,7 +27,7 @@ from archaeological_finds.models import TreatmentType, FindBasket
import models
from ishtar_common import widgets
from ishtar_common.forms import name_validator, reverse_lazy, \
- get_form_selection, TableSelect, ManageOldType
+ get_form_selection, TableSelect, ManageOldType, FinalForm
from archaeological_finds.forms import FindMultipleFormSelection, \
SelectFindBasketForm
@@ -39,7 +40,58 @@ def get_warehouse_field(label=_(u"Warehouse"), required=True):
validators=[valid_id(models.Warehouse)])
+class SelectedDivisionForm(ManageOldType, forms.Form):
+ form_label = _(u"Division")
+ base_model = 'associated_division'
+ associated_models = {'division': models.WarehouseDivision,
+ 'associated_division': models.WarehouseDivisionLink}
+ division = forms.ChoiceField(
+ label=_(u"Division"), choices=(), required=False,
+ validators=[valid_id(models.WarehouseDivision)])
+ order = forms.IntegerField(_(u"Order"), initial=10, required=False)
+
+ def __init__(self, *args, **kwargs):
+ super(SelectedDivisionForm, self).__init__(*args, **kwargs)
+ self.fields['division'].choices = \
+ models.WarehouseDivision.get_types(
+ initial=self.init_data.get('division')
+ )
+
+SelectedDivisionFormset = formset_factory(
+ SelectedDivisionForm, can_delete=True)
+SelectedDivisionFormset.form_label = _(u"Divisions")
+
+
+class WarehouseSelect(TableSelect):
+ name = forms.CharField(label=_(u"Name"))
+ warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"), choices=[])
+ towns = forms.CharField(label=_(u"Town"))
+
+ def __init__(self, *args, **kwargs):
+ super(WarehouseSelect, self).__init__(*args, **kwargs)
+ self.fields['warehouse_type'].choices = \
+ models.WarehouseType.get_types()
+ self.fields['warehouse_type'].help_text = \
+ models.WarehouseType.get_help()
+
+
+class WarehouseFormSelection(forms.Form):
+ form_label = _("Warehouse search")
+ associated_models = {'pk': models.Warehouse}
+ currents = {'pk': models.Warehouse}
+ pk = forms.IntegerField(
+ label="", required=False,
+ widget=widgets.JQueryJqGrid(
+ reverse_lazy('get-warehouse'),
+ WarehouseSelect, models.Warehouse),
+ validators=[valid_id(models.Warehouse)])
+
+
class WarehouseForm(ManageOldType, forms.Form):
+ form_label = _(u"Warehouse")
+ associated_models = {'warehouse_type': models.WarehouseType,
+ 'person_in_charge': Person}
+
name = forms.CharField(label=_(u"Name"), max_length=40,
validators=[name_validator])
warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"),
@@ -48,8 +100,8 @@ class WarehouseForm(ManageOldType, forms.Form):
label=_(u"Person in charge"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-person'),
- associated_model=models.Person),
- validators=[valid_id(models.Person)],
+ associated_model=Person),
+ validators=[valid_id(Person)],
required=False)
comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea,
required=False)
@@ -63,7 +115,7 @@ class WarehouseForm(ManageOldType, forms.Form):
country = forms.CharField(label=_(u"Country"), max_length=30,
required=False)
phone = forms.CharField(label=_(u"Phone"), max_length=18, required=False)
- mobile_phone = forms.CharField(label=_(u"Town"), max_length=18,
+ mobile_phone = forms.CharField(label=_(u"Mobile phone"), max_length=18,
required=False)
def __init__(self, *args, **kwargs):
@@ -89,12 +141,26 @@ class WarehouseForm(ManageOldType, forms.Form):
return new_item
+class WarehouseDeletionForm(FinalForm):
+ confirm_msg = _(u"Would you like to delete this warehouse?")
+ confirm_end_msg = _(u"Would you like to delete this warehouse?")
+
+
class ContainerForm(ManageOldType, forms.Form):
form_label = _(u"Container")
+ associated_models = {'container_type': models.ContainerType,
+ 'location': models.Warehouse,
+ 'responsible': models.Warehouse}
reference = forms.CharField(label=_(u"Ref."))
container_type = forms.ChoiceField(label=_(u"Container type"), choices=[])
location = forms.IntegerField(
- label=_(u"Warehouse"),
+ label=_(u"Current location (warehouse)"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-warehouse'),
+ associated_model=models.Warehouse, new=True),
+ validators=[valid_id(models.Warehouse)])
+ responsible = forms.IntegerField(
+ label=_(u"Responsible warehouse"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-warehouse'),
associated_model=models.Warehouse, new=True),
@@ -123,6 +189,31 @@ class ContainerForm(ManageOldType, forms.Form):
return new_item
+class ContainerModifyForm(ContainerForm):
+ pk = forms.IntegerField(required=False, widget=forms.HiddenInput)
+ index = forms.IntegerField(_(u"Index"))
+
+ def __init__(self, *args, **kwargs):
+ super(ContainerModifyForm, self).__init__(*args, **kwargs)
+ self.fields.keyOrder.pop(self.fields.keyOrder.index('index'))
+ self.fields.keyOrder.insert(
+ self.fields.keyOrder.index("location") + 1, 'index')
+
+ def clean(self):
+ # manage unique ID
+ cleaned_data = self.cleaned_data
+ index = cleaned_data.get("index")
+ warehouse = cleaned_data.get("location")
+ q = models.Container.objects.filter(
+ index=index, location__pk=warehouse)
+ if 'pk' in cleaned_data and cleaned_data['pk']:
+ q = q.exclude(pk=int(cleaned_data['pk']))
+ if q.count():
+ raise forms.ValidationError(_(u"This ID already exists for "
+ u"this warehouse."))
+ return cleaned_data
+
+
class ContainerSelect(TableSelect):
location = get_warehouse_field()
container_type = forms.ChoiceField(label=_(u"Container type"), choices=[])
@@ -141,6 +232,12 @@ ContainerFormSelection = get_form_selection(
_(u"You should select a container."), new=True,
new_message=_(u"Add a new container"))
+MainContainerFormSelection = get_form_selection(
+ 'ContainerFormSelection', _(u"Container search"), 'pk',
+ models.Container, ContainerSelect, 'get-container',
+ _(u"You should select a container.")
+)
+
class BasePackagingForm(SelectFindBasketForm):
form_label = _(u"Packaging")
@@ -148,7 +245,6 @@ class BasePackagingForm(SelectFindBasketForm):
'person': Person,
'location': models.Warehouse,
'basket': FindBasket}
- treatment_type = forms.IntegerField(label="", widget=forms.HiddenInput)
person = forms.IntegerField(
label=_(u"Packager"),
widget=widgets.JQueryAutoComplete(
@@ -158,11 +254,35 @@ class BasePackagingForm(SelectFindBasketForm):
start_date = forms.DateField(
label=_(u"Date"), required=False, widget=widgets.JQueryDate)
- def __init__(self, *args, **kwargs):
- super(BasePackagingForm, self).__init__(*args, **kwargs)
- self.fields['treatment_type'].initial = \
- TreatmentType.objects.get(txt_idx='packaging').pk
-
class FindPackagingFormSelection(FindMultipleFormSelection):
form_label = _(u"Packaged finds")
+
+
+class LocalisationForm(forms.Form):
+ form_label = _(u"Localisation")
+
+ def __init__(self, *args, **kwargs):
+ container, warehouse = None, None
+ if 'warehouse' in kwargs:
+ warehouse = kwargs.pop('warehouse')
+ if 'container' in kwargs:
+ container = kwargs.pop('container')
+ super(LocalisationForm, self).__init__(*args, **kwargs)
+ if not warehouse:
+ return
+ for divlink in warehouse.warehousedivisionlink_set.order_by(
+ 'order').all():
+ initial = u"-"
+ if container:
+ q = models.ContainerLocalisation.objects.filter(
+ division=divlink, container=container)
+ if q.count():
+ initial = q.all()[0].reference
+ self.fields['division_{}'.format(divlink.pk)] = forms.CharField(
+ label=str(divlink.division), max_length=200, initial=initial)
+
+
+class ContainerDeletionForm(FinalForm):
+ confirm_msg = _(u"Would you like to delete this container?")
+ confirm_end_msg = _(u"Would you like to delete this container?")
diff --git a/archaeological_warehouse/ishtar_menu.py b/archaeological_warehouse/ishtar_menu.py
index f9f0daf33..c240cba84 100644
--- a/archaeological_warehouse/ishtar_menu.py
+++ b/archaeological_warehouse/ishtar_menu.py
@@ -23,29 +23,60 @@ from ishtar_common.menu_base import SectionItem, MenuItem
from archaeological_finds.models import Treatment
+import models
+
# be carreful: each access_controls must be relevant with check_rights in urls
MENU_SECTIONS = [
- (60, SectionItem('find_management', _(u"Find"),
+ (70, SectionItem('treatment_management', _(u"Treatment"),
profile_restriction='warehouse',
childs=[
MenuItem('warehouse_packaging', _(u"Packaging"),
model=Treatment,
access_controls=['add_treatment', 'add_own_treatment']),
])),
+ (80, SectionItem('warehouse', _(u"Warehouse"),
+ profile_restriction='warehouse',
+ childs=[
+ MenuItem('warehouse_search', _(u"Search"),
+ model=models.Warehouse,
+ access_controls=['view_warehouse',]),
+ MenuItem('warehouse_creation', _(u"Creation"),
+ model=models.Warehouse,
+ access_controls=['add_warehouse',]),
+ MenuItem('warehouse_modification', _(u"Modification"),
+ model=models.Warehouse,
+ access_controls=['change_warehouse',]),
+ MenuItem('warehouse_deletion', _(u"Deletion"),
+ model=models.Warehouse,
+ access_controls=['change_warehouse',]),
+ SectionItem(
+ 'containers', _(u"Containers"),
+ childs=[
+ MenuItem('container_search', _(u"Search"),
+ model=models.Warehouse,
+ access_controls=['change_warehouse',]),
+ MenuItem('container_creation', _(u"Creation"),
+ model=models.Warehouse,
+ access_controls=['change_warehouse',]),
+ MenuItem('container_modification', _(u"Modification"),
+ model=models.Warehouse,
+ access_controls=['change_warehouse',]),
+ MenuItem('container_deletion', _(u"Deletion"),
+ model=models.Warehouse,
+ access_controls=['change_warehouse',]),
+ ])
+ ]))
]
"""
- (60, SectionItem('warehouse', _(u"Warehouse"),
- childs=[
- MenuItem('warehouse_inventory', _(u"Inventory"),
- model=models.Warehouse,
- access_controls=['change_warehouse',]),
- MenuItem('warehouse_recording', _(u"Recording"),
- model=Treatment,
- access_controls=['add_treatment', 'add_own_treatment']),
- MenuItem('warehouse_lend', _(u"Lending"),
- model=Treatment,
- access_controls=['add_treatment', 'add_own_treatment']),
- ]))
+ MenuItem('warehouse_inventory', _(u"Inventory"),
+ model=models.Warehouse,
+ access_controls=['change_warehouse',]),
+ MenuItem('warehouse_recording', _(u"Recording"),
+ model=Treatment,
+ access_controls=['add_treatment', 'add_own_treatment']),
+ MenuItem('warehouse_lend', _(u"Lending"),
+ model=Treatment,
+ access_controls=['add_treatment', 'add_own_treatment']),
"""
diff --git a/archaeological_warehouse/locale/django.pot b/archaeological_warehouse/locale/django.pot
index 7155bb63e..82deac273 100644
--- a/archaeological_warehouse/locale/django.pot
+++ b/archaeological_warehouse/locale/django.pot
@@ -3,149 +3,302 @@
# This file is distributed under the same license as the Ishtar package.
# Étienne Loks <etienne.loks at peacefrogs net>, 2010-2011.
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
+# Valérie-Emma Leroux <emma@iggdrasil.net>, 2017. #zanata
msgid ""
msgstr ""
-#: forms.py:34 forms.py:97 models.py:47 models.py:87
+#: forms.py:35 forms.py:91 ishtar_menu.py:39 models.py:60 models.py:88
+#: templates/ishtar/sheet_warehouse.html:4
msgid "Warehouse"
msgstr ""
-#: forms.py:43 models.py:38
+#: forms.py:44 forms.py:49 models.py:234
+msgid "Division"
+msgstr ""
+
+#: forms.py:51 models.py:112
+msgid "Order"
+msgstr ""
+
+#: forms.py:62 models.py:53
+msgid "Divisions"
+msgstr ""
+
+#: forms.py:66 forms.py:95 models.py:45 models.py:85
msgid "Name"
msgstr ""
-#: forms.py:45 models.py:30 models.py:40
+#: forms.py:67 forms.py:97 models.py:36 models.py:47
msgid "Warehouse type"
msgstr ""
-#: forms.py:48 models.py:43
+#: forms.py:68 forms.py:114
+msgid "Town"
+msgstr ""
+
+#: forms.py:79 views.py:98
+msgid "Warehouse search"
+msgstr ""
+
+#: forms.py:100 models.py:50
msgid "Person in charge"
msgstr ""
-#: forms.py:54 forms.py:102 models.py:44 models.py:91
+#: forms.py:106 forms.py:168 models.py:51 models.py:165
msgid "Comment"
msgstr ""
-#: forms.py:56
+#: forms.py:108
msgid "Address"
msgstr ""
-#: forms.py:58
+#: forms.py:110
msgid "Address complement"
msgstr ""
-#: forms.py:60
+#: forms.py:112
msgid "Postal code"
msgstr ""
-#: forms.py:62 forms.py:66
-msgid "Town"
-msgstr ""
-
-#: forms.py:63
+#: forms.py:115
msgid "Country"
msgstr ""
-#: forms.py:65
+#: forms.py:117
msgid "Phone"
msgstr ""
-#: forms.py:93 models.py:94
+#: forms.py:118
+msgid "Mobile phone"
+msgstr ""
+
+#: forms.py:145 forms.py:146
+msgid "Would you like to delete this warehouse?"
+msgstr ""
+
+#: forms.py:150 models.py:173 models.py:232
+#: templates/ishtar/sheet_container.html:4
msgid "Container"
msgstr ""
-#: forms.py:94 forms.py:129 models.py:66
+#: forms.py:154 forms.py:220 models.py:127
msgid "Ref."
msgstr ""
-#: forms.py:95 forms.py:128 models.py:69 models.py:89
+#: forms.py:155 forms.py:219 models.py:130 models.py:163
msgid "Container type"
msgstr ""
-#: forms.py:139
+#: forms.py:157
+msgid "Current location (warehouse)"
+msgstr ""
+
+#: forms.py:163 models.py:160
+msgid "Responsible warehouse"
+msgstr ""
+
+#: forms.py:194
+msgid "Index"
+msgstr ""
+
+#: forms.py:212
+msgid "This ID already exists for this warehouse."
+msgstr ""
+
+#: forms.py:230 forms.py:236 views.py:127
msgid "Container search"
msgstr ""
-#: forms.py:141
+#: forms.py:232 forms.py:238
msgid "You should select a container."
msgstr ""
-#: forms.py:142
+#: forms.py:233
msgid "Add a new container"
msgstr ""
-#: forms.py:146 ishtar_menu.py:33 views.py:87
+#: forms.py:243 ishtar_menu.py:35 views.py:93
msgid "Packaging"
msgstr ""
-#: forms.py:153
+#: forms.py:249
msgid "Packager"
msgstr ""
-#: forms.py:159
+#: forms.py:255
msgid "Date"
msgstr ""
-#: forms.py:168
+#: forms.py:259
msgid "Packaged finds"
msgstr ""
-#: ishtar_menu.py:30
-msgid "Find"
+#: forms.py:263 models.py:166
+msgid "Localisation"
+msgstr ""
+
+#: forms.py:287 forms.py:288
+msgid "Would you like to delete this container?"
+msgstr ""
+
+#: ishtar_menu.py:32
+msgid "Treatment"
+msgstr ""
+
+#: ishtar_menu.py:42 ishtar_menu.py:57
+msgid "Search"
+msgstr ""
+
+#: ishtar_menu.py:45 ishtar_menu.py:60
+msgid "Creation"
msgstr ""
-#: models.py:31
+#: ishtar_menu.py:48 ishtar_menu.py:63
+msgid "Modification"
+msgstr ""
+
+#: ishtar_menu.py:51 ishtar_menu.py:66
+msgid "Deletion"
+msgstr ""
+
+#: ishtar_menu.py:55 models.py:174 templates/ishtar/sheet_warehouse.html:17
+msgid "Containers"
+msgstr ""
+
+#: models.py:37
msgid "Warehouse types"
msgstr ""
-#: models.py:48
+#: models.py:61
msgid "Warehouses"
msgstr ""
-#: models.py:50
+#: models.py:63
msgid "Can view all Warehouses"
msgstr ""
-#: models.py:51
+#: models.py:64
msgid "Can view own Warehouse"
msgstr ""
-#: models.py:52
+#: models.py:65
msgid "Can add own Warehouse"
msgstr ""
-#: models.py:53
+#: models.py:66
msgid "Can change own Warehouse"
msgstr ""
-#: models.py:54
+#: models.py:67
msgid "Can delete own Warehouse"
msgstr ""
-#: models.py:62
+#: models.py:87
+msgid "Description"
+msgstr ""
+
+#: models.py:92 models.py:93
+msgid "Collection"
+msgstr ""
+
+#: models.py:102
+msgid "Warehouse division"
+msgstr ""
+
+#: models.py:103
+msgid "Warehouse divisions"
+msgstr ""
+
+#: models.py:123
msgid "Length (mm)"
msgstr ""
-#: models.py:63
+#: models.py:124
msgid "Width (mm)"
msgstr ""
-#: models.py:64
+#: models.py:125
msgid "Height (mm)"
msgstr ""
-#: models.py:65
+#: models.py:126
msgid "Volume (l)"
msgstr ""
-#: models.py:70
+#: models.py:131
msgid "Container types"
msgstr ""
-#: models.py:90
+#: models.py:149
+msgid "Location - index"
+msgstr ""
+
+#: models.py:150
+msgid "Precise localisation"
+msgstr ""
+
+#: models.py:151
+msgid "Type"
+msgstr ""
+
+#: models.py:157
+msgid "Location (warehouse)"
+msgstr ""
+
+#: models.py:164
msgid "Container ref."
msgstr ""
-#: models.py:95
-msgid "Containers"
+#: models.py:168
+msgid "Cached location"
+msgstr ""
+
+#: models.py:235
+msgid "Reference"
+msgstr ""
+
+#: models.py:238
+msgid "Container localisation"
+msgstr ""
+
+#: models.py:239
+msgid "Container localisations"
+msgstr ""
+
+#: views.py:106
+msgid "Warehouse creation"
+msgstr ""
+
+#: views.py:115
+msgid "Warehouse modification"
+msgstr ""
+
+#: views.py:122
+msgid "Warehouse deletion"
+msgstr ""
+
+#: views.py:135
+msgid "Container creation"
+msgstr ""
+
+#: views.py:144
+msgid "Container modification"
+msgstr ""
+
+#: views.py:151
+msgid "Container deletion"
+msgstr ""
+
+#: templates/ishtar/sheet_container.html:19
+msgid "Content"
+msgstr ""
+
+#: templates/ishtar/sheet_warehouse.html:22
+msgid "Attached containers"
+msgstr ""
+
+#: templates/ishtar/wizard/wizard_containerlocalisation.html:5
+msgid ""
+"No division set for this warehouse. Define it to localise container in this "
+"warehouse."
msgstr ""
diff --git a/archaeological_warehouse/migrations/0003_auto__add_warehousedivisionlink__add_unique_warehousedivisionlink_ware.py b/archaeological_warehouse/migrations/0003_auto__add_warehousedivisionlink__add_unique_warehousedivisionlink_ware.py
new file mode 100644
index 000000000..77957834c
--- /dev/null
+++ b/archaeological_warehouse/migrations/0003_auto__add_warehousedivisionlink__add_unique_warehousedivisionlink_ware.py
@@ -0,0 +1,414 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'WarehouseDivisionLink'
+ db.create_table('archaeological_warehouse_warehousedivisionlink', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('warehouse', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['archaeological_warehouse.Warehouse'])),
+ ('division', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['archaeological_warehouse.WarehouseDivision'])),
+ ('order', self.gf('django.db.models.fields.IntegerField')(default=10)),
+ ))
+ db.send_create_signal('archaeological_warehouse', ['WarehouseDivisionLink'])
+
+ # Adding unique constraint on 'WarehouseDivisionLink', fields ['warehouse', 'division']
+ db.create_unique('archaeological_warehouse_warehousedivisionlink', ['warehouse_id', 'division_id'])
+
+ # Adding model 'Collection'
+ db.create_table('archaeological_warehouse_collection', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('history_modifier', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, on_delete=models.SET_NULL, to=orm['auth.User'])),
+ ('history_creator', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='+', null=True, on_delete=models.SET_NULL, to=orm['auth.User'])),
+ ('history_date', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
+ ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('warehouse', self.gf('django.db.models.fields.related.ForeignKey')(related_name='collections', to=orm['archaeological_warehouse.Warehouse'])),
+ ))
+ db.send_create_signal('archaeological_warehouse', ['Collection'])
+
+ # Adding M2M table for field imports on 'Collection'
+ db.create_table('archaeological_warehouse_collection_imports', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('collection', models.ForeignKey(orm['archaeological_warehouse.collection'], null=False)),
+ ('import', models.ForeignKey(orm['ishtar_common.import'], null=False))
+ ))
+ db.create_unique('archaeological_warehouse_collection_imports', ['collection_id', 'import_id'])
+
+ # Adding model 'WarehouseDivision'
+ db.create_table('archaeological_warehouse_warehousedivision', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('label', self.gf('django.db.models.fields.CharField')(max_length=100)),
+ ('txt_idx', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)),
+ ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('available', self.gf('django.db.models.fields.BooleanField')(default=True)),
+ ))
+ db.send_create_signal('archaeological_warehouse', ['WarehouseDivision'])
+
+ # Adding model 'ContainerLocalisation'
+ db.create_table('archaeological_warehouse_containerlocalisation', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('container', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['archaeological_warehouse.Container'])),
+ ('division', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['archaeological_warehouse.WarehouseDivisionLink'])),
+ ('reference', self.gf('django.db.models.fields.CharField')(default='', max_length=200)),
+ ))
+ db.send_create_signal('archaeological_warehouse', ['ContainerLocalisation'])
+
+ # Adding unique constraint on 'ContainerLocalisation', fields ['container', 'division']
+ db.create_unique('archaeological_warehouse_containerlocalisation', ['container_id', 'division_id'])
+
+
+ # Changing field 'Warehouse.name'
+ db.alter_column('archaeological_warehouse_warehouse', 'name', self.gf('django.db.models.fields.CharField')(max_length=200))
+ # Adding field 'Container.responsible'
+ db.add_column('archaeological_warehouse_container', 'responsible',
+ self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='owned_containers', null=True, to=orm['archaeological_warehouse.Warehouse']),
+ keep_default=False)
+
+ # Adding field 'Container.cached_label'
+ db.add_column('archaeological_warehouse_container', 'cached_label',
+ self.gf('django.db.models.fields.CharField')(max_length=500, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Container.cached_location'
+ db.add_column('archaeological_warehouse_container', 'cached_location',
+ self.gf('django.db.models.fields.CharField')(max_length=500, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Container.index'
+ db.add_column('archaeological_warehouse_container', 'index',
+ self.gf('django.db.models.fields.IntegerField')(default=0),
+ keep_default=False)
+
+
+ # Changing field 'Container.comment'
+ db.alter_column('archaeological_warehouse_container', 'comment', self.gf('django.db.models.fields.TextField')(null=True))
+ # Adding unique constraint on 'Container', fields ['index', 'location']
+ db.create_unique('archaeological_warehouse_container', ['index', 'location_id'])
+
+
+ def backwards(self, orm):
+ # Removing unique constraint on 'Container', fields ['index', 'location']
+ db.delete_unique('archaeological_warehouse_container', ['index', 'location_id'])
+
+ # Removing unique constraint on 'ContainerLocalisation', fields ['container', 'division']
+ db.delete_unique('archaeological_warehouse_containerlocalisation', ['container_id', 'division_id'])
+
+ # Removing unique constraint on 'WarehouseDivisionLink', fields ['warehouse', 'division']
+ db.delete_unique('archaeological_warehouse_warehousedivisionlink', ['warehouse_id', 'division_id'])
+
+ # Deleting model 'WarehouseDivisionLink'
+ db.delete_table('archaeological_warehouse_warehousedivisionlink')
+
+ # Deleting model 'Collection'
+ db.delete_table('archaeological_warehouse_collection')
+
+ # Removing M2M table for field imports on 'Collection'
+ db.delete_table('archaeological_warehouse_collection_imports')
+
+ # Deleting model 'WarehouseDivision'
+ db.delete_table('archaeological_warehouse_warehousedivision')
+
+ # Deleting model 'ContainerLocalisation'
+ db.delete_table('archaeological_warehouse_containerlocalisation')
+
+
+ # Changing field 'Warehouse.name'
+ db.alter_column('archaeological_warehouse_warehouse', 'name', self.gf('django.db.models.fields.CharField')(max_length=40))
+ # Deleting field 'Container.responsible'
+ db.delete_column('archaeological_warehouse_container', 'responsible_id')
+
+ # Deleting field 'Container.cached_label'
+ db.delete_column('archaeological_warehouse_container', 'cached_label')
+
+ # Deleting field 'Container.cached_location'
+ db.delete_column('archaeological_warehouse_container', 'cached_location')
+
+ # Deleting field 'Container.index'
+ db.delete_column('archaeological_warehouse_container', 'index')
+
+
+ # User chose to not deal with backwards NULL issues for 'Container.comment'
+ raise RuntimeError("Cannot reverse this migration. 'Container.comment' and its values cannot be restored.")
+
+ models = {
+ 'archaeological_warehouse.collection': {
+ 'Meta': {'ordering': "('name',)", 'object_name': 'Collection'},
+ 'description': ('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_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_collection'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'collections'", 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ 'archaeological_warehouse.container': {
+ 'Meta': {'ordering': "('cached_label',)", 'unique_together': "(('index', 'location'),)", 'object_name': 'Container'},
+ 'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'cached_location': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ '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']"}),
+ 'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
+ 'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'containers'", 'to': "orm['archaeological_warehouse.Warehouse']"}),
+ 'reference': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
+ 'responsible': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'owned_containers'", 'null': 'True', 'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ 'archaeological_warehouse.containerlocalisation': {
+ 'Meta': {'ordering': "('container', 'division__order')", 'unique_together': "(('container', 'division'),)", 'object_name': 'ContainerLocalisation'},
+ 'container': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Container']"}),
+ 'division': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseDivisionLink']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'reference': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200'})
+ },
+ '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'}),
+ 'associated_divisions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']", 'symmetrical': 'False', 'through': "orm['archaeological_warehouse.WarehouseDivisionLink']", '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': '200'}),
+ '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.warehousedivision': {
+ 'Meta': {'object_name': 'WarehouseDivision'},
+ '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_warehouse.warehousedivisionlink': {
+ 'Meta': {'ordering': "('warehouse', 'order')", 'unique_together': "(('warehouse', 'division'),)", 'object_name': 'WarehouseDivisionLink'},
+ 'division': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseDivision']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}),
+ 'warehouse': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']"})
+ },
+ '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.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']},
+ 'advanced_shortcut_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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.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.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'})
+ }
+ }
+
+ complete_apps = ['archaeological_warehouse'] \ No newline at end of file
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index 389cc4f5a..c3c159550 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -17,10 +17,16 @@
# See the file COPYING for details.
-from django.db.models.signals import post_save, post_delete
+import datetime
+
+from django.conf import settings
from django.contrib.gis.db import models
+from django.db.models.signals import post_save, post_delete
+from django.template.defaultfilters import slugify
from django.utils.translation import ugettext_lazy as _, ugettext
+from ishtar_common.utils import cached_label_changed
+
from ishtar_common.models import GeneralType, \
LightHistorizedItem, OwnPerms, Address, Person, post_save_cache
@@ -35,13 +41,20 @@ post_delete.connect(post_save_cache, sender=WarehouseType)
class Warehouse(Address, OwnPerms):
- name = models.CharField(_(u"Name"), max_length=40)
+ SHOW_URL = 'show-warehouse'
+ name = models.CharField(_(u"Name"), max_length=200)
warehouse_type = models.ForeignKey(WarehouseType,
verbose_name=_(u"Warehouse type"))
person_in_charge = models.ForeignKey(
Person, on_delete=models.SET_NULL, related_name='warehouse_in_charge',
verbose_name=_(u"Person in charge"), null=True, blank=True)
comment = models.TextField(_(u"Comment"), null=True, blank=True)
+ associated_divisions = models.ManyToManyField(
+ 'WarehouseDivision', verbose_name=_("Divisions"), blank=True,
+ through='WarehouseDivisionLink'
+ )
+
+ TABLE_COLS = ['name', 'warehouse_type']
class Meta:
verbose_name = _(u"Warehouse")
@@ -57,6 +70,54 @@ class Warehouse(Address, OwnPerms):
def __unicode__(self):
return u"%s (%s)" % (self.name, unicode(self.warehouse_type))
+ @property
+ def associated_filename(self):
+ return datetime.date.today().strftime('%Y-%m-%d') + '-' + \
+ slugify(unicode(self))
+
+ def save(self, *args, **kwargs):
+ super(Warehouse, self).save(*args, **kwargs)
+ for container in self.containers.all():
+ cached_label_changed(Container, instance=container)
+
+
+class Collection(LightHistorizedItem):
+ name = models.CharField(_(u"Name"), max_length=200,
+ null=True, blank=True)
+ description = models.TextField(_(u"Description"), null=True, blank=True)
+ warehouse = models.ForeignKey(Warehouse, verbose_name=_(u"Warehouse"),
+ related_name='collections')
+
+ class Meta:
+ verbose_name = _(u"Collection")
+ verbose_name_plural = _(u"Collection")
+ ordering = ('name',)
+
+ def __unicode__(self):
+ return self.name
+
+
+class WarehouseDivision(GeneralType):
+ class Meta:
+ verbose_name = _(u"Warehouse division")
+ verbose_name_plural = _(u"Warehouse divisions")
+post_save.connect(post_save_cache, sender=WarehouseDivision)
+post_delete.connect(post_save_cache, sender=WarehouseDivision)
+
+
+class WarehouseDivisionLink(models.Model):
+ RELATIVE_MODELS = {Warehouse: 'warehouse'}
+ warehouse = models.ForeignKey(Warehouse)
+ division = models.ForeignKey(WarehouseDivision)
+ order = models.IntegerField(_("Order"), default=10)
+
+ class Meta:
+ ordering = ('warehouse', 'order')
+ unique_together = ('warehouse', 'division')
+
+ def __unicode__(self):
+ return u"{} - {}".format(self.warehouse, self.division)
+
class ContainerType(GeneralType):
length = models.IntegerField(_(u"Length (mm)"), blank=True, null=True)
@@ -74,7 +135,8 @@ post_delete.connect(post_save_cache, sender=ContainerType)
class Container(LightHistorizedItem):
- TABLE_COLS = ['reference', 'container_type', 'location']
+ TABLE_COLS = ['reference', 'container_type__label', 'cached_location',
+ 'divisions_lbl']
# search parameters
EXTRA_REQUEST_KEYS = {
@@ -82,19 +144,107 @@ class Container(LightHistorizedItem):
'container_type': 'container_type__pk',
'reference': 'reference__icontains',
}
+ SHOW_URL = 'show-container'
+ COL_LABELS = {
+ 'cached_location': _(u"Location - index"),
+ 'divisions_lbl': _(u"Precise localisation"),
+ 'container_type__label': _(u"Type")
+ }
+ CACHED_LABELS = ['cached_label', 'cached_location']
# fields
- location = models.ForeignKey(Warehouse, verbose_name=_(u"Warehouse"))
+ location = models.ForeignKey(
+ Warehouse, verbose_name=_(u"Location (warehouse)"),
+ related_name='containers')
+ responsible = models.ForeignKey(
+ Warehouse, verbose_name=_(u"Responsible warehouse"),
+ related_name='owned_containers', blank=True, null=True)
container_type = models.ForeignKey(ContainerType,
verbose_name=_("Container type"))
reference = models.CharField(_(u"Container ref."), max_length=40)
- comment = models.TextField(_(u"Comment"))
+ comment = models.TextField(_(u"Comment"), null=True, blank=True)
+ cached_label = models.CharField(_(u"Localisation"), max_length=500,
+ null=True, blank=True)
+ cached_location = models.CharField(_(u"Cached location"), max_length=500,
+ null=True, blank=True)
+ index = models.IntegerField(u"Index", default=0)
class Meta:
verbose_name = _(u"Container")
verbose_name_plural = _(u"Containers")
+ ordering = ('cached_label',)
+ unique_together = ('index', 'location')
def __unicode__(self):
- lbl = u" - ".join((self.reference, unicode(self.container_type),
- unicode(self.location)))
+ lbl = u"{} ({})".format(self.reference, self.container_type)
return lbl
+
+ def _generate_cached_label(self):
+ items = [self.reference, self.precise_location]
+ cached_label = u" | ".join(items)
+ return cached_label
+
+ def _generate_cached_location(self):
+ items = [self.location.name, unicode(self.index)]
+ cached_label = u" - ".join(items)
+ return cached_label
+
+ @property
+ def associated_filename(self):
+ filename = datetime.date.today().strftime('%Y-%m-%d')
+ filename += u'-' + self.reference
+ filename += u"-" + self.location.name
+ filename += u"-" + unicode(self.index)
+ filename += u"-" + self.divisions_lbl
+ return slugify(filename)
+
+ @property
+ def precise_location(self):
+ return self.location.name + u" - " + self.divisions_lbl
+
+ @property
+ def divisions_lbl(self):
+ locas = [
+ u"{} {}".format(loca.division.division, loca.reference)
+ for loca in ContainerLocalisation.objects.filter(
+ container=self)
+ ]
+ return u" | ".join(locas)
+
+ def save(self, *args, **kwargs):
+ super(Container, self).save(*args, **kwargs)
+
+ if not self.index:
+ self.skip_history_when_saving = True
+ q = Container.objects.filter(location=self.location).order_by(
+ '-index')
+ if q.count():
+ self.index = q.all()[0].index + 1
+ else:
+ self.index = 1
+ self._cached_label_checked = False
+ self.save()
+
+post_save.connect(cached_label_changed, sender=Container)
+
+
+class ContainerLocalisation(models.Model):
+ container = models.ForeignKey(Container, verbose_name=_(u"Container"))
+ division = models.ForeignKey(WarehouseDivisionLink,
+ verbose_name=_(u"Division"))
+ reference = models.CharField(_(u"Reference"), max_length=200, default='')
+
+ class Meta:
+ verbose_name = _(u"Container localisation")
+ verbose_name_plural = _(u"Container localisations")
+ unique_together = ('container', 'division')
+ ordering = ('container', 'division__order')
+
+ def __unicode__(self):
+ lbl = u" - ".join((unicode(self.container),
+ unicode(self.division), self.reference))
+ return lbl
+
+ def save(self, *args, **kwargs):
+ super(ContainerLocalisation, self).save(*args, **kwargs)
+ cached_label_changed(Container, instance=self.container)
diff --git a/archaeological_warehouse/templates/ishtar/sheet_container.html b/archaeological_warehouse/templates/ishtar/sheet_container.html
new file mode 100644
index 000000000..4a7b2f0b9
--- /dev/null
+++ b/archaeological_warehouse/templates/ishtar/sheet_container.html
@@ -0,0 +1,23 @@
+{% extends "ishtar/sheet.html" %}
+{% load i18n window_header window_field window_tables %}
+
+{% block head_title %}{% trans "Container" %}{% endblock %}
+
+{% block content %}
+{% window_nav item window_id 'show-container' '' '' '' previous next 1 %}
+
+<ul class='form-flex'>
+ {% field_li "Reference" item.reference %}
+ {% field_li "Container type" item.container_type %}
+ {% field_li_detail "Responsible warehouse" item.responsible %}
+ {% field_li_detail "Location (warehouse)" item.location %}
+</ul>
+{% field "Location" item.precise_location %}
+{% field "Comment" item.comment "<pre>" "</pre>" %}
+
+{% if item.finds.count %}
+<h4>{% trans "Content" %}</h4>
+{% dynamic_table_document finds 'finds' 'container' item.pk 'TABLE_COLS' output 'large' %}
+{% endif %}
+
+{% endblock %}
diff --git a/archaeological_warehouse/templates/ishtar/sheet_container_pdf.html b/archaeological_warehouse/templates/ishtar/sheet_container_pdf.html
new file mode 100644
index 000000000..5e4947cfa
--- /dev/null
+++ b/archaeological_warehouse/templates/ishtar/sheet_container_pdf.html
@@ -0,0 +1,18 @@
+{% extends "ishtar/sheet_container.html" %}
+{% block header %}
+<link rel="stylesheet" href="{{STATIC_URL}}/media/style_basic.css?ver={{VERSION}}" />
+{% endblock %}
+{% block main_head %}
+{{ block.super }}
+<div id="pdfheader">
+Ishtar &ndash; {{APP_NAME}} &ndash; {{item}}
+</div>
+{% endblock %}
+{%block head_sheet%}{%endblock%}
+{%block main_foot%}
+<div id="pdffooter">
+&ndash; <pdf:pagenumber/> &ndash;
+</div>
+</body>
+</html>
+{%endblock%}
diff --git a/archaeological_warehouse/templates/ishtar/sheet_container_window.html b/archaeological_warehouse/templates/ishtar/sheet_container_window.html
new file mode 100644
index 000000000..28aeaf9aa
--- /dev/null
+++ b/archaeological_warehouse/templates/ishtar/sheet_container_window.html
@@ -0,0 +1,3 @@
+{% extends "ishtar/sheet_container.html" %}
+{% block main_head %}{%endblock%}
+{% block main_foot %}{%endblock%}
diff --git a/archaeological_warehouse/templates/ishtar/sheet_warehouse.html b/archaeological_warehouse/templates/ishtar/sheet_warehouse.html
new file mode 100644
index 000000000..9fd022281
--- /dev/null
+++ b/archaeological_warehouse/templates/ishtar/sheet_warehouse.html
@@ -0,0 +1,26 @@
+{% extends "ishtar/sheet.html" %}
+{% load i18n window_header window_field window_tables %}
+
+{% block head_title %}{% trans "Warehouse" %}{% endblock %}
+
+{% block content %}
+{% window_nav item window_id 'show-warehouse' '' '' '' previous next 1 %}
+
+<ul class='form-flex'>
+ {% field_li "Name" item.name %}
+ {% field_li "Warehouse type" item.warehouse_type %}
+ {% field_li "Person in charge" item.person_in_charge %}
+</ul>
+{% field "Comment" item.comment "<pre>" "</pre>" %}
+
+{% if item.containers.count %}
+<h4>{% trans "Containers" %}</h4>
+{% dynamic_table_document '' 'containers' 'location' item.pk 'TABLE_COLS' output %}
+{% endif %}
+
+{% if item.owned_containers.count %}
+<h4>{% trans "Attached containers" %}</h4>
+{% dynamic_table_document '' 'containers' 'responsible' item.pk 'TABLE_COLS' output %}
+{% endif %}
+
+{% endblock %}
diff --git a/archaeological_warehouse/templates/ishtar/sheet_warehouse_pdf.html b/archaeological_warehouse/templates/ishtar/sheet_warehouse_pdf.html
new file mode 100644
index 000000000..260834ac6
--- /dev/null
+++ b/archaeological_warehouse/templates/ishtar/sheet_warehouse_pdf.html
@@ -0,0 +1,18 @@
+{% extends "ishtar/sheet_warehouse.html" %}
+{% block header %}
+<link rel="stylesheet" href="{{STATIC_URL}}/media/style_basic.css?ver={{VERSION}}" />
+{% endblock %}
+{% block main_head %}
+{{ block.super }}
+<div id="pdfheader">
+Ishtar &ndash; {{APP_NAME}} &ndash; {{item}}
+</div>
+{% endblock %}
+{%block head_sheet%}{%endblock%}
+{%block main_foot%}
+<div id="pdffooter">
+&ndash; <pdf:pagenumber/> &ndash;
+</div>
+</body>
+</html>
+{%endblock%}
diff --git a/archaeological_warehouse/templates/ishtar/sheet_warehouse_window.html b/archaeological_warehouse/templates/ishtar/sheet_warehouse_window.html
new file mode 100644
index 000000000..e77c2c2a3
--- /dev/null
+++ b/archaeological_warehouse/templates/ishtar/sheet_warehouse_window.html
@@ -0,0 +1,3 @@
+{% extends "ishtar/sheet_warehouse.html" %}
+{% block main_head %}{%endblock%}
+{% block main_foot %}{%endblock%}
diff --git a/archaeological_warehouse/templates/ishtar/wizard/wizard_containerlocalisation.html b/archaeological_warehouse/templates/ishtar/wizard/wizard_containerlocalisation.html
new file mode 100644
index 000000000..4a21368ae
--- /dev/null
+++ b/archaeological_warehouse/templates/ishtar/wizard/wizard_containerlocalisation.html
@@ -0,0 +1,7 @@
+{% extends "ishtar/wizard/default_wizard.html" %}
+{% load i18n %}
+{% block form_head %}
+{% if not wizard.form.fields %}
+<p class='warning'>{% trans "No division set for this warehouse. Define it to localise container in this warehouse." %}</p>
+{% endif %}
+{% endblock %}
diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py
index 9094f0a91..133d4ae79 100644
--- a/archaeological_warehouse/urls.py
+++ b/archaeological_warehouse/urls.py
@@ -19,8 +19,9 @@
from django.conf.urls.defaults import *
-# from ishtar_common.wizards import check_rights
+from ishtar_common.wizards import check_rights
import views
+from archaeological_warehouse import models
# be carreful: each check_rights must be relevant with ishtar_menu
@@ -35,12 +36,48 @@ urlpatterns += patterns(
'archaeological_warehouse.views',
url(r'new-warehouse/(?P<parent_name>.+)?/$',
'new_warehouse', name='new-warehouse'),
+ url(r'^show-warehouse(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_warehouse',
+ name=models.Warehouse.SHOW_URL),
url(r'autocomplete-warehouse/$', 'autocomplete_warehouse',
name='autocomplete-warehouse'),
url(r'new-container/(?P<parent_name>.+)?/$',
'new_container', name='new-container'),
url(r'get-container/$', 'get_container',
name='get-container'),
+ url(r'get-warehouse/(?P<type>.+)?$', 'get_warehouse',
+ name='get-warehouse'),
url(r'autocomplete-container/?$',
'autocomplete_container', name='autocomplete-container'),
+ url(r'^show-container(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_container',
+ name=models.Container.SHOW_URL),
+ url(r'^warehouse_search/(?P<step>.+)?$',
+ check_rights(['view_warehouse', 'view_own_warehouse'])(
+ views.warehouse_search_wizard), name='warehouse_search'),
+ url(r'^warehouse_creation/(?P<step>.+)?$',
+ check_rights(['add_warehouse'])(
+ views.warehouse_creation_wizard), name='warehouse_creation'),
+ url(r'^warehouse_modification/(?P<step>.+)?$',
+ check_rights(['change_warehouse'])(
+ views.warehouse_modification_wizard),
+ name='warehouse_modification'),
+ url(r'^warehouse_deletion/(?P<step>.+)?$',
+ check_rights(['change_warehouse'])(
+ views.warehouse_deletion_wizard),
+ name='warehouse_deletion'),
+ url(r'^container_search/(?P<step>.+)?$',
+ check_rights(['change_warehouse'])(
+ views.container_search_wizard),
+ name='container_search'),
+ url(r'^container_creation/(?P<step>.+)?$',
+ check_rights(['change_warehouse'])(
+ views.container_creation_wizard),
+ name='container_creation'),
+ url(r'^container_modification/(?P<step>.+)?$',
+ check_rights(['change_warehouse'])(
+ views.container_modification_wizard),
+ name='container_modification'),
+ url(r'^container_deletion/(?P<step>.+)?$',
+ check_rights(['change_warehouse'])(
+ views.container_deletion_wizard),
+ name='container_deletion'),
)
diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py
index d8027a9a6..35218cd07 100644
--- a/archaeological_warehouse/views.py
+++ b/archaeological_warehouse/views.py
@@ -23,13 +23,19 @@ from django.db.models import Q
from django.http import HttpResponse
from django.utils.translation import ugettext_lazy as _
-from ishtar_common.views import get_item, new_item
import models
+
+from ishtar_common.views import get_item, new_item, show_item
+from ishtar_common.wizards import SearchWizard
from wizards import *
from ishtar_common.forms import FinalForm
from forms import *
get_container = get_item(models.Container, 'get_container', 'container')
+show_container = show_item(models.Container, 'container')
+
+get_warehouse = get_item(models.Warehouse, 'get_warehouse', 'warehouse')
+show_warehouse = show_item(models.Warehouse, 'warehouse')
new_warehouse = new_item(models.Warehouse, WarehouseForm)
new_container = new_item(models.Container, ContainerForm)
@@ -87,6 +93,64 @@ warehouse_packaging_wizard = PackagingWizard.as_view([
label=_(u"Packaging"),
url_name='warehouse_packaging',)
+warehouse_search_wizard = SearchWizard.as_view([
+ ('selec-warehouse_search', WarehouseFormSelection)],
+ label=_(u"Warehouse search"),
+ url_name='warehouse_search',
+)
+
+warehouse_creation_wizard = WarehouseWizard.as_view([
+ ("warehouse-warehouse_creation", WarehouseForm),
+ ('divisions-warehouse_creation', SelectedDivisionFormset),
+ ('final-warehouse_creation', FinalForm)],
+ label=_(u"Warehouse creation"),
+ url_name='warehouse_creation',
+)
+
+warehouse_modification_wizard = WarehouseModificationWizard.as_view([
+ ('selec-warehouse_modification', WarehouseFormSelection),
+ ("warehouse-warehouse_modification", WarehouseForm),
+ ('divisions-warehouse_modification', SelectedDivisionFormset),
+ ('final-warehouse_modification', FinalForm)],
+ label=_(u"Warehouse modification"),
+ url_name='warehouse_modification',
+)
+
+warehouse_deletion_wizard = WarehouseDeletionWizard.as_view([
+ ('selec-warehouse_deletion', WarehouseFormSelection),
+ ('final-warehouse_deletion', WarehouseDeletionForm)],
+ label=_(u"Warehouse deletion"),
+ url_name='warehouse_deletion',)
+
+container_search_wizard = SearchWizard.as_view([
+ ('selec-container_search', MainContainerFormSelection)],
+ label=_(u"Container search"),
+ url_name='container_search',
+)
+
+container_creation_wizard = ContainerWizard.as_view([
+ ('container-container_creation', ContainerForm),
+ ('localisation-container_creation', LocalisationForm),
+ ('final-container_creation', FinalForm)],
+ label=_(u"Container creation"),
+ url_name='container_creation',
+)
+
+container_modification_wizard = ContainerModificationWizard.as_view([
+ ('selec-container_modification', MainContainerFormSelection),
+ ('container-container_modification', ContainerModifyForm),
+ ('localisation-container_modification', LocalisationForm),
+ ('final-container_modification', FinalForm)],
+ label=_(u"Container modification"),
+ url_name='container_modification',
+)
+
+container_deletion_wizard = ContainerDeletionWizard.as_view([
+ ('selec-container_deletion', MainContainerFormSelection),
+ ('final-container_deletion', ContainerDeletionForm)],
+ label=_(u"Container deletion"),
+ url_name='container_deletion',)
+
"""
warehouse_packaging_wizard = ItemSourceWizard.as_view([
('selec-warehouse_packaging', ItemsSelection),
diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py
index 62b441e00..817ed75a5 100644
--- a/archaeological_warehouse/wizards.py
+++ b/archaeological_warehouse/wizards.py
@@ -20,8 +20,12 @@
from django.shortcuts import render_to_response
from django.template import RequestContext
+from ishtar_common.forms import reverse_lazy
+from ishtar_common.wizards import Wizard, DeletionWizard
from archaeological_finds.wizards import TreatmentWizard
-from archaeological_finds.models import Treatment
+
+from archaeological_finds.models import Treatment, TreatmentType
+import models
class PackagingWizard(TreatmentWizard):
@@ -32,11 +36,98 @@ class PackagingWizard(TreatmentWizard):
dct = self.get_extra_model(dct, form_list)
obj = self.get_current_saved_object()
dct['location'] = dct['container'].location
- items = dct.pop('basket')
+ items = None
+ if 'items' in dct:
+ items = dct.pop('items')
+ if 'basket' in dct:
+ if not items:
+ items = dct.pop('basket')
+ else:
+ dct.pop('basket')
treatment = Treatment(**dct)
extra_args_for_new = {"container": dct['container']}
treatment.save(items=items, user=self.request.user,
extra_args_for_new=extra_args_for_new)
+ packaging = TreatmentType.objects.get(txt_idx='packaging')
+ treatment.treatment_types.add(packaging)
res = render_to_response('ishtar/wizard/wizard_done.html', {},
context_instance=RequestContext(self.request))
return return_object and (obj, res) or res
+
+
+class WarehouseWizard(Wizard):
+ model = models.Warehouse
+ wizard_done_window = reverse_lazy('show-warehouse')
+
+
+class WarehouseModificationWizard(Wizard):
+ model = models.Warehouse
+ modification = True
+ wizard_done_window = reverse_lazy('show-warehouse')
+
+
+class WarehouseDeletionWizard(DeletionWizard):
+ model = models.Warehouse
+
+
+class ContainerWizard(Wizard):
+ model = models.Container
+ wizard_templates = {
+ 'localisation-container_localisation':
+ 'ishtar/wizard/wizard_containerlocalisation.html',
+ }
+ ignore_init_steps = ['localisation']
+
+ def get_form_kwargs(self, step=None):
+ kwargs = super(ContainerWizard, self).get_form_kwargs(step)
+ if step == 'localisation-' + self.url_name:
+ container_pk = self.session_get_value(
+ 'selec-' + self.url_name, 'pk')
+ q = models.Container.objects.filter(pk=container_pk)
+ if q.count():
+ kwargs['container'] = q.all()[0]
+ warehouse_pk = self.session_get_value(
+ 'container-' + self.url_name, 'location')
+ q = models.Warehouse.objects.filter(pk=warehouse_pk)
+ if q.count():
+ kwargs['warehouse'] = q.all()[0]
+ return kwargs
+
+ def done(self, form_list, **kwargs):
+ """
+ Save the localisation
+ """
+ super(ContainerWizard, self).done(form_list)
+ for idx, form in enumerate(form_list):
+ if not form.is_valid():
+ return self.render(form)
+ container = self.get_current_object() or self.current_object
+ if container and form.prefix == 'localisation-' + self.url_name:
+ for div_name in form.cleaned_data:
+ try:
+ division = models.WarehouseDivisionLink.objects.get(
+ pk=div_name.split('_')[-1],
+ warehouse=container.location
+ ) # check the localisation match with the container
+ except models.WarehouseDivisionLink.DoesNotExist:
+ return self.render(form)
+ localisation, created = \
+ models.ContainerLocalisation.objects.get_or_create(
+ container=container,
+ division=division
+ )
+ localisation.reference = form.cleaned_data[div_name]
+ localisation.save()
+ return render_to_response(
+ self.wizard_done_template, {},
+ context_instance=RequestContext(self.request))
+
+
+class ContainerModificationWizard(ContainerWizard):
+ modification = True
+
+
+class ContainerDeletionWizard(DeletionWizard):
+ model = models.Container
+ fields = ['container_type', 'reference', 'comment', 'location', 'index',
+ 'cached_label']
diff --git a/example_project/settings.py b/example_project/settings.py
index a191b83b3..437c75673 100644
--- a/example_project/settings.py
+++ b/example_project/settings.py
@@ -229,6 +229,8 @@ OP_PREFIX = 'OP'
PRE_APPS = []
EXTRA_APPS = []
+TEST_RUNNER = 'ishtar_common.tests.ManagedModelTestRunner'
+
try:
from local_settings import *
except ImportError, e:
diff --git a/ishtar_common/fixtures/initial_importtypes-fr.json b/ishtar_common/fixtures/initial_importtypes-fr.json
index 98703c8c9..0592ca60f 100644
--- a/ishtar_common/fixtures/initial_importtypes-fr.json
+++ b/ishtar_common/fixtures/initial_importtypes-fr.json
@@ -6,7 +6,8 @@
"description": "Import depuis la base filemaker du SRA PdL",
"is_template": true,
"unicity_keys": "code_patriarche",
- "users": [],
+ "users": [
+ ],
"slug": "operatio",
"associated_models": "archaeological_operations.models.Operation",
"name": "OPERATIO - Op\u00e9rations"
@@ -19,7 +20,8 @@
"description": "Test d'import depuis le DBF simplifi\u00e9 de patrairche",
"is_template": true,
"unicity_keys": null,
- "users": [],
+ "users": [
+ ],
"slug": null,
"associated_models": "archaeological_operations.models.Operation",
"name": "OPE PATRIARCHE DBF simplifi\u00e9 (TEST)"
@@ -32,7 +34,8 @@
"description": "Import simple d'UE (pas de relations)",
"is_template": true,
"unicity_keys": null,
- "users": [],
+ "users": [
+ ],
"slug": null,
"associated_models": "archaeological_context_records.models.ContextRecord",
"name": "SISPEO_UE"
@@ -169,6 +172,32 @@
}
},
{
+ "pk": 18,
+ "model": "ishtar_common.importertype",
+ "fields": {
+ "description": "Unit\u00e9s d'enregisttrement",
+ "is_template": true,
+ "unicity_keys": "external_id",
+ "users": [],
+ "slug": "ishtar_context_record",
+ "associated_models": "archaeological_context_records.models.ContextRecord",
+ "name": "ISHTAR-UE"
+ }
+ },
+ {
+ "pk": 19,
+ "model": "ishtar_common.importertype",
+ "fields": {
+ "description": "Parcelles de terrain",
+ "is_template": true,
+ "unicity_keys": "external_id",
+ "users": [],
+ "slug": "ishtar_parcels",
+ "associated_models": "archaeological_operations.models.Parcel",
+ "name": "ISHTAR-PARCELLES"
+ }
+ },
+ {
"pk": 17,
"model": "ishtar_common.importertype",
"fields": {
@@ -178,7 +207,20 @@
"users": [],
"slug": "ishtar_operations",
"associated_models": "archaeological_operations.models.Operation",
- "name": "ISHTAR-Operations"
+ "name": "ISHTAR-OP\u00c9RATIONS"
+ }
+ },
+ {
+ "pk": 20,
+ "model": "ishtar_common.importertype",
+ "fields": {
+ "description": "Mobilier",
+ "is_template": true,
+ "unicity_keys": "external_id",
+ "users": [],
+ "slug": "ishtar_finds",
+ "associated_models": "archaeological_finds.models.BaseFind",
+ "name": "ISHTAR-MOBILIER"
}
},
{
@@ -391,10 +433,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 1,
"description": "Code patriarche",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 1
}
},
{
@@ -402,10 +445,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": true,
- "importer_type": 1,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 1
}
},
{
@@ -413,10 +457,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": true,
- "importer_type": 1,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 1
}
},
{
@@ -424,10 +469,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": true,
- "importer_type": 1,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 1
}
},
{
@@ -435,10 +481,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 6,
- "required": true,
- "importer_type": 1,
"description": "Nom du responsable de l'op\u00e9ration. Nom et Pr\u00e9nom sont group\u00e9 et donc mis dans le NOM seul dans l'annuaire.",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 1
}
},
{
@@ -446,10 +493,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 7,
- "required": true,
- "importer_type": 1,
"description": "Date de d\u00e9but de l'op\u00e9ration avec le format ANN\u00c9E/MOIS/JOUR",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 1
}
},
{
@@ -457,10 +505,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 8,
- "required": true,
- "importer_type": 1,
"description": "Date de fin de l'op\u00e9ration avec le format ANN\u00c9E/MOIS/JOUR",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 1
}
},
{
@@ -468,10 +517,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 9,
- "required": false,
- "importer_type": 1,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 1
}
},
{
@@ -479,10 +529,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 2,
"description": "Code patriarche de l'op\u00e9ration associ\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 2
}
},
{
@@ -490,10 +541,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": true,
- "importer_type": 2,
"description": "Commune (via num\u00e9ro INSEE)",
- "regexp_pre_filter": 2
+ "regexp_pre_filter": 2,
+ "required": true,
+ "label": null,
+ "importer_type": 2
}
},
{
@@ -501,10 +553,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": true,
- "importer_type": 2,
"description": "Identifiant externe",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 2
}
},
{
@@ -512,10 +565,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": false,
- "importer_type": 2,
"description": "Num\u00e9ro",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 2
}
},
{
@@ -523,10 +577,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": false,
- "importer_type": 2,
"description": "Section",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 2
}
},
{
@@ -534,10 +589,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 6,
- "required": false,
- "importer_type": 2,
"description": "Ann\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 2
}
},
{
@@ -545,10 +601,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 9,
- "required": false,
- "importer_type": 2,
"description": "Lieu dit / adresse",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 2
}
},
{
@@ -556,10 +613,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 3,
"description": "Code patriarche de l'op\u00e9ration associ\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -567,10 +625,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": true,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -578,10 +637,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": true,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -589,10 +649,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": false,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -600,10 +661,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": false,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -611,10 +673,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 6,
- "required": false,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -622,10 +685,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 7,
- "required": false,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -633,10 +697,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 8,
- "required": false,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -644,10 +709,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 9,
- "required": false,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -655,10 +721,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 12,
- "required": false,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -666,10 +733,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 13,
- "required": false,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -677,10 +745,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 16,
- "required": false,
- "importer_type": 3,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 3
}
},
{
@@ -688,10 +757,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 4,
"description": "Code patriarche de l'op\u00e9ration associ\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -699,10 +769,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": true,
- "importer_type": 4,
"description": "Commune (via num\u00e9ro INSEE)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -710,10 +781,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": true,
- "importer_type": 4,
"description": "Parcelle (identifiant externe)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -721,10 +793,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": true,
- "importer_type": 4,
"description": "Label / Identifiant externe ",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -732,10 +805,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": false,
- "importer_type": 4,
"description": "Type",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -743,10 +817,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 6,
- "required": false,
- "importer_type": 4,
"description": "Description",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -754,10 +829,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 7,
- "required": false,
- "importer_type": 4,
"description": "Identification",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -765,10 +841,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 8,
- "required": false,
- "importer_type": 4,
"description": "Date d'ouverture",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -776,10 +853,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 9,
- "required": false,
- "importer_type": 4,
"description": "Date de fermeture",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -787,10 +865,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 11,
- "required": false,
- "importer_type": 4,
"description": "Commentaire",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -798,10 +877,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 12,
- "required": false,
- "importer_type": 4,
"description": "Nature",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -809,10 +889,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 13,
- "required": false,
- "importer_type": 4,
"description": "Chronologie (plusieurs possibles s\u00e9par\u00e9es par &)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 4
}
},
{
@@ -820,10 +901,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 5,
"description": "Code patriarche de l'op\u00e9ration associ\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -831,10 +913,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": true,
- "importer_type": 5,
"description": "Commune (via num\u00e9ro INSEE)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -842,10 +925,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": true,
- "importer_type": 5,
"description": "Identifiant parcelle",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -853,10 +937,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": true,
- "importer_type": 5,
"description": "Identifiant UE",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -864,10 +949,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": true,
- "importer_type": 5,
"description": "Identifiant externe",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -875,10 +961,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 9,
- "required": false,
- "importer_type": 5,
"description": "Sous classe de mat\u00e9riaux",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -886,10 +973,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 12,
- "required": false,
- "importer_type": 5,
"description": "Ref. du contenant / label temporaire utilis\u00e9 pour le mobilier = label libre = Label pour l'instant",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -897,10 +985,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 13,
- "required": false,
- "importer_type": 5,
"description": "Nombre d'\u00e9l\u00e9ments",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -908,10 +997,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 14,
- "required": false,
- "importer_type": 5,
"description": "Poids",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -919,10 +1009,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 15,
- "required": false,
- "importer_type": 5,
"description": "Unit\u00e9 de poids",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -930,10 +1021,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 16,
- "required": false,
- "importer_type": 5,
"description": "Date de d\u00e9couverte",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -941,10 +1033,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 17,
- "required": false,
- "importer_type": 5,
"description": "\u00c9tat de conservation",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -952,10 +1045,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 18,
- "required": false,
- "importer_type": 5,
"description": "Mesure de conservation",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -963,10 +1057,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 19,
- "required": false,
- "importer_type": 5,
"description": "Commentaire",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -974,10 +1069,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 20,
- "required": false,
- "importer_type": 5,
"description": "Datations s\u00e9par\u00e9es par des \"&\"",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -985,10 +1081,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 21,
- "required": false,
- "importer_type": 5,
"description": "Localisation topographique",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -996,10 +1093,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 22,
- "required": false,
- "importer_type": 5,
"description": "Int\u00e9r\u00eat sp\u00e9cifique",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -1007,10 +1105,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 23,
- "required": false,
- "importer_type": 5,
"description": "Description",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 5
}
},
{
@@ -1018,10 +1117,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 6,
"description": "Type d'op\u00e9ration patriarche (ex: EV, AET, OPD, etc.)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 6
}
},
{
@@ -1029,10 +1129,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": false,
- "importer_type": 6,
"description": "Intitul\u00e9 de l'op\u00e9ration dans Patriarche",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 6
}
},
{
@@ -1040,10 +1141,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": false,
- "importer_type": 6,
"description": "Nom du responsable de l'op\u00e9ration",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 6
}
},
{
@@ -1051,10 +1153,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": false,
- "importer_type": 6,
"description": "Pr\u00e9nom du responsable de l'op\u00e9ration",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 6
}
},
{
@@ -1062,10 +1165,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": false,
- "importer_type": 6,
"description": "Chronologie dans PATRIARCHE, h\u00e9las une seule chronologie est enregistr\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 6
}
},
{
@@ -1073,10 +1177,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 8,
- "required": false,
- "importer_type": 6,
"description": "Date du d\u00e9but de l'op\u00e9ration au format jour/mois/ann\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 6
}
},
{
@@ -1084,10 +1189,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 9,
- "required": false,
- "importer_type": 6,
"description": "Date du fin de l'op\u00e9ration au format jour/mois/ann\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 6
}
},
{
@@ -1095,10 +1201,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 10,
- "required": false,
- "importer_type": 6,
"description": "Identification de l'op\u00e9ration, import\u00e9 en tant que commentaire",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 6
}
},
{
@@ -1106,10 +1213,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 11,
- "required": true,
- "importer_type": 6,
"description": "CODE Patriarche de l'op\u00e9ration, AVEC le code REGION",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 6
}
},
{
@@ -1117,10 +1225,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 12,
- "required": false,
- "importer_type": 6,
"description": "Surface en m2",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 6
}
},
{
@@ -1128,10 +1237,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 7,
"description": "Code OA avec le num\u00e9ro de r\u00e9gion (ex: 18 pour les PdL)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 7
}
},
{
@@ -1139,10 +1249,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": true,
- "importer_type": 7,
"description": "Code de l'UE (peut \u00eatre la concat\u00e9nation de fait + US ou autre)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 7
}
},
{
@@ -1150,10 +1261,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": true,
- "importer_type": 7,
"description": "Parcelle (peut \u00eatre li\u00e9 \u00e0 une parcelle virtuelle, ex: XXX 0)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 7
}
},
{
@@ -1161,10 +1273,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": false,
- "importer_type": 7,
"description": "Commentaire",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 7
}
},
{
@@ -1172,10 +1285,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": false,
- "importer_type": 7,
"description": "Type d'UE : identification",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 7
}
},
{
@@ -1183,10 +1297,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 6,
- "required": false,
- "importer_type": 7,
"description": "Description de l'UE consid\u00e9r\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 7
}
},
{
@@ -1194,10 +1309,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 7,
- "required": false,
- "importer_type": 7,
"description": "Datation (p\u00e9riode) pour l'UE s\u00e9par\u00e9es par un &",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 7
}
},
{
@@ -1205,10 +1321,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 8,
"description": "Code patriarche de l'op\u00e9ration associ\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1216,10 +1333,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": true,
- "importer_type": 8,
"description": "Code Document de SISPEO, soit l'identifiant complet (ancien du mobilier), ex: M.CE.0091_XXX.XX_0030",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1227,10 +1345,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": true,
- "importer_type": 8,
"description": "UE - a passer en majuscule dans l'export csv de SISPEO / bien v\u00e9rifier qu'il n'y a pas de doublons dans l'import des UE pr\u00e9c\u00e9dent",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1238,10 +1357,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": false,
- "importer_type": 8,
"description": "Type de manti\u00e8re de mobilier, s\u00e9par\u00e9s par des \"&\"",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1249,10 +1369,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": false,
- "importer_type": 8,
"description": "\u00c9tat de conservation / lien avec une liste",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1260,10 +1381,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 6,
- "required": false,
- "importer_type": 8,
"description": "Commentaire",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1271,10 +1393,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 7,
- "required": false,
- "importer_type": 8,
"description": "Identifiant pr\u00e9c\u00e9dent / label libre",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1282,10 +1405,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 8,
- "required": false,
- "importer_type": 8,
"description": "Contient des objets complets ou non (pb il peut aussi y en avoir des incomplets m\u00e9lang\u00e9s \u00e0 des complets non isol\u00e9s...)\r\nA Am\u00e9liorer",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1293,10 +1417,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 9,
- "required": false,
- "importer_type": 8,
"description": "Datations s\u00e9par\u00e9es par des \"&\"",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1304,10 +1429,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 10,
- "required": false,
- "importer_type": 8,
"description": "Description de l'objet ou du lot d'objet",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1315,10 +1441,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 11,
- "required": false,
- "importer_type": 8,
"description": "Nombre d'objets",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1326,10 +1453,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 12,
- "required": false,
- "importer_type": 8,
"description": "Poids (en g)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1337,10 +1465,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 13,
- "required": false,
- "importer_type": 8,
"description": "Longueur en cm",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1348,10 +1477,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 14,
- "required": false,
- "importer_type": 8,
"description": "Largeur en cm",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1359,10 +1489,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 15,
- "required": false,
- "importer_type": 8,
"description": "Hauteur en cm",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1370,10 +1501,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 16,
- "required": false,
- "importer_type": 8,
"description": "Diam\u00e8tre en cm",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1381,10 +1513,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 18,
- "required": false,
- "importer_type": 8,
"description": "Datation pr\u00e9cise, champs txt libre",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1392,10 +1525,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 19,
- "required": false,
- "importer_type": 8,
"description": "Types d'objets se r\u00e9f\u00e9ren\u00e7ant par rapport \u00e0 un th\u00e9saurus",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1403,10 +1537,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 20,
- "required": false,
- "importer_type": 8,
"description": "Isolation ou lot d'objets",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 8
}
},
{
@@ -1414,10 +1549,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 9,
"description": "Code patriarche de l'op\u00e9ration associ\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 9
}
},
{
@@ -1425,10 +1561,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": true,
- "importer_type": 9,
"description": "Commune (via num\u00e9ro INSEE)",
- "regexp_pre_filter": 2
+ "regexp_pre_filter": 2,
+ "required": true,
+ "label": null,
+ "importer_type": 9
}
},
{
@@ -1436,10 +1573,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": true,
- "importer_type": 9,
"description": "Section de la parcelle",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 9
}
},
{
@@ -1447,10 +1585,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": true,
- "importer_type": 9,
"description": "Num\u00e9ro de la parcelle (ex: 125)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 9
}
},
{
@@ -1458,10 +1597,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 10,
"description": "Numero OA reference",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 10
}
},
{
@@ -1469,10 +1609,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": true,
- "importer_type": 10,
"description": "Ref\u00e9rence pr\u00e9c\u00e9dente de l'objet (base ou inventaire pr\u00e9c\u00e9dent, fouille, sp\u00e9cialiste, etc;)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 10
}
},
{
@@ -1480,10 +1621,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": true,
- "importer_type": 10,
"description": "UE li\u00e9e au mobilier",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 10
}
},
{
@@ -1491,10 +1633,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": true,
- "importer_type": 10,
"description": "Mati\u00e8res s\u00e9par\u00e9es par des \"&\"",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 10
}
},
{
@@ -1502,10 +1645,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": false,
- "importer_type": 10,
"description": "Etat de conservation",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 10
}
},
{
@@ -1513,10 +1657,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 6,
- "required": false,
- "importer_type": 10,
"description": "Commentaires",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 10
}
},
{
@@ -1524,10 +1669,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 7,
- "required": false,
- "importer_type": 10,
"description": "Label libre",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 10
}
},
{
@@ -1535,10 +1681,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1546,10 +1693,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1557,10 +1705,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1568,10 +1717,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 9,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1579,10 +1729,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 10,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1590,10 +1741,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 12,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1601,10 +1753,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 13,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1612,10 +1765,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 14,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1623,10 +1777,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 16,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1634,10 +1789,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 18,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1645,10 +1801,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 19,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1656,10 +1813,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 20,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1667,10 +1825,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 35,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1678,10 +1837,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 37,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1689,10 +1849,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 38,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1700,10 +1861,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 41,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1711,10 +1873,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 42,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1722,10 +1885,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 47,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1733,10 +1897,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 49,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1744,10 +1909,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 50,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1755,10 +1921,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 53,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1766,10 +1933,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 54,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1777,10 +1945,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 55,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1788,10 +1957,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 57,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1799,10 +1969,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 58,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1810,10 +1981,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 72,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1821,10 +1993,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 75,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1832,10 +2005,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 76,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1843,10 +2017,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 77,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1854,10 +2029,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 85,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1865,10 +2041,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 87,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1876,10 +2053,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 88,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1887,10 +2065,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 89,
- "required": false,
- "importer_type": 14,
"description": null,
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 14
}
},
{
@@ -1898,10 +2077,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": true,
- "importer_type": 15,
"description": "Code Patriarche",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -1909,10 +2089,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": false,
- "importer_type": 15,
"description": "Type d'op\u00e9ration",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -1920,10 +2101,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": false,
- "importer_type": 15,
"description": "Nom de l'op\u00e9ration",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -1931,10 +2113,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": false,
- "importer_type": 15,
"description": "Nom de l'op\u00e9rateur",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -1942,10 +2125,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 6,
- "required": false,
- "importer_type": 15,
"description": "Nom du responsable de l'op\u00e9ration.",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -1953,10 +2137,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 7,
- "required": false,
- "importer_type": 15,
"description": "Pr\u00e9nom du responsable de l'op\u00e9ration.",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -1964,10 +2149,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 8,
- "required": false,
- "importer_type": 15,
"description": "Date de d\u00e9but de l'op\u00e9ration avec le format ANN\u00c9E/MOIS/JOUR",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -1975,10 +2161,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 9,
- "required": false,
- "importer_type": 15,
"description": "Date de fin de l'op\u00e9ration avec le format ANN\u00c9E/MOIS/JOUR",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -1986,10 +2173,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 10,
- "required": false,
- "importer_type": 15,
"description": "P\u00e9riodes chronologiques",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -1997,10 +2185,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 11,
- "required": false,
- "importer_type": 15,
"description": "Ann\u00e9e de r\u00e9f\u00e9rence administrative",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -2008,10 +2197,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 12,
- "required": false,
- "importer_type": 15,
"description": "Num\u00e9ro de r\u00e9f\u00e9rence administrative de l'op\u00e9ration",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -2019,10 +2209,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 13,
- "required": false,
- "importer_type": 15,
"description": "Ancienne ref type DRACAR",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -2030,10 +2221,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 14,
- "required": false,
- "importer_type": 15,
"description": "Commentaires",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -2041,10 +2233,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 15,
- "required": false,
- "importer_type": 15,
"description": "Date de rendu du rapport (du premier si il y en a plusieurs)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -2052,10 +2245,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 16,
- "required": false,
- "importer_type": 15,
"description": "\u00c9tat de traitement des rapports",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 15
}
},
{
@@ -2063,10 +2257,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
- "required": false,
- "importer_type": 16,
"description": "Adresse du domicile",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2074,10 +2269,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": false,
- "importer_type": 16,
"description": "Courriel",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2085,10 +2281,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": false,
- "importer_type": 16,
"description": "Adresse",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2096,10 +2293,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": false,
- "importer_type": 16,
"description": "Commentaire : #AFEAF",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2107,10 +2305,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 7,
- "required": false,
- "importer_type": 16,
"description": "Commentaire : #BSR_CONTRI",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2118,10 +2317,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 10,
- "required": false,
- "importer_type": 16,
"description": "Code postal domicie",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2129,10 +2329,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 11,
- "required": false,
- "importer_type": 16,
"description": "Code postal",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2140,10 +2341,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 17,
- "required": false,
- "importer_type": 16,
"description": "Quelle est l'adresse pr\u00e9f\u00e9r\u00e9e ? (pro/domicile)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2151,10 +2353,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 19,
- "required": false,
- "importer_type": 16,
"description": "Type de contact",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2162,10 +2365,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 28,
- "required": false,
- "importer_type": 16,
"description": "Nom",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2173,10 +2377,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 29,
- "required": false,
- "importer_type": 16,
"description": "Nom de la structure associ\u00e9e",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2184,10 +2389,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 31,
- "required": false,
- "importer_type": 16,
"description": "Commentaire",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2195,10 +2401,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 32,
- "required": false,
- "importer_type": 16,
"description": "T\u00e9l\u00e9phone champs brut",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2206,10 +2413,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 33,
- "required": false,
- "importer_type": 16,
"description": "Pays du domicile",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2217,10 +2425,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 34,
- "required": false,
- "importer_type": 16,
"description": "Pays",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2228,10 +2437,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 36,
- "required": false,
- "importer_type": 16,
"description": "Pr\u00e9nom",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2239,10 +2449,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 37,
- "required": false,
- "importer_type": 16,
"description": "Titre",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2250,10 +2461,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 41,
- "required": false,
- "importer_type": 16,
"description": "Type de t\u00e9l\u00e9phone (\u00e0 retraiter)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2261,10 +2473,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 42,
- "required": false,
- "importer_type": 16,
"description": "Ville du domicile",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2272,10 +2485,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 43,
- "required": false,
- "importer_type": 16,
"description": "Ville",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 16
}
},
{
@@ -2283,10 +2497,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 1,
+ "description": "Code PATRIARCHE\r\n ou\r\n code num\u00e9rique (entier) UNIQUE pour une op\u00e9ration",
+ "regexp_pre_filter": null,
"required": true,
- "importer_type": 17,
- "description": "Code patriarche ou code num\u00e9rique (entier) unique pour une op\u00e9ration",
- "regexp_pre_filter": null
+ "label": "CODE OPERATION",
+ "importer_type": 17
}
},
{
@@ -2294,10 +2509,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 2,
- "required": true,
- "importer_type": 17,
"description": "Nom usuel de l'op\u00e9ration",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "Nom",
+ "importer_type": 17
}
},
{
@@ -2305,10 +2521,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 3,
- "required": true,
- "importer_type": 17,
"description": "Ann\u00e9e de r\u00e9f\u00e9rence (peut \u00eatre celle o\u00f9 le projet d'op\u00e9ration a \u00e9t\u00e9 cr\u00e9\u00e9 ou bien celle de la r\u00e9alisation selon votre usage) ",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "Ann\u00e9e",
+ "importer_type": 17
}
},
{
@@ -2316,10 +2533,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 4,
- "required": false,
- "importer_type": 17,
"description": "Index (num\u00e9ro par ann\u00e9e), le couple ann\u00e9e + index doit \u00eatre unique",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2327,10 +2545,23 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 5,
- "required": true,
- "importer_type": 17,
"description": "Type d'op\u00e9ration (parmi une liste)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 17
+ }
+ },
+ {
+ "pk": 335,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 6,
+ "description": "Ancien code unique de l'op\u00e9ration, peut \u00eatre la r\u00e9f\u00e9rence unique d'une op\u00e9ration pass\u00e9e comme un code DRACAR par exemple, 200 carac. max.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Ancien code",
+ "importer_type": 17
}
},
{
@@ -2338,10 +2569,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 7,
+ "description": "R\u00e9f\u00e9rence du dossier administratif associ\u00e9 \u00e0 l'op\u00e9ration sous la forme ANNEE-INDEX. Exemple : \"2002-4\".",
+ "regexp_pre_filter": null,
"required": false,
- "importer_type": 17,
- "description": "R\u00e9f\u00e9rence du dossier administratif associ\u00e9 \u00e0 l'op\u00e9ration sous la forme ANNEE-INDEX par exemple : \"2002-4\"",
- "regexp_pre_filter": null
+ "label": "",
+ "importer_type": 17
}
},
{
@@ -2349,10 +2581,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 8,
- "required": false,
- "importer_type": 17,
"description": "Identifiants des sites (entit\u00e9s arch\u00e9ologiques) concern\u00e9es par l'op\u00e9ration, s\u00e9par\u00e9es par \u00ab\u00a0&\u00a0\u00bb. \r\nExemple : \"44 125 0028 & 44 125 0029\"",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "",
+ "importer_type": 17
}
},
{
@@ -2360,10 +2593,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 9,
- "required": false,
- "importer_type": 17,
"description": "Types de vestiges (s\u00e9par\u00e9s par un \u00ab\u00a0&\u00a0\u00bb)\r\nExemple : \"four & fosses & villa\"",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2371,10 +2605,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 10,
+ "description": "P\u00e9riodes concern\u00e9es (s\u00e9par\u00e9es par un \u00ab\u00a0&\u00a0\u00bb). \r\nExemple : \"Gallo-romain & Fer & Med\".",
+ "regexp_pre_filter": null,
"required": false,
- "importer_type": 17,
- "description": "P\u00e9riodes concern\u00e9es (s\u00e9par\u00e9es par un \u00ab\u00a0&\u00a0\u00bb)\r\nExemple : \"Gallo-romain & Fer & Med\"",
- "regexp_pre_filter": null
+ "label": "",
+ "importer_type": 17
}
},
{
@@ -2382,10 +2617,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 11,
- "required": false,
- "importer_type": 17,
"description": "Titre (M., Mme), du responsable d'op\u00e9ration (RO)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2393,10 +2629,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 12,
- "required": false,
- "importer_type": 17,
"description": "Pr\u00e9nom du Responsable scientifique (responsable d'op\u00e9ration)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2404,10 +2641,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 13,
- "required": false,
- "importer_type": 17,
"description": "Nom du Responsable scientifique (responsable d'op\u00e9ration)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2415,10 +2653,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 14,
+ "description": "Rattachement du Responsable scientifique (responsable d'op\u00e9ration)\r\nExemple : \"INRAP\" ou plus pr\u00e9cis \"INRAP Direction interr\u00e9gionale Grand Ouest\" selon votre degr\u00e9 de pr\u00e9cision dans la gestion des rattachements et des organisations.",
+ "regexp_pre_filter": null,
"required": false,
- "importer_type": 17,
- "description": "Rattachement du Responsable scientifique (responsable d'op\u00e9ration)\r\nExemple : \"INRAP\" ou plus pr\u00e9cis \"INRAP Direction interr\u00e9gionale Grand Ouest\" selon votre degr\u00e9 de pr\u00e9cision dans la gestion des rattachements et des organisation.",
- "regexp_pre_filter": null
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2426,10 +2665,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 15,
+ "description": "Nom de l'op\u00e9rateur (organisation). Peut \u00eatre diff\u00e9rent de l'organisation de rattachement du responsable d'op\u00e9ration.",
+ "regexp_pre_filter": null,
"required": false,
- "importer_type": 17,
- "description": "Nom de l'op\u00e9rateur (organisation)",
- "regexp_pre_filter": null
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2437,10 +2677,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 16,
- "required": false,
- "importer_type": 17,
"description": "R\u00e9f\u00e9rence de l'op\u00e9rateur (code ou autre r\u00e9f\u00e9rence interne de l'op\u00e9rateur)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2448,10 +2689,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 17,
- "required": false,
- "importer_type": 17,
"description": "Titre (M., Mme), du responsable du suivi scientifique",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2459,10 +2701,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 18,
- "required": false,
- "importer_type": 17,
"description": "Pr\u00e9nom du responsable du suivi scientifique (ex\u00a0: resp. SRA ou pilote de l'op\u00e9ration, mais non responsable de celle-ci)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2470,10 +2713,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 19,
- "required": false,
- "importer_type": 17,
"description": "Nom du responsable du suivi scientifique (ex : resp. SRA ou pilote de l'op\u00e9ration, mais non responsable de celle-ci)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2481,10 +2725,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 20,
- "required": false,
- "importer_type": 17,
"description": "Rattachement du resp. du suivi scientifique",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2492,10 +2737,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 21,
- "required": false,
- "importer_type": 17,
"description": "Surface couverte par l'op\u00e9ration (m2)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2503,10 +2749,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 22,
- "required": false,
- "importer_type": 17,
"description": "Date de d\u00e9but de l'op\u00e9ration (d\u00e9but du terrain d'ordinaire mais vous pouvez utiliser autre chose)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2514,10 +2761,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 23,
- "required": false,
- "importer_type": 17,
"description": "Date de fin de l'op\u00e9ration (fin du terrain d'ordinaire mais vous pouvez utiliser autre chose)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2525,10 +2773,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 24,
- "required": false,
- "importer_type": 17,
"description": "Date de cl\u00f4ture (peut-\u00eatre la date de rendu de la documentation, la fin de la recherche associ\u00e9e ou autre) d\u2019ordinaire cela repr\u00e9sente la date \u00e0 partir de laquelle la documentation issue de l'op\u00e9ration n'est plus du ressort du responsable d'op\u00e9ration, mais vous pouvez utiliser autre chose.",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2536,10 +2785,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 25,
- "required": false,
- "importer_type": 17,
"description": "Date d'avis (ex\u00a0: avis de CIRA ou autre selon votre usage)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2547,10 +2797,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 26,
- "required": false,
- "importer_type": 17,
"description": "R\u00e9sultats consid\u00e9r\u00e9s comme n\u00e9gatif (d\u2019ordinaire utilis\u00e9 pour les diagnostics n\u00e9gatifs)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2558,10 +2809,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 27,
- "required": false,
- "importer_type": 17,
"description": "Pr\u00e9nom du rapporteur (CIRA ou autre selon votre usage de la notion d'avis)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2569,10 +2821,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 28,
- "required": false,
- "importer_type": 17,
"description": "Nom du rapporteur (CIRA ou autre selon votre usage de la notion d'avis)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2580,10 +2833,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 29,
- "required": false,
- "importer_type": 17,
"description": "Rattachement rapporteur (organisation)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2591,10 +2845,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 30,
- "required": false,
- "importer_type": 17,
"description": "Date limite pr\u00e9vue pour le rendu de la documentation scientifique",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2602,10 +2857,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 31,
- "required": false,
- "importer_type": 17,
"description": "Documentation re\u00e7ue",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2613,10 +2869,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 32,
- "required": false,
- "importer_type": 17,
"description": "Date limite pr\u00e9vue pour le rendu du mobilier",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2624,10 +2881,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 33,
+ "description": "Mobilier re\u00e7u ou livr\u00e9 selon vos usages et proc\u00e9dures",
+ "regexp_pre_filter": null,
"required": false,
- "importer_type": 17,
- "description": "Mobilier re\u00e7u (ou livr\u00e9)",
- "regexp_pre_filter": null
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2635,10 +2893,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 34,
- "required": false,
- "importer_type": 17,
"description": "Commentaire g\u00e9n\u00e9ral",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2646,10 +2905,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 35,
- "required": false,
- "importer_type": 17,
"description": "Date de livraison du rapport",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2657,10 +2917,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 36,
- "required": false,
- "importer_type": 17,
"description": "\u00c9tat de traitement du rapport",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2668,10 +2929,11 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 37,
- "required": false,
- "importer_type": 17,
"description": "Commentaire sur la documentation scientifique (y compris mobilier)",
- "regexp_pre_filter": null
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 17
}
},
{
@@ -2679,34 +2941,765 @@
"model": "ishtar_common.importercolumn",
"fields": {
"col_number": 38,
+ "description": "Nom du fichier image (jpg ou png), exemple \"IMG_5023.jpg\"\r\nLes fichiers images doivent \u00eatre joints \u00e0 l'import dans un fichier ZIP",
+ "regexp_pre_filter": null,
"required": false,
- "importer_type": 17,
- "description": "Image (nom du fichier)",
- "regexp_pre_filter": null
+ "label": null,
+ "importer_type": 17
}
},
{
- "pk": 46,
- "model": "ishtar_common.importtarget",
+ "pk": 302,
+ "model": "ishtar_common.importercolumn",
"fields": {
- "comment": null,
- "target": "find__conservatory_state",
- "column": 45,
- "formater_type": 22,
- "concat_str": null,
- "regexp_filter": null,
- "concat": false,
- "force_new": false
+ "col_number": 1,
+ "description": "Code PATRIARCHE ou code UNIQUE de l'op\u00e9ration associ\u00e9e",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "CODE OPERATION",
+ "importer_type": 18
}
},
{
- "pk": 47,
+ "pk": 311,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 2,
+ "description": "Commune (via num\u00e9ro INSEE)",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "INSEE",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 312,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 3,
+ "description": "Parcelle (identifiant externe), soit la section plus la parcelle sans espaces, par exemple \"ZA253\"",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "Parcelle",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 313,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 4,
+ "description": "Ann\u00e9e de la r\u00e9f\u00e9rence cadastrale (exemple : \"1980\")",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Ann\u00e9e cadastre",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 314,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 5,
+ "description": "Label / Identifiant (externe) de l'UE, ex: \"US 145\", \"Tranch\u00e9e 145\", \"145\", \"St 17\" etc.\r\nDoit \u00eatre unique pour une parcelle donn\u00e9e",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "Label UE",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 315,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 6,
+ "description": "Type d'UE, exemple : \"US\", \"Couche\", \"Tranch\u00e9e\", \"zone\", \"Secteur\", \"Log\", \"Carr\u00e9\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Type",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 316,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 7,
+ "description": "Description (texte, 1000 carac. max.)",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Description",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 317,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 8,
+ "description": "Commentaire g\u00e9n\u00e9ral (1000 carac. max.)",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 318,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 9,
+ "description": "Taille ou longueur (en m\u00e8tre), exemple \"1.2\", \"12\"",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 319,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 10,
+ "description": "Largeur (en m\u00e8tre), exemple \"1.2\", \"12\"",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 320,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 11,
+ "description": "\u00c9paisseur (en m\u00e8tre), exemple \"0.2\", \"2\"",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 321,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 12,
+ "description": "Profondeur (en m\u00e8tre), exemple \"0.2\", \"2\"",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 322,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 13,
+ "description": "Lieu, description textuelle de la localisation exemple : \"Au pied de l'arbre du P\u00e8re Jahouen\", \"En limite nord de la parcelle\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 323,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 14,
+ "description": "Contient ou non du mobilier (oui/non)",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 324,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 15,
+ "description": "Nom du fichier image (jpg ou png), exemple \"IMG_5023.jpg\".\r\nLes fichiers images doivent \u00eatre joints \u00e0 l'import dans un fichier ZIP",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 325,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 16,
+ "description": "Chronologies associ\u00e9es (plusieurs possibles s\u00e9par\u00e9es par &), exemple : \"Gallo-romain & M\u00e9di\u00e9val\", \"GR&MED\", \"M\u00e9solithique final & M\u00e9so moyen & Epipal\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 326,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 17,
+ "description": "Commentaire sur les datations (texte 1000 carac. max.), exemple : \"IIe - IIIe s.\", \"fin XVe ou plus tard\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 327,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 18,
+ "description": "Description du remplissage, 1000 carac. max. exemple \"Limons argileux brun riche en charbons\"",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 328,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 19,
+ "description": "Interpr\u00e9tation, texte 1000 carac. max., exemple \"Mur de cl\u00f4ture\", \"Sol couvert d'une mosa\u00efque, \"Pal\u00e9osol du d\u00e9but de l'Holoc\u00e8ne\", \"Four de r\u00e9duction de minerai de fer\", \"TP\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Interpr\u00e9tation",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 329,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 20,
+ "description": "Activit\u00e9, r\u00e9f\u00e9rence \u00e0 des types, par exemple : \"Naturelle\", \"Construction\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Type d'activit\u00e9",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 330,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 21,
+ "description": "Identification (type), par exemple \"Niveau d'occupation\", \"Mur\", \"Colluvions\", \"Chablis\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Identification (type)",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 331,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 22,
+ "description": "Terminus ante quem, limite temporelle avant laquelle l'UE s'est form\u00e9e, ici sous la forme de valeurs enti\u00e8res, exemple : \"322\", \"-45\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "TAQ",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 332,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 23,
+ "description": "Terminus post quem, limite temporelle apr\u00e8s laquelle l'UE s'est form\u00e9e, ici sous la forme de valeurs enti\u00e8res, exemple : \"322\", \"-45\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "TPQ",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 333,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 24,
+ "description": "Terminus ante quem estim\u00e9e, limite temporelle avant laquelle l'UE s'est form\u00e9e, ici sous la forme de valeurs enti\u00e8res, exemple : \"322\", \"-45\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "TAQ estim\u00e9e",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 334,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 25,
+ "description": "Terminus post quem estim\u00e9e, limite temporelle avant laquelle l'UE s'est form\u00e9e, ici sous la forme de valeurs enti\u00e8res, exemple : \"322\", \"-45\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "TPQ estim\u00e9e",
+ "importer_type": 18
+ }
+ },
+ {
+ "pk": 303,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 1,
+ "description": "Code PATRIARCHE\r\n ou\r\n code num\u00e9rique (entier) UNIQUE pour une op\u00e9ration",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "CODE OPERATION",
+ "importer_type": 19
+ }
+ },
+ {
+ "pk": 304,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 2,
+ "description": "Commune (via num\u00e9ro INSEE)",
+ "regexp_pre_filter": 2,
+ "required": true,
+ "label": null,
+ "importer_type": 19
+ }
+ },
+ {
+ "pk": 305,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 3,
+ "description": "Identifiant externe",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 19
+ }
+ },
+ {
+ "pk": 306,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 4,
+ "description": "Section (ex : \"ZA\"), maximum 4 caract\u00e8res",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 19
+ }
+ },
+ {
+ "pk": 307,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 5,
+ "description": "Num\u00e9ro de la parcelle (ex: \"253\"), mais peut accueillir une r\u00e9f\u00e9rence sous la forme de caract\u00e8res (maximum 6)",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": null,
+ "importer_type": 19
+ }
+ },
+ {
+ "pk": 308,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 6,
+ "description": "Ann\u00e9e de la r\u00e9f\u00e9rence cadastrale (exemple : \"1980\")",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 19
+ }
+ },
+ {
+ "pk": 309,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 7,
+ "description": "Lieu dit ou adresse associ\u00e9s \u00e0 la parcelle",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 19
+ }
+ },
+ {
+ "pk": 310,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 8,
+ "description": "Parcelle dans le domaine public ou non (binaire, oui/non)",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": null,
+ "importer_type": 19
+ }
+ },
+ {
+ "pk": 336,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 1,
+ "description": "Code PATRIARCHE ou code num\u00e9rique (entier) UNIQUE pour une op\u00e9ration.",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "CODE OPERATION",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 337,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 2,
+ "description": "Commune (via num\u00e9ro INSEE).",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "INSEE",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 338,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 3,
+ "description": "Parcelle (identifiant externe), soit la section plus la parcelle sans espaces. Exemple : \"ZA253\".",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "Parcelle",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 339,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 4,
+ "description": "Label / Identifiant (externe) de l'UE. Exemple : \"US 145\", \"Tranch\u00e9e 145\", \"145\", \"St 17\", etc. Doit \u00eatre unique pour une parcelle donn\u00e9e.",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "Label UE",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 340,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 5,
+ "description": "Identifiant libre pour le mobilier. Exemple : \"12\", \"Lot 24\", \"Sac vert\", etc.\r\nDoit \u00eatre unique \u00e0 l'\u00e9chelle de l'UE associ\u00e9e.",
+ "regexp_pre_filter": null,
+ "required": true,
+ "label": "Label mobilier",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 341,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 6,
+ "description": "Identifiant pr\u00e9c\u00e9dent, li\u00e9 \u00e0 une base de donn\u00e9e ou un autre mode d'enregistrement. Exemple : \"400.01.05\", \"Beau biface\", \"inv. 4523\", \"Iso.4220\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Identifiant pr\u00e9c\u00e9dent",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 343,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 7,
+ "description": "R\u00e9f\u00e9rence du point topo, d'ordinaire un entier mais peut \u00eatre autre chose. Champ texte, max. 120 caract\u00e8res. Exemple : \"7220\", \"pt. 72\", etc.\r\n\r\nNON LI\u00c9 POUR L'INSTANT.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Ref. point topo",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 342,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 8,
+ "description": "Description du mobilier, objet ou lot. Champ texte, max. 1000 caract\u00e8res. Exemple : \"Fibule aviforme \u00e0 roustade bipolaire\".",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Description",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 344,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 9,
+ "description": "D\u00e9finit si on enregistre ici un objet seul (parfois appel\u00e9 Isolation) ou un lot d'objets. Exemple : \"lot\", \"objet\", \"Iso\", \"vrac\", etc.\r\nEst ici traduit en binaire : \"objet\" ou \"lot\".",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Lot ou objet",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 345,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 10,
+ "description": "D\u00e9finit si un objet est complet ou non. Exemple : \"complet\", \"est complet\", \"incomplet\".\r\nEst ici traduit en binaire : \"complet\" ou \"incomplet\". ",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Compl\u00e9tude",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 346,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 11,
+ "description": "Type(s) de mat\u00e9riau(x) s\u00e9par\u00e9s par des \"&\". Exemple : \"m\u00e9tal & os\", \"LT\", \"Min\u00e9ral\", \"Granito\u00efde & Basalte & Ardoise\".",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Materiaux(x)",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 347,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 12,
+ "description": "\u00c9tat de conservation. Exemple : \"Instable\", \"Stable\", \"Inconnu\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "\u00c9tat de conservation",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 348,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 13,
+ "description": "Commentaire relatif \u00e0 la conservation. Champ texte, max. 1000 caract\u00e8res. Exemple : \"Devrait \u00eatre conserv\u00e9 dans une chambre climatis\u00e9e\", \"Ne sera plus qu'une poudre, si on ne s'en occupe pas sous peu\", \" \u00e0 jeter\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Commentaire conservation",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 349,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 14,
+ "description": "Type(s) d'objet(s), s\u00e9par\u00e9s par des \"&\". Exemple : \"tesson & charbon\", \"os & m\u00e9tal\", \"faune\", \"fibule & bague\", \"lame & lamelle\", \"\u00e9clat & nucl\u00e9us\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Type(s) d'objet(s)",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 350,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 15,
+ "description": "Type(s) d'actions de conservation \u00e0 mener, s\u00e9par\u00e9s par des \"&\". Exemple : \"\u00c0 restaurer\", \"reconditionnement\", \"\u00c0 reconditionner & \u00c0 stabiliser\"",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Type(s) d'actions de conservation \u00e0 mener",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 351,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 16,
+ "description": "Type(s) d'int\u00e9r\u00eat scientifique ou d'int\u00e9grit\u00e9, s\u00e9par\u00e9s par des \"&\". Exemple : \"Arch\u00e9ologiquement complet\", \"absent\", \"perdu\", etc.\r\nPeut \u00e9galement qualifier (selon votre usage) des qualit\u00e9s de fragmentation : \"proximal\", \"distal\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Type(s) d'int\u00e9grit\u00e9(s) et/ou int\u00e9r\u00eat(s)",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 352,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 17,
+ "description": "Type(s) de remarquabilit\u00e9(s), s\u00e9par\u00e9s par des \"&\". Exemple : \"Mus\u00e9e\", \"Publication\", \"Tessonier & Publication\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Type(s) de remarqualibit\u00e9(s)",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 353,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 18,
+ "description": "Longueur en cm (nombre d\u00e9cimal).",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Longueur (cm)",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 354,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 19,
+ "description": "Largeur en cm (nombre d\u00e9cimal).",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Largeur (cm)",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 355,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 20,
+ "description": "Hauteur en cm (nombre d\u00e9cimal).",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Hauteur (cm)",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 356,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 21,
+ "description": "Diam\u00e8tre en cm (nombre d\u00e9cimal).",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Diam\u00e8tre (cm)",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 357,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 22,
+ "description": "Commentaire permettant de donner des pr\u00e9cisions (ou d'importer des donn\u00e9es mixtes). Champ texte, max. 1000 caract\u00e8res. Exemple : \"18 x 12 x 5\", \"col de 43 mm\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Commentaire / Pr\u00e9cisions sur les dimensions ",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 358,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 23,
+ "description": "Nombre d'objet(s) li\u00e9(s) \u00e0 cet enregistrement (entier). Exemple : \"12\".\r\nAttention, ce champ n'est pas contraint par l'information de type OBJET/LOT (colonne n\u00b09).",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Nombre",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 359,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 24,
+ "description": "Marquage visible sur le mobilier. Champ texte, max. 1000 caract\u00e8res. Exemple : \"id1234 la Roche aux F\u00e9es\", \"MTX-45\", etc.\r\nCeci reproduit d'ordinaire un marquage r\u00e9alis\u00e9 par un arch\u00e9ologue. Il ne s'agit pas ici de reproduire une \u00e9pigraphie ou tout autre inscription arch\u00e9ologique (graffito, d\u00e9dicaces, defixio, etc.) , mais vous pouvez l'utiliser pour cela si vous n'avez pas \u00e0 utiliser de marquage arch\u00e9ologique.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Marque",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 360,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 25,
+ "description": "Commentaire g\u00e9n\u00e9ral libre. Champ texte, max. 2000 caract\u00e8res. Exemple : \"habillage en nid d'abeille, poli g\u00e9n\u00e9ralis\u00e9, encoche emmanchement lat\u00e9ral ouvert sur la face sup\u00e9rieure\", \"1 bord + bec tubulaire\", \"fibule de Langton Down\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Commentaire g\u00e9n\u00e9ral",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 361,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 26,
+ "description": "Commentaire g\u00e9n\u00e9ral sur les datations, si besoin. Champ texte, max. 1000 caract\u00e8res. Exemple : \"plut\u00f4t fin IIe s. ou d\u00e9but IIIe s.\", \"Datation \u00e0 pr\u00e9ciser avant publication\", \" Datation rapide faite par M. Dupont\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Commentaire g\u00e9n\u00e9ral sur les datations",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 362,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 27,
+ "description": "Valeur estim\u00e9e (\u20ac), sous la forme d'un nombre d\u00e9cimal. Exemple : \"4500\", \"0.2\", etc.\r\nUtile essentiellement pour les probl\u00e8mes de partage, vente, assurance etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Valeur estim\u00e9e",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 363,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 28,
+ "description": "Nom exact du fichier image, sous la forme XXXXX.jpg.\r\nAttention au respect strict des caract\u00e8res et majuscules lors d'un import de ce type, \".JPG\" ou \"*.jpg\", etc.\r\nExemple : \"P1030831.JPG\", \"IMG_6485.JPG\", \"fibule.jpg\", etc.\r\nLors de l'import il faut ajouter ces images sous la forme d'un fichier zip (joint au csv import\u00e9) pour que les images soient automatiquement int\u00e9gr\u00e9es.\r\n",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "Image",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 364,
+ "model": "ishtar_common.importercolumn",
+ "fields": {
+ "col_number": 29,
+ "description": "Chronologies associ\u00e9es (plusieurs possibles s\u00e9par\u00e9es par &). Exemple : \"Gallo-romain & M\u00e9di\u00e9val\", \"GR&MED\", \"M\u00e9solithique final & M\u00e9so moyen & Epipal\", etc.",
+ "regexp_pre_filter": null,
+ "required": false,
+ "label": "P\u00e9riodes",
+ "importer_type": 20
+ }
+ },
+ {
+ "pk": 46,
"model": "ishtar_common.importtarget",
"fields": {
"comment": null,
- "target": "find__preservation_to_considers",
- "column": 46,
- "formater_type": 23,
+ "target": "find__conservatory_state",
+ "column": 45,
+ "formater_type": 22,
"concat_str": null,
"regexp_filter": null,
"concat": false,
@@ -3610,6 +4603,370 @@
}
},
{
+ "pk": 47,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__preservation_to_considers",
+ "column": 46,
+ "formater_type": 23,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 325,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "image",
+ "column": 301,
+ "formater_type": 27,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 328,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "town__numero_insee",
+ "column": 304,
+ "formater_type": 11,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 331,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "parcel_number",
+ "column": 307,
+ "formater_type": 8,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 334,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "public_domain",
+ "column": 310,
+ "formater_type": 19,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 335,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "parcel__external_id",
+ "column": 311,
+ "formater_type": 28,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 338,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "remains",
+ "column": 272,
+ "formater_type": 41,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 341,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "description",
+ "column": 316,
+ "formater_type": 16,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 344,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "width",
+ "column": 319,
+ "formater_type": 21,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 347,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "location",
+ "column": 322,
+ "formater_type": 16,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 349,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "image",
+ "column": 324,
+ "formater_type": 27,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 350,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "datings__period",
+ "column": 325,
+ "formater_type": 6,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 353,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "interpretation",
+ "column": 328,
+ "formater_type": 16,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 356,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "taq",
+ "column": 331,
+ "formater_type": 1,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 359,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "tpq_estimated",
+ "column": 334,
+ "formater_type": 1,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 362,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "context_record__external_id",
+ "column": 337,
+ "formater_type": 28,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 365,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "label",
+ "column": 340,
+ "formater_type": 3,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 368,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "is_isolated",
+ "column": 344,
+ "formater_type": 19,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 371,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__conservatory_state",
+ "column": 347,
+ "formater_type": 22,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 374,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__preservation_to_considers",
+ "column": 350,
+ "formater_type": 23,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 377,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__length",
+ "column": 353,
+ "formater_type": 21,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 379,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__height",
+ "column": 355,
+ "formater_type": 21,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 382,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__find_number",
+ "column": 358,
+ "formater_type": 1,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 384,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__comment",
+ "column": 360,
+ "formater_type": 33,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 385,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__dating_comment",
+ "column": 361,
+ "formater_type": 16,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 388,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__datings__period",
+ "column": 364,
+ "formater_type": 6,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
"pk": 38,
"model": "ishtar_common.importtarget",
"fields": {
@@ -3680,20 +5037,6 @@
}
},
{
- "pk": 297,
- "model": "ishtar_common.importtarget",
- "fields": {
- "comment": "",
- "target": "archaeological_sites__reference",
- "column": 271,
- "formater_type": 40,
- "concat_str": "",
- "regexp_filter": null,
- "concat": false,
- "force_new": false
- }
- },
- {
"pk": 303,
"model": "ishtar_common.importtarget",
"fields": {
@@ -3806,6 +5149,314 @@
}
},
{
+ "pk": 326,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "operation__code_patriarche",
+ "column": 302,
+ "formater_type": 1,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 329,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "external_id",
+ "column": 305,
+ "formater_type": 11,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 332,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "year",
+ "column": 308,
+ "formater_type": 14,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 336,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "parcel__external_id",
+ "column": 312,
+ "formater_type": 11,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 339,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "label",
+ "column": 314,
+ "formater_type": 3,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 342,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "comment",
+ "column": 317,
+ "formater_type": 16,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 345,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "thickness",
+ "column": 320,
+ "formater_type": 21,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 348,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "has_furniture",
+ "column": 323,
+ "formater_type": 19,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 351,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "datings_comment",
+ "column": 326,
+ "formater_type": 16,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 354,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "activity",
+ "column": 329,
+ "formater_type": 42,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 357,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "tpq",
+ "column": 332,
+ "formater_type": 1,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 360,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "old_code",
+ "column": 335,
+ "formater_type": 30,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 363,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "context_record__external_id",
+ "column": 338,
+ "formater_type": 35,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 366,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__previous_id",
+ "column": 341,
+ "formater_type": 3,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 372,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__conservatory_comment",
+ "column": 348,
+ "formater_type": 16,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 369,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__is_complete",
+ "column": 345,
+ "formater_type": 19,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 378,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__width",
+ "column": 354,
+ "formater_type": 21,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 375,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__integrities",
+ "column": 351,
+ "formater_type": 43,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 380,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__diameter",
+ "column": 356,
+ "formater_type": 21,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 383,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__mark",
+ "column": 359,
+ "formater_type": 16,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 386,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__estimated_value",
+ "column": 362,
+ "formater_type": 21,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 297,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "archaeological_sites__reference",
+ "column": 271,
+ "formater_type": 45,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
"pk": 61,
"model": "ishtar_common.importtarget",
"fields": {
@@ -5500,13 +7151,153 @@
}
},
{
+ "pk": 295,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "associated_file__external_id",
+ "column": 270,
+ "formater_type": 35,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 298,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "scientist__title",
+ "column": 274,
+ "formater_type": 11,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 304,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "in_charge__title",
+ "column": 280,
+ "formater_type": 11,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 310,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "excavation_end_date",
+ "column": 286,
+ "formater_type": 25,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 313,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "negative_result",
+ "column": 289,
+ "formater_type": 19,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 319,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "finds_deadline",
+ "column": 295,
+ "formater_type": 25,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 322,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "report_delivery_date",
+ "column": 298,
+ "formater_type": 25,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 327,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "code_patriarche",
+ "column": 303,
+ "formater_type": 1,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 330,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "section",
+ "column": 306,
+ "formater_type": 7,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 333,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "address",
+ "column": 309,
+ "formater_type": 10,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
"pk": 292,
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
"target": "year",
"column": 267,
- "formater_type": 1,
+ "formater_type": 14,
"concat_str": "",
"regexp_filter": null,
"concat": false,
@@ -5514,13 +7305,13 @@
}
},
{
- "pk": 295,
+ "pk": 337,
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
- "target": "associated_file__external_id",
- "column": 270,
- "formater_type": 35,
+ "target": "parcel__year",
+ "column": 313,
+ "formater_type": 14,
"concat_str": "",
"regexp_filter": null,
"concat": false,
@@ -5528,13 +7319,41 @@
}
},
{
- "pk": 298,
+ "pk": 340,
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
- "target": "scientist__title",
- "column": 274,
- "formater_type": 11,
+ "target": "unit",
+ "column": 315,
+ "formater_type": 18,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 343,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "length",
+ "column": 318,
+ "formater_type": 21,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 346,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "depth",
+ "column": 321,
+ "formater_type": 21,
"concat_str": "",
"regexp_filter": null,
"concat": false,
@@ -5546,7 +7365,7 @@
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
- "target": "scientist__organization__name",
+ "target": "scientist__attached_to__name",
"column": 277,
"formater_type": 30,
"concat_str": "",
@@ -5556,13 +7375,13 @@
}
},
{
- "pk": 304,
+ "pk": 307,
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
- "target": "in_charge__title",
- "column": 280,
- "formater_type": 11,
+ "target": "in_charge__attached_to__name",
+ "column": 283,
+ "formater_type": 3,
"concat_str": "",
"regexp_filter": null,
"concat": false,
@@ -5570,12 +7389,12 @@
}
},
{
- "pk": 307,
+ "pk": 316,
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
- "target": "in_charge__organization__name",
- "column": 283,
+ "target": "cira_rapporteur__attached_to__name",
+ "column": 292,
"formater_type": 3,
"concat_str": "",
"regexp_filter": null,
@@ -5584,13 +7403,13 @@
}
},
{
- "pk": 310,
+ "pk": 352,
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
- "target": "excavation_end_date",
- "column": 286,
- "formater_type": 25,
+ "target": "filling",
+ "column": 327,
+ "formater_type": 16,
"concat_str": "",
"regexp_filter": null,
"concat": false,
@@ -5598,13 +7417,13 @@
}
},
{
- "pk": 313,
+ "pk": 355,
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
- "target": "negative_result",
- "column": 289,
- "formater_type": 19,
+ "target": "identification",
+ "column": 330,
+ "formater_type": 24,
"concat_str": "",
"regexp_filter": null,
"concat": false,
@@ -5612,12 +7431,40 @@
}
},
{
- "pk": 316,
+ "pk": 358,
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
- "target": "cira_rapporteur__organization__name",
- "column": 292,
+ "target": "taq_estimated",
+ "column": 333,
+ "formater_type": 1,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 361,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "context_record__external_id",
+ "column": 336,
+ "formater_type": 11,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 364,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "context_record__external_id",
+ "column": 339,
"formater_type": 3,
"concat_str": "",
"regexp_filter": null,
@@ -5626,13 +7473,13 @@
}
},
{
- "pk": 319,
+ "pk": 367,
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
- "target": "finds_deadline",
- "column": 295,
- "formater_type": 25,
+ "target": "find__description",
+ "column": 342,
+ "formater_type": 16,
"concat_str": "",
"regexp_filter": null,
"concat": false,
@@ -5640,13 +7487,69 @@
}
},
{
- "pk": 322,
+ "pk": 370,
"model": "ishtar_common.importtarget",
"fields": {
"comment": "",
- "target": "report_delivery_date",
- "column": 298,
- "formater_type": 25,
+ "target": "find__material_types",
+ "column": 346,
+ "formater_type": 20,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 373,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__object_types",
+ "column": 349,
+ "formater_type": 26,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 376,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__remarkabilities",
+ "column": 352,
+ "formater_type": 44,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 381,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__dimensions_comment",
+ "column": 357,
+ "formater_type": 16,
+ "concat_str": "",
+ "regexp_filter": null,
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 387,
+ "model": "ishtar_common.importtarget",
+ "fields": {
+ "comment": "",
+ "target": "find__image",
+ "column": 363,
+ "formater_type": 27,
"concat_str": "",
"regexp_filter": null,
"concat": false,
@@ -5708,6 +7611,15 @@
}
},
{
+ "pk": 42,
+ "model": "ishtar_common.formatertype",
+ "fields": {
+ "formater_type": "TypeFormater",
+ "many_split": "",
+ "options": "archaeological_context_records.models.ActivityType"
+ }
+ },
+ {
"pk": 24,
"model": "ishtar_common.formatertype",
"fields": {
@@ -5753,6 +7665,15 @@
}
},
{
+ "pk": 43,
+ "model": "ishtar_common.formatertype",
+ "fields": {
+ "formater_type": "TypeFormater",
+ "many_split": "&",
+ "options": "archaeological_finds.models.IntegrityType"
+ }
+ },
+ {
"pk": 20,
"model": "ishtar_common.formatertype",
"fields": {
@@ -5780,12 +7701,12 @@
}
},
{
- "pk": 40,
+ "pk": 44,
"model": "ishtar_common.formatertype",
"fields": {
"formater_type": "TypeFormater",
"many_split": "&",
- "options": "archaeological_operations.models.archaeological_sites"
+ "options": "archaeological_finds.models.RemarkabilityType"
}
},
{
@@ -5807,6 +7728,15 @@
}
},
{
+ "pk": 41,
+ "model": "ishtar_common.formatertype",
+ "fields": {
+ "formater_type": "TypeFormater",
+ "many_split": "&",
+ "options": "archaeological_operations.models.RemainType"
+ }
+ },
+ {
"pk": 37,
"model": "ishtar_common.formatertype",
"fields": {
@@ -5888,6 +7818,15 @@
}
},
{
+ "pk": 45,
+ "model": "ishtar_common.formatertype",
+ "fields": {
+ "formater_type": "UnicodeFormater",
+ "many_split": "",
+ "options": "20"
+ }
+ },
+ {
"pk": 30,
"model": "ishtar_common.formatertype",
"fields": {
@@ -6311,5 +8250,203 @@
"concat": false,
"force_new": false
}
+ },
+ {
+ "pk": 34,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 303,
+ "concat_str": "",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 33,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 304,
+ "concat_str": "-",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 31,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 302,
+ "concat_str": "-",
+ "field_name": "parcel__external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 32,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 302,
+ "concat_str": "-",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 35,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 311,
+ "concat_str": "-",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 36,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 312,
+ "concat_str": "-",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 37,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 314,
+ "concat_str": "-",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 38,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 336,
+ "concat_str": "-",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 39,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 336,
+ "concat_str": "-",
+ "field_name": "find__external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 40,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 337,
+ "concat_str": "-",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 41,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 337,
+ "concat_str": "-",
+ "field_name": "find__external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 42,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 338,
+ "concat_str": "-",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 43,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 338,
+ "concat_str": "-",
+ "field_name": "find__external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 44,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 339,
+ "concat_str": "-",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 45,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 339,
+ "concat_str": "-",
+ "field_name": "find__external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 46,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 340,
+ "concat_str": "",
+ "field_name": "find__label",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 47,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 340,
+ "concat_str": "-",
+ "field_name": "external_id",
+ "concat": false,
+ "force_new": false
+ }
+ },
+ {
+ "pk": 48,
+ "model": "ishtar_common.importerduplicatefield",
+ "fields": {
+ "column": 340,
+ "concat_str": "-",
+ "field_name": "find__external_id",
+ "concat": false,
+ "force_new": false
+ }
}
]
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 043b03f61..42d74f9ef 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -33,6 +33,7 @@ from django.utils.translation import ugettext_lazy as _
import models
import widgets
+from wizards import MultiValueDict
# from formwizard.forms import NamedUrlSessionFormWizard
@@ -224,7 +225,6 @@ class ManageOldType(object):
if prefix not in k:
continue
new_k = k[len(prefix) + 1:]
- items = []
if hasattr(kwargs['data'], 'getlist'):
items = kwargs['data'].getlist(k)
else:
@@ -238,7 +238,6 @@ class ManageOldType(object):
if 'initial' in kwargs and kwargs['initial']:
for k in kwargs['initial']:
if k not in self.init_data or not self.init_data[k]:
- items = []
if hasattr(kwargs['initial'], 'getlist'):
items = kwargs['initial'].getlist(k)
else:
@@ -249,6 +248,7 @@ class ManageOldType(object):
if k not in self.init_data:
self.init_data[k] = []
self.init_data[k].append(val)
+ self.init_data = MultiValueDict(self.init_data)
super(ManageOldType, self).__init__(*args, **kwargs)
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index c15999721..7ab09f9f7 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -40,7 +40,7 @@ from forms import FinalForm, FormSet, reverse_lazy, name_validator, \
def get_town_field(label=_(u"Town"), required=True):
help_text = _(
- u"<p>Type name, department code and/or postal code of the "
+ u"<p>Type name, department code of the "
u"town you would like to select. The search is insensitive to case."
u"</p>\n<p>Only the first twenty results are displayed but specifying "
u"the department code is generally sufficient to get the appropriate "
@@ -241,7 +241,7 @@ class ManualMerge(object):
except ValueError:
pass
if len(values) < 2:
- raise forms.ValidationError(_(u"At leat two items have to be "
+ raise forms.ValidationError(_(u"At least two items have to be "
u"selected."))
self.cleaned_data['to_merge'] = values
return values
diff --git a/ishtar_common/ishtar_menu.py b/ishtar_common/ishtar_menu.py
index 1f30bec0f..5ed8cad37 100644
--- a/ishtar_common/ishtar_menu.py
+++ b/ishtar_common/ishtar_menu.py
@@ -30,7 +30,7 @@ MENU_SECTIONS = [
childs=[
SectionItem(
'account', _(u"Account"),
- childs=[MenuItem('account_management', _(u"Add/modify"),
+ childs=[MenuItem('account_management', _(u"Addition/modification"),
model=models.IshtarUser,
access_controls=['add_ishtaruser', ]),
MenuItem('account_deletion', _(u"Deletion"),
@@ -67,7 +67,7 @@ MENU_SECTIONS = [
model=models.Person,
access_controls=['merge_person']),
MenuItem(
- 'person_deletion', _(u"Delete"),
+ 'person_deletion', _(u"Deletion"),
model=models.Person,
access_controls=['change_person', 'change_own_person']),
]),
@@ -98,7 +98,7 @@ MENU_SECTIONS = [
model=models.Organization,
access_controls=['merge_organization']),
MenuItem(
- 'organization_deletion', _(u"Delete"),
+ 'organization_deletion', _(u"Deletion"),
model=models.Organization,
access_controls=['change_organization',
'change_own_organization']),
diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot
index 5110bca31..2a60902e5 100644
--- a/ishtar_common/locale/django.pot
+++ b/ishtar_common/locale/django.pot
@@ -5,6 +5,7 @@
# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata
+# Valérie-Emma Leroux <emma@iggdrasil.net>, 2017. #zanata
msgid ""
msgstr ""
@@ -127,40 +128,40 @@ msgstr ""
msgid "\"%(value)s\" not in %(values)s"
msgstr ""
-#: forms.py:55
+#: forms.py:73
msgid "Enter a valid name consisting of letters, spaces and hyphens."
msgstr ""
-#: forms.py:71 forms_common.py:618
+#: forms.py:89 forms_common.py:618
msgid "Confirm"
msgstr ""
-#: forms.py:76
+#: forms.py:94
msgid "Are you sure you want to delete?"
msgstr ""
-#: forms.py:85
+#: forms.py:103
msgid "There are identical items."
msgstr ""
-#: forms.py:123 forms.py:124
+#: forms.py:141 forms.py:142
msgid "Closing date"
msgstr ""
-#: forms.py:137
+#: forms.py:155
msgid "You should select an item."
msgstr ""
-#: forms.py:138
+#: forms.py:156
msgid "Add a new item"
msgstr ""
-#: forms.py:245 models.py:1310
+#: forms.py:262 models.py:1367
msgid "Template"
msgstr ""
#: forms_common.py:41 forms_common.py:59 forms_common.py:182
-#: forms_common.py:406 models.py:1376 models.py:2758
+#: forms_common.py:406 models.py:1433 models.py:2825
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
@@ -168,16 +169,16 @@ msgstr ""
#: forms_common.py:43
msgid ""
-"<p>Type name, department code and/or postal code of the town you would like "
-"to select. The search is insensitive to case.</p>\n"
+"<p>Type name, department code of the town you would like to select. The "
+"search is insensitive to case.</p>\n"
"<p>Only the first twenty results are displayed but specifying the department "
"code is generally sufficient to get the appropriate result.</p>\n"
"<p class='example'>For instance type \"saint denis 93\" for getting the "
"french town Saint-Denis in the Seine-Saint-Denis department.</p>"
msgstr ""
-#: forms_common.py:68 forms_common.py:855 ishtar_menu.py:47 models.py:1546
-#: models.py:2384 models.py:2566 models.py:2628
+#: forms_common.py:68 forms_common.py:855 ishtar_menu.py:47 models.py:1606
+#: models.py:2452 models.py:2634 models.py:2695
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr ""
@@ -189,63 +190,63 @@ msgid ""
msgstr ""
#: forms_common.py:170 forms_common.py:327 forms_common.py:451
-#: ishtar_menu.py:75 models.py:1547 models.py:2273
+#: ishtar_menu.py:75 models.py:1607 models.py:2338
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr ""
#: forms_common.py:173 forms_common.py:210 forms_common.py:322
-#: forms_common.py:376 forms_common.py:446 models.py:977 models.py:1309
-#: models.py:1592 models.py:1810 models.py:2267 models.py:2370 models.py:2744
+#: forms_common.py:376 forms_common.py:446 models.py:1034 models.py:1366
+#: models.py:1652 models.py:1871 models.py:2332 models.py:2438 models.py:2811
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr ""
-#: forms_common.py:174 models.py:1531 models.py:1941
+#: forms_common.py:174 models.py:1588 models.py:2002
msgid "Organization type"
msgstr ""
-#: forms_common.py:176 forms_common.py:400 models.py:1371
+#: forms_common.py:176 forms_common.py:400 models.py:1428
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr ""
-#: forms_common.py:178 forms_common.py:403 models.py:1372
+#: forms_common.py:178 forms_common.py:403 models.py:1429
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr ""
-#: forms_common.py:180 forms_common.py:404 models.py:1374
+#: forms_common.py:180 forms_common.py:404 models.py:1431
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr ""
-#: forms_common.py:183 forms_common.py:407 models.py:1377
+#: forms_common.py:183 forms_common.py:407 models.py:1434
msgid "Country"
msgstr ""
#: forms_common.py:185 forms_common.py:324 forms_common.py:380
-#: forms_common.py:448 forms_common.py:572 models.py:1404
+#: forms_common.py:448 forms_common.py:572 models.py:1461
msgid "Email"
msgstr ""
-#: forms_common.py:186 forms_common.py:383 models.py:1389
+#: forms_common.py:186 forms_common.py:383 models.py:1446
#: 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:187 forms_common.py:392 models.py:1401
+#: forms_common.py:187 forms_common.py:392 models.py:1458
#: 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:211 forms_common.py:325 forms_common.py:449 models.py:1969
-#: models.py:2269 models.py:2679 templates/sheet_ope.html:85
+#: forms_common.py:211 forms_common.py:325 forms_common.py:449 models.py:2032
+#: models.py:2334 models.py:2746 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
@@ -253,12 +254,12 @@ msgstr ""
msgid "Type"
msgstr ""
-#: forms_common.py:220 views.py:139
+#: forms_common.py:220 views.py:142
msgid "Organization search"
msgstr ""
#: forms_common.py:244
-msgid "At leat two items have to be selected."
+msgid "At least two items have to be selected."
msgstr ""
#: forms_common.py:262
@@ -269,12 +270,12 @@ msgstr ""
msgid "Organization to merge"
msgstr ""
-#: forms_common.py:323 forms_common.py:374 forms_common.py:447 models.py:2368
+#: forms_common.py:323 forms_common.py:374 forms_common.py:447 models.py:2436
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr ""
-#: forms_common.py:339 forms_common.py:434 views.py:104
+#: forms_common.py:339 forms_common.py:434 views.py:107
msgid "Person search"
msgstr ""
@@ -287,25 +288,25 @@ msgstr ""
msgid "Identity"
msgstr ""
-#: forms_common.py:371 forms_common.py:773 forms_common.py:822 models.py:1942
-#: models.py:2362 models.py:2364 models.py:2676 templates/sheet_ope.html:104
+#: forms_common.py:371 forms_common.py:773 forms_common.py:822 models.py:2003
+#: models.py:2430 models.py:2432 models.py:2743 templates/sheet_ope.html:104
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr ""
-#: forms_common.py:372 models.py:2366
+#: forms_common.py:372 models.py:2434
msgid "Salutation"
msgstr ""
-#: forms_common.py:378 models.py:2372
+#: forms_common.py:378 models.py:2440
msgid "Raw name"
msgstr ""
-#: forms_common.py:381 models.py:1390
+#: forms_common.py:381 models.py:1447
msgid "Phone description"
msgstr ""
-#: forms_common.py:384 models.py:1392 models.py:1394
+#: forms_common.py:384 models.py:1449 models.py:1451
msgid "Phone description 2"
msgstr ""
@@ -313,11 +314,11 @@ msgstr ""
msgid "Phone 2"
msgstr ""
-#: forms_common.py:388 models.py:1398
+#: forms_common.py:388 models.py:1455
msgid "Phone description 3"
msgstr ""
-#: forms_common.py:390 models.py:1396
+#: forms_common.py:390 models.py:1453
msgid "Phone 3"
msgstr ""
@@ -325,23 +326,23 @@ msgstr ""
msgid "Current organization"
msgstr ""
-#: forms_common.py:409 models.py:1379
+#: forms_common.py:409 models.py:1436
msgid "Other address: address"
msgstr ""
-#: forms_common.py:412 models.py:1382
+#: forms_common.py:412 models.py:1439
msgid "Other address: address complement"
msgstr ""
-#: forms_common.py:414 models.py:1383
+#: forms_common.py:414 models.py:1440
msgid "Other address: postal code"
msgstr ""
-#: forms_common.py:416 models.py:1385
+#: forms_common.py:416 models.py:1442
msgid "Other address: town"
msgstr ""
-#: forms_common.py:418 models.py:1387
+#: forms_common.py:418 models.py:1444
msgid "Other address: country"
msgstr ""
@@ -357,7 +358,7 @@ msgstr ""
msgid "Account search"
msgstr ""
-#: forms_common.py:510 forms_common.py:550 forms_common.py:554 models.py:2321
+#: forms_common.py:510 forms_common.py:550 forms_common.py:554 models.py:2386
msgid "Person type"
msgstr ""
@@ -365,7 +366,7 @@ msgstr ""
msgid "Account"
msgstr ""
-#: forms_common.py:575 wizards.py:1192
+#: forms_common.py:575 wizards.py:1256
msgid "New password"
msgstr ""
@@ -389,7 +390,7 @@ msgstr ""
msgid "Send the new password by email?"
msgstr ""
-#: forms_common.py:628 forms_common.py:641 models.py:2759
+#: forms_common.py:628 forms_common.py:641 models.py:2826
msgid "Towns"
msgstr ""
@@ -405,7 +406,7 @@ msgstr ""
msgid "Documentation informations"
msgstr ""
-#: forms_common.py:775 forms_common.py:823 models.py:1943 models.py:2653
+#: forms_common.py:775 forms_common.py:823 models.py:2004 models.py:2720
msgid "Source type"
msgstr ""
@@ -417,37 +418,37 @@ msgstr ""
msgid "Internal reference"
msgstr ""
-#: forms_common.py:783 models.py:2690
+#: forms_common.py:783 models.py:2757
msgid "Numerical ressource (web address)"
msgstr ""
-#: forms_common.py:784 models.py:2692
+#: forms_common.py:784 models.py:2759
msgid "Receipt date"
msgstr ""
-#: forms_common.py:786 models.py:2096 models.py:2694
+#: forms_common.py:786 models.py:2161 models.py:2761
msgid "Creation date"
msgstr ""
-#: forms_common.py:789 models.py:2697
+#: forms_common.py:789 models.py:2764
msgid "Receipt date in documentation"
msgstr ""
-#: forms_common.py:791 forms_common.py:827 models.py:317 models.py:577
-#: models.py:1837 models.py:2376 models.py:2704
+#: forms_common.py:791 forms_common.py:827 models.py:323 models.py:634
+#: models.py:1898 models.py:2444 models.py:2771
msgid "Comment"
msgstr ""
-#: forms_common.py:793 forms_common.py:826 models.py:979 models.py:1596
-#: models.py:1769 models.py:1811 models.py:2703 templates/sheet_ope.html:128
+#: forms_common.py:793 forms_common.py:826 models.py:1036 models.py:1656
+#: models.py:1830 models.py:1872 models.py:2770 templates/sheet_ope.html:128
msgid "Description"
msgstr ""
-#: forms_common.py:796 models.py:2705
+#: forms_common.py:796 models.py:2772
msgid "Additional information"
msgstr ""
-#: forms_common.py:798 forms_common.py:830 models.py:2707
+#: forms_common.py:798 forms_common.py:830 models.py:2774
msgid "Has a duplicate"
msgstr ""
@@ -462,7 +463,7 @@ msgid ""
"p>"
msgstr ""
-#: forms_common.py:819 forms_common.py:848 forms_common.py:882 models.py:2633
+#: forms_common.py:819 forms_common.py:848 forms_common.py:882 models.py:2700
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr ""
@@ -475,7 +476,7 @@ msgstr ""
msgid "Would you like to delete this documentation?"
msgstr ""
-#: forms_common.py:856 models.py:1944 models.py:2621 models.py:2630
+#: forms_common.py:856 models.py:2005 models.py:2688 models.py:2697
msgid "Author type"
msgstr ""
@@ -487,7 +488,7 @@ msgstr ""
msgid "There are identical authors."
msgstr ""
-#: forms_common.py:893 models.py:2634 models.py:2686
+#: forms_common.py:893 models.py:2701 models.py:2753
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
@@ -498,14 +499,14 @@ msgid "Administration"
msgstr ""
#: ishtar_menu.py:33
-msgid "Add/modify"
+msgid "Addition/modification"
msgstr ""
-#: ishtar_menu.py:36
+#: ishtar_menu.py:36 ishtar_menu.py:70 ishtar_menu.py:101
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:39 models.py:1105 views.py:1484
+#: ishtar_menu.py:39 models.py:1162 views.py:1530
msgid "Global variables"
msgstr ""
@@ -533,20 +534,15 @@ msgstr ""
msgid "Manual merge"
msgstr ""
-#: ishtar_menu.py:70 ishtar_menu.py:101 models.py:2133 widgets.py:110
-#: templates/ishtar/form_delete.html:11
-msgid "Delete"
-msgstr ""
-
-#: ishtar_menu.py:109 models.py:2107
+#: ishtar_menu.py:109 models.py:2172
msgid "Imports"
msgstr ""
-#: ishtar_menu.py:112 views.py:1492
+#: ishtar_menu.py:112 views.py:1538
msgid "New import"
msgstr ""
-#: ishtar_menu.py:116 views.py:1506
+#: ishtar_menu.py:116 views.py:1552
msgid "Current imports"
msgstr ""
@@ -554,212 +550,212 @@ msgstr ""
msgid "Old imports"
msgstr ""
-#: models.py:178
+#: models.py:183
msgid "Not a valid item."
msgstr ""
-#: models.py:191
+#: models.py:196
msgid "A selected item is not a valid item."
msgstr ""
-#: models.py:202
+#: models.py:207
msgid "This item already exists."
msgstr ""
-#: models.py:313 models.py:576 models.py:1344 models.py:1356
+#: models.py:319 models.py:633 models.py:1401 models.py:1413 models.py:1827
msgid "Label"
msgstr ""
-#: models.py:315
+#: models.py:321
msgid "Textual ID"
msgstr ""
-#: models.py:318 models.py:579 models.py:1313
+#: models.py:324 models.py:636 models.py:1370
msgid "Available"
msgstr ""
-#: models.py:598 models.py:1883
+#: models.py:655 models.py:1944
msgid "Key"
msgstr ""
-#: models.py:604
+#: models.py:661
msgid "Specific key to an import"
msgstr ""
-#: models.py:696
+#: models.py:753
msgid "Last editor"
msgstr ""
-#: models.py:699
+#: models.py:756
msgid "Creator"
msgstr ""
-#: models.py:841 models.py:2770
+#: models.py:898 models.py:2837
msgid "Order"
msgstr ""
-#: models.py:842
+#: models.py:899
msgid "Symmetrical"
msgstr ""
-#: models.py:843
+#: models.py:900
msgid "Tiny label"
msgstr ""
-#: models.py:857
+#: models.py:914
msgid "Cannot have symmetrical and an inverse_relation"
msgstr ""
-#: models.py:971
+#: models.py:1028
msgid "Euro"
msgstr ""
-#: models.py:972
+#: models.py:1029
msgid "US dollar"
msgstr ""
-#: models.py:978 models.py:1594
+#: models.py:1035 models.py:1654
msgid "Slug"
msgstr ""
-#: models.py:980
+#: models.py:1037
msgid "Files module"
msgstr ""
-#: models.py:981
+#: models.py:1038
msgid "Context records module"
msgstr ""
-#: models.py:983
+#: models.py:1040
msgid "Finds module"
msgstr ""
-#: models.py:984
+#: models.py:1041
msgid "Need context records module"
msgstr ""
-#: models.py:986
+#: models.py:1043
msgid "Warehouses module"
msgstr ""
-#: models.py:987
+#: models.py:1044
msgid "Need finds module"
msgstr ""
-#: models.py:989
+#: models.py:1046
msgid "Home page"
msgstr ""
-#: models.py:990
+#: models.py:1047
#, 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:994
+#: models.py:1051
msgid "File external id"
msgstr ""
-#: models.py:996
+#: models.py:1053
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:1001
+#: models.py:1058
msgid "Parcel external id"
msgstr ""
-#: models.py:1004
+#: models.py:1061
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:1009
+#: models.py:1066
msgid "Context record external id"
msgstr ""
-#: models.py:1011
+#: models.py:1068
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:1016
+#: models.py:1073
msgid "Base find external id"
msgstr ""
-#: models.py:1018
+#: models.py:1075
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:1023
+#: models.py:1080
msgid "Find external id"
msgstr ""
-#: models.py:1025
+#: models.py:1082
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:1030
+#: models.py:1087
msgid "Raw name for person"
msgstr ""
-#: models.py:1032
+#: models.py:1089
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:1036
+#: models.py:1093
msgid "Current active"
msgstr ""
-#: models.py:1037
+#: models.py:1094
msgid "Currency"
msgstr ""
-#: models.py:1041
+#: models.py:1098
msgid "Ishtar site profile"
msgstr ""
-#: models.py:1042
+#: models.py:1099
msgid "Ishtar site profiles"
msgstr ""
-#: models.py:1098
+#: models.py:1155
msgid "Variable name"
msgstr ""
-#: models.py:1099
+#: models.py:1156
msgid "Description of the variable"
msgstr ""
-#: models.py:1101 models.py:1884
+#: models.py:1158 models.py:1945
msgid "Value"
msgstr ""
-#: models.py:1104
+#: models.py:1161
msgid "Global variable"
msgstr ""
-#: models.py:1214 models.py:1244
+#: models.py:1271 models.py:1301
msgid "Total"
msgstr ""
-#: models.py:1221 models.py:1345 models.py:1357
+#: models.py:1278 models.py:1402 models.py:1414
#: templates/ishtar/sheet_person.html:22
#: templates/ishtar/dashboards/dashboard_main_detail.html:141
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
@@ -767,718 +763,742 @@ msgstr ""
msgid "Number"
msgstr ""
-#: models.py:1308
+#: models.py:1365
msgid "Administrative Act"
msgstr ""
-#: models.py:1312
+#: models.py:1369
msgid "Associated object"
msgstr ""
-#: models.py:1316
+#: models.py:1373
msgid "Document template"
msgstr ""
-#: models.py:1317
+#: models.py:1374
msgid "Document templates"
msgstr ""
-#: models.py:1348 models.py:1358 models.py:2091
+#: models.py:1405 models.py:1415 models.py:2156
msgid "State"
msgstr ""
-#: models.py:1362 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1419 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr ""
-#: models.py:1363
+#: models.py:1420
msgid "Departments"
msgstr ""
-#: models.py:1400
+#: models.py:1457
msgid "Raw phone"
msgstr ""
-#: models.py:1406
+#: models.py:1463
msgid "Alternative address is prefered"
msgstr ""
-#: models.py:1445
+#: models.py:1502
msgid "Tel: "
msgstr ""
-#: models.py:1449
+#: models.py:1506
msgid "Mobile: "
msgstr ""
-#: models.py:1453
+#: models.py:1510
msgid "Email: "
msgstr ""
-#: models.py:1458
+#: models.py:1515
msgid "Merge key"
msgstr ""
-#: models.py:1532
+#: models.py:1589
msgid "Organization types"
msgstr ""
-#: models.py:1548 views.py:234
+#: models.py:1608 views.py:237
msgid "Operation"
msgstr ""
-#: models.py:1550
+#: models.py:1610
msgid "Archaeological site"
msgstr ""
-#: models.py:1551
+#: models.py:1611
msgid "Parcels"
msgstr ""
-#: models.py:1553
+#: models.py:1613
msgid "Operation source"
msgstr ""
-#: models.py:1556 views.py:1299 views.py:1350
+#: models.py:1616 views.py:1346 views.py:1396
msgid "Archaeological files"
msgstr ""
-#: models.py:1558 views.py:1302 views.py:1358
+#: models.py:1618 views.py:1349 views.py:1404
msgid "Context records"
msgstr ""
-#: models.py:1560
+#: models.py:1620
msgid "Context record relations"
msgstr ""
-#: models.py:1562 views.py:1304 views.py:1361
-msgid "Finds"
+#: models.py:1622
+msgid "Base finds"
msgstr ""
-#: models.py:1598 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1658 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr ""
-#: models.py:1600
+#: models.py:1660
msgid "Associated model"
msgstr ""
-#: models.py:1603
+#: models.py:1663
msgid "Is template"
msgstr ""
-#: models.py:1604
+#: models.py:1664
msgid "Unicity keys (separator \";\")"
msgstr ""
-#: models.py:1608
+#: models.py:1668
msgid "Importer - Type"
msgstr ""
-#: models.py:1609
+#: models.py:1669
msgid "Importer - Types"
msgstr ""
-#: models.py:1699
+#: models.py:1759
msgid "Importer - Default"
msgstr ""
-#: models.py:1700
+#: models.py:1760
msgid "Importer - Defaults"
msgstr ""
-#: models.py:1735
+#: models.py:1795
msgid "Importer - Default value"
msgstr ""
-#: models.py:1736
+#: models.py:1796
msgid "Importer - Default values"
msgstr ""
-#: models.py:1768
+#: models.py:1829
msgid "Column number"
msgstr ""
-#: models.py:1771
+#: models.py:1832
msgid "Required"
msgstr ""
-#: models.py:1774
+#: models.py:1835
msgid "Importer - Column"
msgstr ""
-#: models.py:1775
+#: models.py:1836
msgid "Importer - Columns"
msgstr ""
-#: models.py:1795
+#: models.py:1856
msgid "Field name"
msgstr ""
-#: models.py:1797 models.py:1831
+#: models.py:1858 models.py:1892
msgid "Force creation of new items"
msgstr ""
-#: models.py:1799 models.py:1833
+#: models.py:1860 models.py:1894
msgid "Concatenate with existing"
msgstr ""
-#: models.py:1801 models.py:1835
+#: models.py:1862 models.py:1896
msgid "Concatenate character"
msgstr ""
-#: models.py:1805
+#: models.py:1866
msgid "Importer - Duplicate field"
msgstr ""
-#: models.py:1806
+#: models.py:1867
msgid "Importer - Duplicate fields"
msgstr ""
-#: models.py:1813
+#: models.py:1874
msgid "Regular expression"
msgstr ""
-#: models.py:1816
+#: models.py:1877
msgid "Importer - Regular expression"
msgstr ""
-#: models.py:1817
+#: models.py:1878
msgid "Importer - Regular expressions"
msgstr ""
-#: models.py:1840
+#: models.py:1901
msgid "Importer - Target"
msgstr ""
-#: models.py:1841
+#: models.py:1902
msgid "Importer - Targets"
msgstr ""
-#: models.py:1865 views.py:518
+#: models.py:1926 views.py:536
msgid "True"
msgstr ""
-#: models.py:1866 views.py:520
+#: models.py:1927 views.py:538
msgid "False"
msgstr ""
-#: models.py:1885
+#: models.py:1946
msgid "Is set"
msgstr ""
-#: models.py:1892
+#: models.py:1953
msgid "Importer - Target key"
msgstr ""
-#: models.py:1893
+#: models.py:1954
msgid "Importer - Targets keys"
msgstr ""
-#: models.py:1945 models.py:2669 models.py:2682
+#: models.py:2006 models.py:2736 models.py:2749
msgid "Format"
msgstr ""
-#: models.py:1946 models.py:2774
+#: models.py:2007 models.py:2841
msgid "Operation type"
msgstr ""
-#: models.py:1947
+#: models.py:2008
msgid "Period"
msgstr ""
-#: models.py:1948
+#: models.py:2009
msgid "Report state"
msgstr ""
-#: models.py:1949
+#: models.py:2010
+msgid "Remain type"
+msgstr ""
+
+#: models.py:2011
msgid "Unit"
msgstr ""
-#: models.py:1950
+#: models.py:2012
+msgid "Activity type"
+msgstr ""
+
+#: models.py:2013
msgid "Material"
msgstr ""
-#: models.py:1952
+#: models.py:2015
msgid "Conservatory state"
msgstr ""
-#: models.py:1953
+#: models.py:2016
msgid "Preservation type"
msgstr ""
-#: models.py:1954
+#: models.py:2017
msgid "Object type"
msgstr ""
-#: models.py:1956
+#: models.py:2019
msgid "Identification type"
msgstr ""
-#: models.py:1958
+#: models.py:2021
msgid "Context record relation type"
msgstr ""
-#: models.py:1959 models.py:2661
+#: models.py:2022 models.py:2728
msgid "Support type"
msgstr ""
-#: models.py:1965
+#: models.py:2028
msgid "Integer"
msgstr ""
-#: models.py:1966
+#: models.py:2029
msgid "Float"
msgstr ""
-#: models.py:1967
+#: models.py:2030
msgid "String"
msgstr ""
-#: models.py:1968 templates/sheet_ope.html:86
+#: models.py:2031 templates/sheet_ope.html:86
msgid "Date"
msgstr ""
-#: models.py:1970 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: models.py:2033 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
#: templates/ishtar/dashboards/dashboard_main_detail.html:126
msgid "Year"
msgstr ""
-#: models.py:1971
+#: models.py:2034
msgid "String to boolean"
msgstr ""
-#: models.py:1972
+#: models.py:2035
msgctxt "filesystem"
msgid "File"
msgstr ""
-#: models.py:1973
+#: models.py:2036
msgid "Unknow type"
msgstr ""
-#: models.py:1989
+#: models.py:2052
msgid "4 digit year. e.g.: \"2015\""
msgstr ""
-#: models.py:1990
+#: models.py:2053
msgid "4 digit year/month/day. e.g.: \"2015/02/04\""
msgstr ""
-#: models.py:1991
+#: models.py:2054
msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""
msgstr ""
-#: models.py:2001
+#: models.py:2064
msgid "Options"
msgstr ""
-#: models.py:2003
+#: models.py:2066
msgid "Split character(s)"
msgstr ""
-#: models.py:2007
+#: models.py:2070
msgid "Importer - Formater type"
msgstr ""
-#: models.py:2008
+#: models.py:2071
msgid "Importer - Formater types"
msgstr ""
-#: models.py:2055 templates/ishtar/dashboards/dashboard_main_detail.html:63
+#: models.py:2120 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr ""
-#: models.py:2056
+#: models.py:2121
msgid "Analyse in progress"
msgstr ""
-#: models.py:2057
+#: models.py:2122
msgid "Analysed"
msgstr ""
-#: models.py:2058
+#: models.py:2123
msgid "Import pending"
msgstr ""
-#: models.py:2059
+#: models.py:2124
msgid "Import in progress"
msgstr ""
-#: models.py:2060
+#: models.py:2125
msgid "Finished with errors"
msgstr ""
-#: models.py:2061
+#: models.py:2126
msgid "Finished"
msgstr ""
-#: models.py:2062
+#: models.py:2127
msgid "Archived"
msgstr ""
-#: models.py:2074
+#: models.py:2139
msgid "Imported file"
msgstr ""
-#: models.py:2077
+#: models.py:2142
msgid "Associated images (zip file)"
msgstr ""
-#: models.py:2079
+#: models.py:2144
msgid "Encoding"
msgstr ""
-#: models.py:2081
+#: models.py:2146
msgid "Skip lines"
msgstr ""
-#: models.py:2082 templates/ishtar/import_list.html:47
+#: models.py:2147 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr ""
-#: models.py:2085
+#: models.py:2150
msgid "Result file"
msgstr ""
-#: models.py:2088 templates/ishtar/import_list.html:53
+#: models.py:2153 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr ""
-#: models.py:2094
+#: models.py:2159
msgid "Conservative import"
msgstr ""
-#: models.py:2099
+#: models.py:2164
msgid "End date"
msgstr ""
-#: models.py:2101
+#: models.py:2166
msgid "Remaining seconds"
msgstr ""
-#: models.py:2106
+#: models.py:2171
msgid "Import"
msgstr ""
-#: models.py:2123
+#: models.py:2188
msgid "Analyse"
msgstr ""
-#: models.py:2125 models.py:2128
+#: models.py:2190 models.py:2193
msgid "Re-analyse"
msgstr ""
-#: models.py:2126
+#: models.py:2191
msgid "Launch import"
msgstr ""
-#: models.py:2129
+#: models.py:2194
msgid "Re-import"
msgstr ""
-#: models.py:2130
+#: models.py:2195
msgid "Archive"
msgstr ""
-#: models.py:2132
+#: models.py:2197
msgid "Unarchive"
msgstr ""
-#: models.py:2274
+#: models.py:2198 widgets.py:129 templates/ishtar/form_delete.html:11
+msgid "Delete"
+msgstr ""
+
+#: models.py:2339
msgid "Organizations"
msgstr ""
-#: models.py:2276
+#: models.py:2341
msgid "Can view all Organizations"
msgstr ""
-#: models.py:2277
+#: models.py:2342
msgid "Can view own Organization"
msgstr ""
-#: models.py:2278
+#: models.py:2343
msgid "Can add own Organization"
msgstr ""
-#: models.py:2280
+#: models.py:2345
msgid "Can change own Organization"
msgstr ""
-#: models.py:2282
+#: models.py:2347
msgid "Can delete own Organization"
msgstr ""
-#: models.py:2317
+#: models.py:2382
msgid "Groups"
msgstr ""
-#: models.py:2322
+#: models.py:2387
msgid "Person types"
msgstr ""
-#: models.py:2330
+#: models.py:2398
msgid "Title type"
msgstr ""
-#: models.py:2331
+#: models.py:2399
msgid "Title types"
msgstr ""
-#: models.py:2340
+#: models.py:2408
msgid "Mr"
msgstr ""
-#: models.py:2341
+#: models.py:2409
msgid "Miss"
msgstr ""
-#: models.py:2342
+#: models.py:2410
msgid "Mr and Mrs"
msgstr ""
-#: models.py:2343
+#: models.py:2411
msgid "Mrs"
msgstr ""
-#: models.py:2344
+#: models.py:2412
msgid "Doctor"
msgstr ""
-#: models.py:2374
+#: models.py:2442
msgid "Contact type"
msgstr ""
-#: models.py:2377 models.py:2441
+#: models.py:2445 models.py:2509
msgid "Types"
msgstr ""
-#: models.py:2380
+#: models.py:2448
msgid "Is attached to"
msgstr ""
-#: models.py:2385
+#: models.py:2453
msgid "Persons"
msgstr ""
-#: models.py:2387
+#: models.py:2455
msgid "Can view all Persons"
msgstr ""
-#: models.py:2388
+#: models.py:2456
msgid "Can view own Person"
msgstr ""
-#: models.py:2389
+#: models.py:2457
msgid "Can add own Person"
msgstr ""
-#: models.py:2390
+#: models.py:2458
msgid "Can change own Person"
msgstr ""
-#: models.py:2391
+#: models.py:2459
msgid "Can delete own Person"
msgstr ""
-#: models.py:2569
+#: models.py:2637
msgid "Advanced shortcut menu"
msgstr ""
-#: models.py:2572
+#: models.py:2640
msgid "Ishtar user"
msgstr ""
-#: models.py:2573
+#: models.py:2641
msgid "Ishtar users"
msgstr ""
-#: models.py:2616
+#: models.py:2683
msgid "To modify the password use the form in Auth > User"
msgstr ""
-#: models.py:2622
+#: models.py:2689
msgid "Author types"
msgstr ""
-#: models.py:2654
+#: models.py:2721
msgid "Source types"
msgstr ""
-#: models.py:2662
+#: models.py:2729
msgid "Support types"
msgstr ""
-#: models.py:2670
+#: models.py:2737
msgid "Formats"
msgstr ""
-#: models.py:2677
+#: models.py:2744
msgid "External ID"
msgstr ""
-#: models.py:2680
+#: models.py:2747
msgid "Support"
msgstr ""
-#: models.py:2684
+#: models.py:2751
msgid "Scale"
msgstr ""
-#: models.py:2698
+#: models.py:2765
msgid "Item number"
msgstr ""
-#: models.py:2699
+#: models.py:2766
msgid "Ref."
msgstr ""
-#: models.py:2702
+#: models.py:2769
msgid "Internal ref."
msgstr ""
-#: models.py:2745
+#: models.py:2812
msgid "Surface (m2)"
msgstr ""
-#: models.py:2746 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2813 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr ""
-#: models.py:2771
+#: models.py:2838
msgid "Is preventive"
msgstr ""
-#: models.py:2775
+#: models.py:2842
msgid "Operation types"
msgstr ""
-#: models.py:2804
+#: models.py:2871
msgid "Preventive"
msgstr ""
-#: models.py:2805
+#: models.py:2872
msgid "Research"
msgstr ""
-#: utils.py:74
+#: utils.py:81
msgid " (...)"
msgstr ""
-#: utils.py:107
+#: utils.py:114
msgid "Load another random image?"
msgstr ""
-#: views.py:111
+#: views.py:114
msgid "New person"
msgstr ""
-#: views.py:119
+#: views.py:122
msgid "Person modification"
msgstr ""
-#: views.py:134
+#: views.py:137
msgid "Person deletion"
msgstr ""
-#: views.py:145
+#: views.py:148
msgid "New organization"
msgstr ""
-#: views.py:152
+#: views.py:155
msgid "Organization modification"
msgstr ""
-#: views.py:168
+#: views.py:171
msgid "Organization deletion"
msgstr ""
-#: views.py:175
+#: views.py:178
msgid "Account management"
msgstr ""
-#: views.py:181
+#: views.py:184
msgid "Account deletion"
msgstr ""
-#: views.py:233
+#: views.py:236
msgid "Archaeological file"
msgstr ""
-#: views.py:236
+#: views.py:239
msgid "Context record"
msgstr ""
-#: views.py:238
+#: views.py:241
msgid "Find"
msgstr ""
-#: views.py:1238 views.py:1281
+#: views.py:243
+msgid "Treatment request"
+msgstr ""
+
+#: views.py:244
+msgid "Treatment"
+msgstr ""
+
+#: views.py:1285 views.py:1328
msgid "Operation not permitted."
msgstr ""
-#: views.py:1240
+#: views.py:1287
#, python-format
msgid "New %s"
msgstr ""
-#: views.py:1300 views.py:1354
+#: views.py:1347 views.py:1400
msgid "Operations"
msgstr ""
-#: views.py:1553 templates/ishtar/import_list.html:43
+#: views.py:1351 views.py:1407
+msgid "Finds"
+msgstr ""
+
+#: views.py:1599 templates/ishtar/import_list.html:43
msgid "Link unmatched items"
msgstr ""
-#: views.py:1568
+#: views.py:1614
msgid "Delete import"
msgstr ""
-#: views.py:1607
+#: views.py:1653
msgid "Merge persons"
msgstr ""
-#: views.py:1631
+#: views.py:1677
msgid "Select the main person"
msgstr ""
-#: views.py:1640
+#: views.py:1686
msgid "Merge organization"
msgstr ""
-#: views.py:1650
+#: views.py:1696
msgid "Select the main organization"
msgstr ""
-#: views.py:1690 views.py:1706
+#: views.py:1736 views.py:1752
msgid "Corporation manager"
msgstr ""
-#: widgets.py:239 widgets.py:347 widgets.py:463
+#: widgets.py:258 widgets.py:365 widgets.py:480
msgid "Search..."
msgstr ""
-#: widgets.py:623 templatetags/window_tables.py:79
+#: widgets.py:670 templatetags/window_tables.py:91
msgid "No results"
msgstr ""
-#: widgets.py:624 templatetags/window_tables.py:80
+#: widgets.py:671 templatetags/window_tables.py:92
msgid "Loading..."
msgstr ""
-#: widgets.py:625
+#: widgets.py:672
msgid "Remove"
msgstr ""
-#: wizards.py:323 templates/ishtar/import_delete.html:20
+#: wizards.py:342 templates/ishtar/import_delete.html:20
msgid "Yes"
msgstr ""
-#: wizards.py:325
+#: wizards.py:344
msgid "No"
msgstr ""
-#: wizards.py:1249
+#: wizards.py:1313
#, python-format
msgid "[%(app_name)s] Account creation/modification"
msgstr ""
@@ -1518,11 +1538,11 @@ msgid "The %(app_name)s team"
msgstr ""
#: templates/base.html:41
-msgid "Searches in the shortcut menu deals with all items."
+msgid "Searches in the shortcut menu deal with all items."
msgstr ""
#: templates/base.html:42
-msgid "Searches in the shortcut menu deals with only your items."
+msgid "Searches in the shortcut menu deal with only your items."
msgstr ""
#: templates/base.html:49
@@ -1686,7 +1706,7 @@ msgid "Operator's reference code:"
msgstr ""
#: templates/sheet_ope.html:36
-msgid "Town planning service:"
+msgid "Planning service:"
msgstr ""
#: templates/sheet_ope.html:37
@@ -1846,7 +1866,7 @@ msgid "where the magic happens."
msgstr ""
#: templates/window.html:40 templates/blocks/JQueryJqGrid.html:28
-#: templates/ishtar/manage_basket.html:9
+#: templates/ishtar/manage_basket.html:12
msgid "Add"
msgstr ""
@@ -1926,7 +1946,7 @@ msgstr ""
#: templates/ishtar/import_list.html:58 templates/ishtar/merge.html:31
#: templates/ishtar/simple_form.html:7
#: templates/ishtar/wizard/confirm_wizard.html:42
-#: templates/ishtar/wizard/default_wizard.html:30
+#: templates/ishtar/wizard/default_wizard.html:31
#: templates/ishtar/wizard/search.html:13
#: templates/ishtar/wizard/validation_bar.html:4
msgid "Validate"
@@ -1973,11 +1993,11 @@ msgstr ""
msgid "Control file"
msgstr ""
-#: templates/ishtar/manage_basket.html:7
-msgid "Checking \"Select all\" only select the current page."
+#: templates/ishtar/manage_basket.html:9
+msgid "Checking \"Select all\" only selects the current page."
msgstr ""
-#: templates/ishtar/manage_basket.html:10
+#: templates/ishtar/manage_basket.html:13
msgid "Basket content"
msgstr ""
@@ -2070,11 +2090,11 @@ msgid "No person in this organization"
msgstr ""
#: templates/ishtar/sheet_organization.html:38
-msgid "General contractor organization of archaelogical files"
+msgid "General contractor organization of archaeological files"
msgstr ""
#: templates/ishtar/sheet_organization.html:43
-msgid "Town planning service of archaelogical files"
+msgid "Planning service of archaeological files"
msgstr ""
#: templates/ishtar/sheet_person.html:21
@@ -2105,15 +2125,18 @@ msgid "Associated operations as responsible"
msgstr ""
#: templates/ishtar/sheet_person.html:80
-msgid "In charge of archaelogical files"
+#: templates/ishtar/wizard/wizard_person_deletion.html:6
+msgid "In charge of archaeological files"
msgstr ""
#: templates/ishtar/sheet_person.html:85
-msgid "General contractor of archaelogical files"
+#: templates/ishtar/wizard/wizard_person_deletion.html:14
+msgid "General contractor of archaeological files"
msgstr ""
#: templates/ishtar/sheet_person.html:90
-msgid "Responsible for town planning service of archaelogical files"
+#: templates/ishtar/wizard/wizard_person_deletion.html:22
+msgid "Responsible for planning service of archaeological files"
msgstr ""
#: templates/ishtar/sheet_person.html:96
@@ -2185,8 +2208,8 @@ msgstr ""
#: templates/ishtar/blocks/window_nav.html:17
msgid ""
-"Are you sure to restore to this version? All changement made since this "
-"version will be lost."
+"Are you sure to restore to this version? All changes made since this version "
+"will be lost."
msgstr ""
#: templates/ishtar/blocks/window_nav.html:22
@@ -2316,7 +2339,7 @@ msgstr ""
msgid "Would you like to save them?"
msgstr ""
-#: templates/ishtar/wizard/default_wizard.html:36
+#: templates/ishtar/wizard/default_wizard.html:37
#: templates/ishtar/wizard/parcels_wizard.html:24
#: templates/ishtar/wizard/relations_wizard.html:23
#: templates/ishtar/wizard/search.html:20
@@ -2324,9 +2347,10 @@ msgstr ""
msgid "Add/Modify"
msgstr ""
-#: templates/ishtar/wizard/default_wizard.html:58
+#: templates/ishtar/wizard/default_wizard.html:59
msgid ""
-"The form has changed if you don't validate it all your changes will be lost."
+"The form has changed. If you don't validate it, all your changes will be "
+"lost."
msgstr ""
#: templates/ishtar/wizard/parcels_wizard.html:12
@@ -2385,18 +2409,6 @@ msgstr ""
msgid "Adminact: operator of archaeological operations"
msgstr ""
-#: templates/ishtar/wizard/wizard_person_deletion.html:6
-msgid "In charge of archaeological files"
-msgstr ""
-
-#: templates/ishtar/wizard/wizard_person_deletion.html:14
-msgid "General contractor of archaeological files"
-msgstr ""
-
-#: templates/ishtar/wizard/wizard_person_deletion.html:22
-msgid "Responsible town planning service of archaeological files"
-msgstr ""
-
#: templates/ishtar/wizard/wizard_person_deletion.html:30
msgid "Scientist in charge of archaeological files"
msgstr ""
diff --git a/ishtar_common/migrations/0011_generate_title.py b/ishtar_common/migrations/0011_generate_title.py
index 3fcb82ee5..d30850cab 100644
--- a/ishtar_common/migrations/0011_generate_title.py
+++ b/ishtar_common/migrations/0011_generate_title.py
@@ -15,6 +15,7 @@ TYPE = (
class Migration(SchemaMigration):
+ no_dry_run = True
def forwards(self, orm):
keys = {}
diff --git a/ishtar_common/migrations/0015_remove_ishtar_local_prefix.py b/ishtar_common/migrations/0015_remove_ishtar_local_prefix.py
index 67624b039..38532daee 100644
--- a/ishtar_common/migrations/0015_remove_ishtar_local_prefix.py
+++ b/ishtar_common/migrations/0015_remove_ishtar_local_prefix.py
@@ -6,6 +6,7 @@ from django.db import models
class Migration(SchemaMigration):
+ no_dry_run = True
def forwards(self, orm):
if not db.dry_run:
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 72a3432f8..ccb817adc 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -25,6 +25,7 @@ import copy
import datetime
from PIL import Image
from importlib import import_module
+import logging
import os
import re
import shutil
@@ -65,6 +66,9 @@ from ishtar_common.data_importer import Importer, ImportFormater, \
TypeFormater, YearFormater, StrToBoolean, FileFormater
+logger = logging.getLogger(__name__)
+
+
def post_save_user(sender, **kwargs):
user = kwargs['instance']
try:
@@ -95,6 +99,7 @@ class Imported(models.Model):
class ValueGetter(object):
_prefix = ""
GET_VALUES_EXTRA = []
+ EXTRA_FULL_FIELDS_LABELS = {}
def get_values(self, prefix=''):
if not prefix:
@@ -249,9 +254,10 @@ class OwnPerms:
query = cls.get_query_owns(user)
if not query and not replace_query:
return cls.objects.filter(pk__isnull=True)
- q = cls.objects.filter(query)
+ if query:
+ q = cls.objects.filter(query)
if replace_query:
- q = cls.objects.filter(**replace_query)
+ q = cls.objects.filter(replace_query)
if limit:
items += list(q.order_by('-pk')[:limit])
else:
@@ -408,10 +414,12 @@ class GeneralType(Cached, models.Model):
new_vals = []
if not initial:
return []
+ if type(initial) not in (list, tuple):
+ initial = [initial]
for value in initial:
try:
pk = int(value)
- except ValueError:
+ except (ValueError, TypeError):
continue
if pk in type_pks:
continue
@@ -442,6 +450,7 @@ class GeneralType(Cached, models.Model):
keys = ['__get_types']
keys += [u"{}".format(ex) for ex in exclude] + [
empty_first and 'empty_first' or ''] + [u"{}".format(default)]
+ keys += [u'{}-{}'.format(unicode(k), dct[k]) for k in dct]
cache_key, value = get_cache(cls, keys)
if value and not force:
return value
@@ -480,7 +489,10 @@ class GeneralType(Cached, models.Model):
pass
items = cls.objects.filter(**dct)
if default and default != "None":
- exclude.append(default.txt_idx)
+ if hasattr(default, 'txt_idx'):
+ exclude.append(default.txt_idx)
+ else:
+ exclude.append(default)
if exclude:
items = items.exclude(txt_idx__in=exclude)
for item in items.order_by(*cls._meta.ordering).all():
@@ -659,7 +671,7 @@ class ImageModel(models.Model):
null=True, max_length=255)
IMAGE_MAX_SIZE = settings.IMAGE_MAX_SIZE
THUMB_MAX_SIZE = settings.THUMB_MAX_SIZE
- IMAGE_PREFIX = '/'
+ IMAGE_PREFIX = ''
class Meta:
abstract = True
@@ -1487,15 +1499,15 @@ class Address(BaseHistorizedItem):
if self.phone:
if lbl:
lbl += u"\n"
- lbl += u"{}{}".format(unicode(_("Tel: ")), self.phone)
+ lbl += u"{} {}".format(unicode(_("Tel: ")), self.phone)
if self.mobile_phone:
if lbl:
lbl += u"\n"
- lbl += u"{}{}".format(unicode(_("Mobile: ")), self.mobile_phone)
+ lbl += u"{} {}".format(unicode(_("Mobile: ")), self.mobile_phone)
if self.email:
if lbl:
lbl += u"\n"
- lbl += u"{}{}".format(unicode(_("Email: ")), self.email)
+ lbl += u"{} {}".format(unicode(_("Email: ")), self.email)
return lbl
@@ -1607,7 +1619,7 @@ def get_importer_models():
('archaeological_context_records.models.RecordRelations',
_(u"Context record relations"))] + MODELS
MODELS = [('archaeological_finds.models.BaseFind',
- _(u"Finds")), ] + MODELS
+ _(u"Base finds")), ] + MODELS
return MODELS
@@ -1995,7 +2007,9 @@ TARGET_MODELS = [
('archaeological_operations.models.OperationType', _(u"Operation type")),
('archaeological_operations.models.Period', _(u"Period")),
('archaeological_operations.models.ReportState', _(u"Report state")),
+ ('archaeological_operations.models.RemainType', _(u"Remain type")),
('archaeological_context_records.models.Unit', _(u"Unit")),
+ ('archaeological_context_records.models.ActivityType', _(u"Activity type")),
('archaeological_finds.models.MaterialType', _(u"Material")),
('archaeological_finds.models.ConservatoryState',
_(u"Conservatory state")),
@@ -2077,7 +2091,9 @@ class FormaterType(models.Model):
kwargs['many_split'] = self.many_split
if self.formater_type == 'TypeFormater':
if self.options not in TARGET_MODELS_KEYS:
- print('%s not in TARGET_MODELS_KEYS' % self.options)
+ logger.warning(
+ "**WARN FormaterType.get_formater_type**: {} "
+ "is not in TARGET_MODELS_KEYS".format(self.options))
return
model = None
if self.options in dir():
@@ -2630,7 +2646,6 @@ class IshtarUser(User):
surname = user.first_name or default
name = user.last_name or default
email = user.email
- person_type = None
if user.is_superuser:
ADMINISTRATOR, created = PersonType.objects.get_or_create(
txt_idx='administrator')
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index 8abf23289..b5f4f1a79 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -102,6 +102,18 @@ function init_shortcut_fields(){
load_shortcut_menu
);
});
+ $("#current_treatment").change(function(){
+ $.post('/' + url_path + 'update-current-item/',
+ {item:'treatment', value:$("#current_treatment").val()},
+ load_shortcut_menu
+ );
+ });
+ $("#current_treatmentfile").change(function(){
+ $.post('/' + url_path + 'update-current-item/',
+ {item:'treatmentfile', value:$("#current_treatmentfile").val()},
+ load_shortcut_menu
+ );
+ });
}
function init_advanced_shortcut_fields(){
diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css
index 00fed380d..b1939eaf0 100644
--- a/ishtar_common/static/media/style.css
+++ b/ishtar_common/static/media/style.css
@@ -60,6 +60,10 @@ a.add-button,
color:#000;
}
+#context_menu .blue {
+ color:#00a8ff;
+}
+
.chosen-container,
#context_menu .green,
#context_menu .red,
@@ -272,7 +276,9 @@ button.ui-widget-header:hover {
.chosen-container-single .chosen-single{
background: none;
background-color: #fff;
- border-radius:4px;
+ border-radius: 0;
+ box-shadow: none;
+ border: 1px solid #fff;
}
textarea,
@@ -847,6 +853,11 @@ ul.form .help_text{
.autocomplete{
width:350px;
+ font-size: 13px;
+}
+
+#current_items .autocomplete{
+ width:400px;
}
.delete td{
diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html
index 7101ed7de..dcd3043ca 100644
--- a/ishtar_common/templates/base.html
+++ b/ishtar_common/templates/base.html
@@ -38,8 +38,8 @@
var get_find_url = '{% url "get-find-shortcut" %}';
var activate_all_search_url = '{% url "activate-all-search" %}';
var activate_own_search_url = '{% url "activate-own-search" %}';
- var activate_all_search_msg = "{% trans 'Searches in the shortcut menu deals with all items.' %}";
- var activate_own_search_msg = "{% trans 'Searches in the shortcut menu deals with only your items.' %}";
+ var activate_all_search_msg = "{% trans 'Searches in the shortcut menu deal with all items.' %}";
+ var activate_own_search_msg = "{% trans 'Searches in the shortcut menu deal with only your items.' %}";
</script>
</head>
<body{% if current_theme%} id='{{current_theme}}'{%endif%}>
diff --git a/ishtar_common/templates/ishtar/blocks/window_nav.html b/ishtar_common/templates/ishtar/blocks/window_nav.html
index 4ce316217..3c52063f4 100644
--- a/ishtar_common/templates/ishtar/blocks/window_nav.html
+++ b/ishtar_common/templates/ishtar/blocks/window_nav.html
@@ -14,7 +14,7 @@
<span class='history-nav'> </span>
{% endif %}
{% if next %}
- <a class='history-nav' title="{% trans 'Restore this version' %}" href="#" onclick='if(confirm("{%trans 'Are you sure to restore to this version? All changement made since this version will be lost.' %}")){load_url("{% url revert_url item.pk item.history_date|date:"c"%}");closeAllWindows();load_window("{% url show_url item.pk None %}");}'>
+ <a class='history-nav' title="{% trans 'Restore this version' %}" href="#" onclick='if(confirm("{%trans 'Are you sure to restore to this version? All changes made since this version will be lost.' %}")){load_url("{% url revert_url item.pk item.history_date|date:"c"%}");closeAllWindows();load_window("{% url show_url item.pk None %}");}'>
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-history fa-stack-1x fa-inverse"></i>
diff --git a/ishtar_common/templates/ishtar/manage_basket.html b/ishtar_common/templates/ishtar/manage_basket.html
index 64793c46d..de17f3ad7 100644
--- a/ishtar_common/templates/ishtar/manage_basket.html
+++ b/ishtar_common/templates/ishtar/manage_basket.html
@@ -4,7 +4,10 @@
<h2>{{page_name}}{% trans ":"%} {{basket}}</h2>
<form enctype="multipart/form-data" action="." method="post">{% csrf_token %}
<div class='form'>
-<p class='alert'><i class="fa fa-exclamation-triangle" aria-hidden="true"></i> {% trans 'Checking "Select all" only select the current page.' %}</p>
+<p class='alert'>
+ <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
+ {% trans 'Checking "Select all" only selects the current page.' %}
+</p>
{{form}}
<button id='add_to' onclick='return false'>{% trans "Add" %}</button>
<h3>{% trans "Basket content" %}</h3>
diff --git a/ishtar_common/templates/ishtar/sheet_organization.html b/ishtar_common/templates/ishtar/sheet_organization.html
index 8a47c35f5..1f4bd77b7 100644
--- a/ishtar_common/templates/ishtar/sheet_organization.html
+++ b/ishtar_common/templates/ishtar/sheet_organization.html
@@ -35,12 +35,12 @@
{% endfor %}
</table>
-{% trans "General contractor organization of archaelogical files" as af %}
+{% trans "General contractor organization of archaeological files" as af %}
{% if item.general_contractor_files.count %}
{% dynamic_table_document af 'files' 'corporation_general_contractor' item.pk '' output %}
{% endif %}
-{% trans "Town planning service of archaelogical files" as af %}
+{% trans "Planning service of archaeological files" as af %}
{% if item.planning_service_files.count %}
{% dynamic_table_document af 'files' 'planning_service' item.pk '' output %}
{% endif %}
diff --git a/ishtar_common/templates/ishtar/sheet_person.html b/ishtar_common/templates/ishtar/sheet_person.html
index c84c56996..bcf39c363 100644
--- a/ishtar_common/templates/ishtar/sheet_person.html
+++ b/ishtar_common/templates/ishtar/sheet_person.html
@@ -77,17 +77,17 @@
{% dynamic_table_document ao 'operations' 'in_charge' item.pk '' output %}
{% endif %}
-{% trans "In charge of archaelogical files" as af %}
+{% trans "In charge of archaeological files" as af %}
{% if item.file_responsability.count %}
{% dynamic_table_document af 'files' 'in_charge' item.pk '' output %}
{% endif %}
-{% trans "General contractor of archaelogical files" as af %}
+{% trans "General contractor of archaeological files" as af %}
{% if item.general_contractor_files.count %}
{% dynamic_table_document af 'files' 'general_contractor' item.pk '' output %}
{% endif %}
-{% trans "Responsible for town planning service of archaelogical files" as af %}
+{% trans "Responsible for planning service of archaeological files" as af %}
{% if item.responsible_town_planning_service_files.count %}
{% dynamic_table_document af 'files' 'responsible_town_planning_service' item.pk '' output %}
{% endif %}
diff --git a/ishtar_common/templates/ishtar/wizard/confirm_wizard.html b/ishtar_common/templates/ishtar/wizard/confirm_wizard.html
index 9007c867c..1fbaadcd1 100644
--- a/ishtar_common/templates/ishtar/wizard/confirm_wizard.html
+++ b/ishtar_common/templates/ishtar/wizard/confirm_wizard.html
@@ -6,9 +6,9 @@
<form action="." method="post">{% csrf_token %}
<ul id='form_path'>
{% for step in previous_steps %}
- <li><button name="form_prev_step" value="{{forloop.counter0}}">{{step.form_label}}</button></li>
+ <li><button name="form_prev_step" value="{{forloop.counter0}}">{{step}}</button></li>
{% endfor %}
- <li class='current'><a href='#'>{{current_step.form_label}}</a></li>
+ <li class='current'><a href='#'>{{current_step_label}}</a></li>
</ul>
</form>
<form action="." method="post">{% csrf_token %}
diff --git a/ishtar_common/templates/ishtar/wizard/default_wizard.html b/ishtar_common/templates/ishtar/wizard/default_wizard.html
index 6491b7a0f..fad1895bd 100644
--- a/ishtar_common/templates/ishtar/wizard/default_wizard.html
+++ b/ishtar_common/templates/ishtar/wizard/default_wizard.html
@@ -10,11 +10,11 @@
<form action="." method="post">{% csrf_token %}
<ul id='form_path'>
{% for step in previous_steps %}
- <li><button class='change_step' name="form_prev_step" value="{{forloop.counter0}}">{{step.form_label}}</button></li>
+ <li><button class='change_step' name="form_prev_step" value="{{forloop.counter0}}">{{step}}</button></li>
{% endfor %}
- <li class='current'><a href='#'>{{current_step.form_label}}</a></li>
+ <li class='current'><a href='#'>{{current_step_label}}</a></li>
{% for step in next_steps %}
- <li><button class='change_step' name="form_prev_step" value="{{forloop.counter|add:previous_step_counter}}">{{step.form_label}}</button></li>
+ <li><button class='change_step' name="form_prev_step" value="{{forloop.counter|add:previous_step_counter}}">{{step}}</button></li>
{% endfor %}
</ul>
</form>
@@ -24,6 +24,7 @@
<div class='form'>
{{ wizard.form.media }}
{{ wizard.management_form }}
+{% block form_head %}{% endblock %}
{% block form_detail %}
{% if wizard.form.forms %}
{{ wizard.form.management_form }}
@@ -55,7 +56,7 @@ $(document).ready(function(){
$('form :input').change(function(){form_changed=true;});
$('.change_step').click(function(){
if(!form_changed ||
- confirm("{% trans "The form has changed if you don't validate it all your changes will be lost." %}")){
+ confirm("{% trans "The form has changed. If you don't validate it, all your changes will be lost." %}")){
return true;
}
return false;
diff --git a/ishtar_common/templates/ishtar/wizard/wizard_person_deletion.html b/ishtar_common/templates/ishtar/wizard/wizard_person_deletion.html
index 03b941c60..86286fad0 100644
--- a/ishtar_common/templates/ishtar/wizard/wizard_person_deletion.html
+++ b/ishtar_common/templates/ishtar/wizard/wizard_person_deletion.html
@@ -19,7 +19,7 @@
{% endif %}
{% if current_object.responsible_town_planning_service.count %}
-<h3>{% trans "Responsible town planning service of archaeological files" %}</h3>
+<h3>{% trans "Responsible for planning service of archaeological files" %}</h3>
<ul class='list'>
{% for file in current_object.responsible_town_planning_service.all %}
<li>{{file}} <a class='display_details_inline' href="#" onclick='load_window("{%url show-file file.pk ''%}")'><i class="fa fa-info-circle" aria-hidden="true"></i></a></li>{% endfor %}
diff --git a/ishtar_common/templates/sheet_ope.html b/ishtar_common/templates/sheet_ope.html
index 28390af45..1e18e8b7e 100644
--- a/ishtar_common/templates/sheet_ope.html
+++ b/ishtar_common/templates/sheet_ope.html
@@ -33,7 +33,7 @@
<p><label>{%trans "Related file:"%}</label> <span class='value'><a href='{% url show-file item.related_file.pk ''%}'>{{ item.related_file }}</a></span></p><!-- Displayed as Year/index/Commune/Common_name This should be a link to the file sheet of the related file -->
{% if item.related_file.is_preventive %}
{% if item.operator_reference_code %}<p><label>{%trans "Operator's reference code:"%}</label> <span class='value'>{{ item.operator_reference_code }}</span></p>{% endif %}
-{% if item.related_file.town_planning_service %}<p><label>{%trans "Town planning service:"%}</label> <span class='value'>{{ item.related_file.town_planning_service }}</span></p>{% endif %}
+{% if item.related_file.town_planning_service %}<p><label>{%trans "Planning service:"%}</label> <span class='value'>{{ item.related_file.town_planning_service }}</span></p>{% endif %}
{% if item.related_file.permit_type %}<p><label>{%trans "Permit type:"%}</label> <span class='value'>{{ item.related_file.permit_type }}</span></p>{% endif %}
{% if item.related_file.permit_reference %}<p><label>{%trans "Permit reference:"%}</label> <span class='value'>{{ item.related_file.permit_reference }}</span></p>{% endif %}
{% if item.related_file.general_contractor.attached_to %}<p><label>{%trans "General contractor organisation:"%}</label> <span class='value'>{{ item.related_file.general_contractor.attached_to }}</span></p>{% endif %} <!-- Contractor's organisation displayed as concat of Name/Adress/postal_code/city -->
diff --git a/ishtar_common/templatetags/window_tables.py b/ishtar_common/templatetags/window_tables.py
index acb3d4a0a..05592557a 100644
--- a/ishtar_common/templatetags/window_tables.py
+++ b/ishtar_common/templatetags/window_tables.py
@@ -15,9 +15,11 @@ from ishtar_common.widgets import JQueryJqGrid
from archaeological_files.models import File
from archaeological_operations.models import OperationSource, Operation
from archaeological_context_records.models import ContextRecord, \
- ContextRecordSource, RecordRelations as CRRecordRelations
+ ContextRecordSource, RecordRelationView, \
+ RecordRelations as CRRecordRelations
from archaeological_finds.models import Find, FindSource, \
- FindUpstreamTreatments, FindDownstreamTreatments
+ FindUpstreamTreatments, FindDownstreamTreatments, FindTreatments
+from archaeological_warehouse.models import Container
register = template.Library()
@@ -40,27 +42,37 @@ ASSOCIATED_MODELS['context_records_docs'] = (
ContextRecordSource,
'get-contextrecordsource', 'get-contextrecordsource-full')
ASSOCIATED_MODELS['context_records_relations'] = (
- CRRecordRelations, 'get-contextrecordrelation', '')
+ RecordRelationView, 'get-contextrecordrelation', '')
+ASSOCIATED_MODELS['context_records_relations_detail'] = (
+ CRRecordRelations, 'get-contextrecordrelationdetail', '')
ASSOCIATED_MODELS['finds'] = (Find, 'get-find', 'get-find-full')
ASSOCIATED_MODELS['finds_for_ope'] = (
Find, 'get-find-for-ope', 'get-find-full')
+ASSOCIATED_MODELS['finds_for_treatment'] = (
+ Find, 'get-find-for-treatment', 'get-find-full')
ASSOCIATED_MODELS['finds_docs'] = (
FindSource, 'get-findsource', 'get-findsource-full')
ASSOCIATED_MODELS['finds_upstreamtreatments'] = (
FindUpstreamTreatments, 'get-upstreamtreatment', '')
ASSOCIATED_MODELS['finds_downstreamtreatments'] = (
FindDownstreamTreatments, 'get-downstreamtreatment', '')
+ASSOCIATED_MODELS['treatments'] = (
+ FindTreatments, 'get-treatment', '')
+ASSOCIATED_MODELS['containers'] = (
+ Container, 'get-container', '')
@register.simple_tag(takes_context=True)
def dynamic_table_document(
context, caption, associated_model, key, value,
- table_cols='TABLE_COLS', output='html', large=False):
+ table_cols='TABLE_COLS', output='html', large=False,
+ col_prefix=''):
if not table_cols:
table_cols = 'TABLE_COLS'
model, url, url_full = ASSOCIATED_MODELS[associated_model]
- grid = JQueryJqGrid(None, None, model, table_cols=table_cols)
+ grid = JQueryJqGrid(None, None, model, table_cols=table_cols,
+ col_prefix=col_prefix)
source = unicode(reverse_lazy(url))
source_full = unicode(reverse_lazy(url_full)) if url_full else ''
source_attrs = mark_safe('?submited=1&{}={}'.format(key, value))
@@ -69,7 +81,7 @@ def dynamic_table_document(
t = get_template('ishtar/blocks/window_tables/dynamic_documents.html')
context = template.Context({
'caption': caption,
- 'name': slugify(caption) + '{}'.format(int(time.time())),
+ 'name': '{}{}{}'.format(slugify(caption), key, int(time.time())),
'source': source + source_attrs,
'source_full': source_full,
'simple_source': source,
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 0c4bbda08..6db425cab 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -29,6 +29,7 @@ from django.core.urlresolvers import reverse
from django.template.defaultfilters import slugify
from django.test import TestCase
from django.test.client import Client
+from django.test.simple import DjangoTestSuiteRunner
from ishtar_common import models
@@ -75,6 +76,55 @@ def create_user():
return username, password, user
+class WizardTestFormData(object):
+ """
+ Test set to simulate wizard steps
+ """
+ def __init__(self, name, form_datas, ignored=[], extra_tests=[]):
+ """
+ :param name: explicit name of the test
+ :param form_datas: dict with data for each step - dict key are wizard
+ step name
+ :param ignored: steps to be ignored in wizard processing
+ :param extra_tests: list of extra tests. Theses tests must be functions
+ accepting two parameters: the current test object and the final step
+ response
+ """
+ self.form_datas = form_datas
+ self.ignored = ignored[:]
+ self.extra_tests = extra_tests
+
+ def tests(self, test_object, final_step_response):
+ """
+ Specific tests for theses datas. Raise Exception if not OK.
+ """
+ for test in self.extra_tests:
+ test(test_object, final_step_response)
+
+
+class ManagedModelTestRunner(DjangoTestSuiteRunner):
+ """
+ Test runner that automatically makes all unmanaged models in your Django
+ project managed for the duration of the test run, so that one doesn't need
+ to execute the SQL manually to create them.
+ """
+ def setup_test_environment(self, *args, **kwargs):
+ from django.db.models.loading import get_models
+ self.unmanaged_models = [m for m in get_models()
+ if not m._meta.managed]
+ for m in self.unmanaged_models:
+ m._meta.managed = True
+ super(ManagedModelTestRunner, self).setup_test_environment(*args,
+ **kwargs)
+
+ def teardown_test_environment(self, *args, **kwargs):
+ super(ManagedModelTestRunner, self).teardown_test_environment(*args,
+ **kwargs)
+ # reset unmanaged models
+ for m in self.unmanaged_models:
+ m._meta.managed = False
+
+
class WizardTest(object):
url_name = None
wizard_name = ''
@@ -92,10 +142,29 @@ class WizardTest(object):
def post_wizard(self):
pass
+ def pass_test(self):
+ return False
+
+ def check_response(self, response, current_step):
+ if "errorlist" in response.content:
+ soup = Soup(response.content)
+ errorlist = soup.findAll(
+ "ul", {"class": "errorlist"})
+ errors = []
+ for li in errorlist:
+ lbl = li.findParent().findParent().findChild().text
+ errors.append(u"{} - {}".format(lbl, li.text))
+ raise ValidationError(u"Errors: {} on {}.".format(
+ u" ".join(errors), current_step))
+
def test_wizard(self):
+ if self.pass_test():
+ return
url = reverse(self.url_name)
self.pre_wizard()
- for form_data, ignored in self.form_datas:
+ for test_form_data in self.form_datas:
+ form_data = test_form_data.form_datas
+ ignored = test_form_data.ignored
for idx, step in enumerate(self.steps):
current_step, current_form = step
if current_step in ignored:
@@ -116,28 +185,22 @@ class WizardTest(object):
next_form = self.steps[idx + 1][0]
break
next_idx = next_idx + 1
-
if next_form:
try:
response = self.client.post(url, data)
except ValidationError as e:
+ # on ManagementForm data is missing or has been tampered
+ # error verify the wizard_name or step name
raise ValidationError(u"Errors: {} on {}.".format(
u" - ".join(e.messages), current_step))
- if "errorlist" in response.content:
- soup = Soup(response.content)
- errorlist = soup.findAll(
- "ul", {"class": "errorlist"})
- errors = []
- for li in errorlist:
- lbl = li.findParent().findParent().findChild().text
- errors.append(u"{} - {}".format(lbl, li.text))
- raise ValidationError(u"Errors: {} on {}.".format(
- u" ".join(errors), current_step))
+ self.check_response(response, current_step)
self.assertRedirects(
response,
'/{}/{}'.format(self.url_name, next_form))
else:
response = self.client.post(url, data, follow=True)
+ self.check_response(response, current_step)
+ test_form_data.tests(self, response)
self.post_wizard()
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index 44112bca3..9b3c85694 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -60,11 +60,18 @@ def cached_label_changed(sender, **kwargs):
and instance._cached_label_checked:
return
instance._cached_label_checked = True
- lbl = instance._generate_cached_label()
- if lbl != instance.cached_label:
+ cached_labels = ['cached_label']
+ if hasattr(sender, 'CACHED_LABELS'):
+ cached_labels = sender.CACHED_LABELS
+ changed = False
+ for cached_label in cached_labels:
+ lbl = getattr(instance, '_generate_' + cached_label)()
+ if lbl != getattr(instance, cached_label):
+ setattr(instance, cached_label, lbl)
+ changed = True
+ if changed:
if hasattr(instance, '_cascade_change') and instance._cascade_change:
instance.skip_history_when_saving = True
- instance.cached_label = lbl
instance.save()
if hasattr(instance, '_get_associated_cached_labels'):
for item in instance._get_associated_cached_labels():
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index cd34a2019..d827ae065 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -58,7 +58,7 @@ from menus import menu
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
+from archaeological_finds.models import Find, Treatment, TreatmentFile
from archaeological_operations.forms import DashboardForm as DashboardFormOpe
from archaeological_files.forms import DashboardForm as DashboardFormFile
@@ -239,6 +239,9 @@ def shortcut_menu(request):
CURRENT_ITEMS.append((_(u"Context record"), ContextRecord))
if profile.find:
CURRENT_ITEMS.append((_(u"Find"), Find))
+ if profile.warehouse:
+ CURRENT_ITEMS.append((_(u"Treatment request"), TreatmentFile))
+ CURRENT_ITEMS.append((_(u"Treatment"), Treatment))
if hasattr(request.user, 'ishtaruser') and \
request.user.ishtaruser.advanced_shortcut_menu:
dct = {'current_menu': [], 'menu': [],
@@ -261,7 +264,7 @@ def shortcut_menu(request):
'ishtar/blocks/advanced_shortcut_menu.html',
dct, context_instance=RequestContext(request))
dct = {'current_menu': []}
- current_selected_item = None
+ current_selected_item = {}
for lbl, model in CURRENT_ITEMS:
new_selected_item = None
model_name = model.SLUG
@@ -291,7 +294,8 @@ def shortcut_menu(request):
pass
if items:
dct['current_menu'].append((lbl, model_name, cls, items))
- current_selected_item = new_selected_item
+ if new_selected_item:
+ current_selected_item[model_name] = new_selected_item
return render_to_response('ishtar/blocks/shortcut_menu.html', dct,
context_instance=RequestContext(request))
@@ -301,7 +305,9 @@ def get_current_items(request):
for key, model in (('file', File),
('operation', Operation),
('contextrecord', ContextRecord),
- ('find', Find)):
+ ('find', Find),
+ ('treatmentfile', TreatmentFile),
+ ('treatment', Treatment)):
currents[key] = None
if key in request.session and request.session[key]:
try:
@@ -312,6 +318,16 @@ def get_current_items(request):
def unpin(request, item_type):
+ if item_type not in ('find', 'contextrecord', 'operation', 'file',
+ 'treatment', 'treatmentfile'):
+ logger.warning("unpin unknow type: {}".format(item_type))
+ return HttpResponse('nok')
+ request.session['treatment'] = ''
+ if item_type == 'treatment':
+ return HttpResponse('ok')
+ request.session['treatmentfile'] = ''
+ if item_type == 'treatmentfile':
+ return HttpResponse('ok')
request.session['find'] = ''
if item_type == 'find':
return HttpResponse('ok')
@@ -322,7 +338,8 @@ def unpin(request, item_type):
if item_type == 'operation':
return HttpResponse('ok')
request.session['file'] = ''
- return HttpResponse('ok')
+ if item_type == 'file':
+ return HttpResponse('ok')
def update_current_item(request, item_type=None, pk=None):
@@ -462,9 +479,8 @@ def autocomplete_town(request):
for q in q.split(' '):
extra = Q(name__icontains=q)
if settings.COUNTRY == 'fr':
- extra = (extra | Q(numero_insee__istartswith=q) |
- Q(departement__label__istartswith=q))
- query = query & extra
+ extra |= Q(numero_insee__istartswith=q)
+ query &= extra
limit = 20
towns = models.Town.objects.filter(query)[:limit]
data = json.dumps([{'id': town.pk, 'value': unicode(town)}
@@ -528,7 +544,7 @@ HIERARCHIC_FIELDS = ['periods', 'period', 'unit', 'material_types',
def get_item(model, func_name, default_name, extra_request_keys=[],
- base_request={}, bool_fields=[], reversed_bool_fields=[],
+ base_request=None, bool_fields=[], reversed_bool_fields=[],
dated_fields=[], associated_models=[], relative_session_names=[],
specific_perms=[], own_table_cols=None, relation_types_prefix={}):
"""
@@ -577,10 +593,12 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
my_extra_request_keys = copy(model.EXTRA_REQUEST_KEYS)
else:
my_extra_request_keys = copy(extra_request_keys)
- if not base_request and hasattr(model, 'BASE_REQUEST'):
+ if base_request is None and hasattr(model, 'BASE_REQUEST'):
my_base_request = copy(model.BASE_REQUEST)
- else:
+ elif base_request is not None:
my_base_request = copy(base_request)
+ else:
+ my_base_request = {}
if not bool_fields and hasattr(model, 'BOOL_FIELDS'):
my_bool_fields = model.BOOL_FIELDS[:]
else:
@@ -677,7 +695,7 @@ 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 dct == base_request:
+ elif dct == (base_request or {}):
# a parent item may be selected in the default menu
for name, key in my_relative_session_names:
if name in request.session and request.session[name]:
@@ -750,7 +768,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
alt_dct = dct.copy()
alt_dct.pop(k)
alt_dct.update(or_req)
- query = query | Q(**alt_dct)
+ query |= Q(**alt_dct)
for rtype_prefix in relation_types:
vals = list(relation_types[rtype_prefix])
@@ -775,8 +793,8 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
if not dct:
# fake condition to trick Django (1.4): without it only the
# alt_dct is managed
- query = query & Q(pk__isnull=False)
- query = query | Q(**alt_dct)
+ query &= Q(pk__isnull=False)
+ query |= Q(**alt_dct)
for k, or_req in or_reqs:
altor_dct = alt_dct.copy()
altor_dct.pop(k)
@@ -787,7 +805,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
altor_dct[
rtype_prefix + 'right_relations__right_record__' + j] =\
val
- query = query | Q(**altor_dct)
+ query |= Q(**altor_dct)
if own:
query = query & model.get_query_owns(request.user)
@@ -809,7 +827,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
and request.session[model_name]
if current:
dct = {upper_key: current}
- query = query & Q(**dct)
+ query &= Q(**dct)
items = model.objects.filter(query).distinct()
# print(items.query)
@@ -910,6 +928,14 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
keys = [keys]
my_vals = []
for k in keys:
+ if hasattr(model, 'EXTRA_REQUEST_KEYS') \
+ and k in model.EXTRA_REQUEST_KEYS:
+ k = model.EXTRA_REQUEST_KEYS[k]
+ if type(k) in (list, tuple):
+ k = k[0]
+ for filtr in ('__icontains', '__contains'):
+ if k.endswith(filtr):
+ k = k[:len(k) - len(filtr)]
vals = [item]
# foreign key may be divided by "." or "__"
splitted_k = []
@@ -929,10 +955,14 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
v = v()
new_vals.append(v)
elif val:
- val = getattr(val, ky)
- if callable(val):
- val = val()
- new_vals.append(val)
+ try:
+ val = getattr(val, ky)
+ if callable(val):
+ val = val()
+ new_vals.append(val)
+ except AttributeError:
+ # must be a query key such as "contains"
+ pass
vals = new_vals
# manage last related objects
if vals and hasattr(vals[0], 'all'):
@@ -981,8 +1011,8 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
lnk = link_template % reverse('show-' + default_name,
args=[data[0], ''])
except NoReverseMatch:
- print(
- '"show-' + default_name + "\" args ("
+ logger.warning(
+ '**WARN "show-' + default_name + '" args ('
+ unicode(data[0]) + ") url not available")
lnk = ''
res = {'id': data[0], 'link': lnk}
@@ -995,9 +1025,9 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
# foreign key may be divided by "." or "__"
for tc in table_col:
if '.' in tc:
- tab_cols.append(tc.split('.')[-1])
+ tab_cols += tc.split('.')
elif '__' in tc:
- tab_cols.append(tc.split('__')[-1])
+ tab_cols += tc.split('__')
else:
tab_cols.append(tc)
k = "__".join(tab_cols)
@@ -1027,6 +1057,8 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
writer = csv.writer(response, **CSV_OPTIONS)
col_names = []
for field_name in table_cols:
+ if type(field_name) in (list, tuple):
+ field_name = " ; ".join(field_name)
if hasattr(model, 'EXTRA_FULL_FIELDS_LABELS') and\
field_name in model.EXTRA_FULL_FIELDS_LABELS:
field = model.EXTRA_FULL_FIELDS_LABELS[field_name]
@@ -1037,6 +1069,11 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
field = model._meta.get_field(field_name)
except:
col_names.append(u"".encode(ENCODING))
+ logger.warning(
+ "**WARN get_item - csv export**: no col name for "
+ "{}\nadd explicit label to "
+ "EXTRA_FULL_FIELDS_LABELS attribute of "
+ "{}".format(field_name, model))
continue
col_names.append(
unicode(field.verbose_name).encode(ENCODING))
@@ -1111,7 +1148,6 @@ def show_item(model, name, extra_dct=None):
context_instance = RequestContext(request)
context_instance.update(dct)
context_instance['output'] = 'html'
- filename = ""
if hasattr(item, 'history_object'):
filename = item.history_object.associated_filename
else:
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index 1183836bc..ddbfa91bf 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -19,12 +19,15 @@
# See the file COPYING for details.
+import logging
+
from django import forms
from django.conf import settings
-from django.core.urlresolvers import reverse
+from django.core.urlresolvers import reverse, NoReverseMatch
from django.db.models import fields
from django.forms import ClearableFileInput
-from django.forms.widgets import flatatt
+from django.forms.widgets import flatatt, \
+ CheckboxSelectMultiple as CheckboxSelectMultipleBase
from django.template import Context, loader
from django.template.defaultfilters import slugify
from django.utils.encoding import smart_unicode
@@ -36,6 +39,8 @@ from django.utils.translation import ugettext_lazy as _
from ishtar_common import models
+logger = logging.getLogger(__name__)
+
reverse_lazy = lazy(reverse, unicode)
@@ -56,6 +61,20 @@ class Select2Multiple(forms.SelectMultiple):
return super(Select2Multiple, self).render(name, value, attrs,
choices)
+class CheckboxSelectMultiple(CheckboxSelectMultipleBase):
+ """
+ Fix initialization bug.
+ Should be corrected on recent Django version.
+ TODO: test and remove (test case: treatment type not keep on modif)
+ """
+ def render(self, name, value, attrs=None, choices=()):
+ if type(value) in (str, unicode):
+ value = value.split(',')
+ if type(value) not in (list, tuple):
+ value = [value]
+ return super(CheckboxSelectMultiple, self).render(name, value, attrs,
+ choices)
+
class MultipleAutocompleteField(forms.MultipleChoiceField):
def __init__(self, *args, **kwargs):
@@ -322,7 +341,6 @@ class JQueryTown(forms.TextInput):
@classmethod
def encode_source(cls, source):
- encoded_src = ''
if isinstance(source, list):
encoded_src = JSONEncoder().encode(source)
elif isinstance(source, str) \
@@ -515,7 +533,8 @@ class JQueryJqGrid(forms.RadioSelect):
def __init__(self, source, form, associated_model, attrs={},
table_cols='TABLE_COLS', multiple=False, multiple_cols=[2],
new=False, new_message="", source_full=None,
- multiple_select=False, sortname="__default__"):
+ multiple_select=False, sortname="__default__",
+ col_prefix=''):
"""
JQueryJqGrid widget init.
@@ -531,6 +550,7 @@ class JQueryJqGrid(forms.RadioSelect):
:param source_full: url to get full listing
:param multiple_select:
:param sortname: column name (model attribute) to use to sort
+ :param col_prefix: prefix to remove to col_names
"""
super(JQueryJqGrid, self).__init__(attrs=attrs)
self.source = source
@@ -546,13 +566,15 @@ class JQueryJqGrid(forms.RadioSelect):
self.new, self.new_message = new, new_message
self.source_full = source_full
self.sortname = sortname
+ self.col_prefix = col_prefix
+ if self.col_prefix and not self.col_prefix.endswith('__'):
+ self.col_prefix += "__"
def get_cols(self, python=False):
jq_col_names, extra_cols = [], []
col_labels = {}
- if hasattr(self.associated_model, self.table_cols + '_LBL'):
- col_labels = getattr(self.associated_model,
- self.table_cols + '_LBL')
+ if hasattr(self.associated_model, 'COL_LABELS'):
+ col_labels = self.associated_model.COL_LABELS
for col_names in getattr(self.associated_model, self.table_cols):
field_verbose_names = []
field_verbose_name, field_name = "", ""
@@ -563,24 +585,26 @@ class JQueryJqGrid(forms.RadioSelect):
keys = col_name.split('__')
if '.' in col_name:
keys = col_name.split('.')
- f_name = ''
for key in keys:
if hasattr(field, 'rel') and field.rel:
field = field.rel.to
try:
field = field._meta.get_field(key)
field_verbose_name = field.verbose_name
- f_name = field.name
except (fields.FieldDoesNotExist, AttributeError):
if hasattr(field, key + '_lbl'):
- f_name = key
field_verbose_name = getattr(field, key + '_lbl')
else:
continue
if field_name:
field_name += "__"
- field_name += f_name
+ if col_name.startswith(self.col_prefix):
+ field_name += col_name[len(self.col_prefix):]
+ else:
+ field_name += col_name
field_verbose_names.append(unicode(field_verbose_name))
+ if not field_name:
+ field_name = "__".join(col_names)
if field_name in col_labels:
jq_col_names.append(unicode(col_labels[field_name]))
elif col_names and col_names[0] in col_labels:
@@ -618,7 +642,11 @@ class JQueryJqGrid(forms.RadioSelect):
col_idx = col_idx and ", ".join(col_idx) or ""
dct['encoding'] = settings.ENCODING or 'utf-8'
- dct['source'] = unicode(self.source)
+ try:
+ dct['source'] = unicode(self.source)
+ except NoReverseMatch:
+ logger.warning('Cannot resolve source for {} widget'.format(
+ self.form))
if unicode(self.source_full) and unicode(self.source_full) != 'None':
dct['source_full'] = unicode(self.source_full)
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index c065459f6..4f0295421 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -18,6 +18,7 @@
# See the file COPYING for details.
import datetime
+import logging
# from functools import wraps
from django.conf import settings
@@ -38,6 +39,8 @@ from django.utils.datastructures import MultiValueDict as BaseMultiValueDict
from django.utils.translation import ugettext_lazy as _
import models
+logger = logging.getLogger(__name__)
+
class MultiValueDict(BaseMultiValueDict):
def get(self, *args, **kwargs):
@@ -124,8 +127,12 @@ class Wizard(NamedUrlWizardView):
wizard_templates = {}
filter_owns = {}
current_obj_slug = ''
+ current_object_key = 'pk'
+ ignore_init_steps = []
file_storage = default_storage
+ saved_args = {} # argument to pass on object save
+
'''
# buggy and unecessary...
def __init__(self, *args, **kwargs):
@@ -165,6 +172,13 @@ class Wizard(NamedUrlWizardView):
return super(Wizard, self).dispatch(request, *args, **kwargs)
+ def get_form_kwargs(self, step=None):
+ kwargs = super(Wizard, self).get_form_kwargs(step)
+ if hasattr(self.form_list[step], 'need_user_for_initialization') and\
+ self.form_list[step].need_user_for_initialization:
+ kwargs['user'] = self.request.user
+ return kwargs
+
def get_prefix(self, *args, **kwargs):
"""As the class name can interfere when reused prefix with the url_name
"""
@@ -188,13 +202,17 @@ class Wizard(NamedUrlWizardView):
templates = [self.wizard_confirm] + templates
return templates
+ def get_ignore_init_steps(self):
+ return ['{}-{}'.format(step, self.url_name) for step in
+ self.ignore_init_steps]
+
def get_context_data(self, form, **kwargs):
"""Add previous, next and current steps to manage the wizard path"""
context = super(Wizard, self).get_context_data(form)
self.request.session['CURRENT_ACTION'] = self.get_wizard_name()
step = self.steps.first
current_step = self.steps.current
- dct = {'current_step': self.form_list[current_step],
+ dct = {'current_step_label': self.form_list[current_step].form_label,
'wizard_label': self.label,
'current_object': self.get_current_object(),
'is_search': current_step.startswith('selec-')
@@ -209,7 +227,7 @@ class Wizard(NamedUrlWizardView):
or (previous_steps and
previous_steps[-1] == self.form_list[step]):
break
- previous_steps.append(self.form_list[step])
+ previous_steps.append(self.form_list[step].form_label)
previous_step_counter += 1
if previous_step_counter >= len(self.steps):
break
@@ -242,7 +260,8 @@ class Wizard(NamedUrlWizardView):
for key in v:
form_key = next_step + prefix + key
prefixed_values[form_key] = v[key]
- if not prefixed_values:
+ if not prefixed_values and \
+ next_step not in self.get_ignore_init_steps():
# simulate a non empty data for form that might be
# valid when empty
prefixed_values['__non_empty_data'] = ''
@@ -250,7 +269,7 @@ class Wizard(NamedUrlWizardView):
if step == next_step:
current_step_passed = True
elif current_step_passed:
- next_steps.append(self.form_list[next_step])
+ next_steps.append(self.form_list[next_step].form_label)
next_step = self.get_next_step(next_step)
context.update({'next_steps': next_steps})
# not last step: validation
@@ -469,6 +488,8 @@ class Wizard(NamedUrlWizardView):
for k in dct:
if k.startswith('pk'):
continue
+ if k not in obj.__class__._meta.get_all_field_names():
+ continue
# False set to None for images and files
if not k.endswith('_id') and (
isinstance(obj.__class__._meta.get_field(k), FileField) or
@@ -483,9 +504,12 @@ class Wizard(NamedUrlWizardView):
elif type(dct[k]) not in (list, tuple):
dct[k] = [dct[k]]
setattr(obj, k, dct[k])
+ if hasattr(obj, 'pre_save'):
+ obj.pre_save()
try:
obj.full_clean()
- except ValidationError:
+ except ValidationError as e:
+ logger.warning(unicode(e))
return self.render(form_list[-1])
for dependant_item in other_objs:
c_item = getattr(obj, dependant_item)
@@ -543,12 +567,25 @@ class Wizard(NamedUrlWizardView):
dct[dependant_item] = c_item
if 'pk' in dct:
dct.pop('pk')
+ # remove non relevant fields
+ all_field_names = self.get_saved_model()._meta.get_all_field_names()
+ for k in dct.copy():
+ if (k.endswith('_id') and k[:-3] not in all_field_names) and \
+ k not in all_field_names:
+ dct.pop(k)
+ saved_args = self.saved_args.copy()
+ for k in saved_args:
+ if k in dct:
+ saved_args[k] = dct.pop(k)
obj = self.get_saved_model()(**dct)
+ if hasattr(obj, 'pre_save'):
+ obj.pre_save()
try:
obj.full_clean()
- except ValidationError:
+ except ValidationError as e:
+ logger.warning(unicode(e))
return self.render(form_list[-1])
- obj.save()
+ obj.save(**saved_args)
for k in adds:
getattr(obj, k).add(adds[k])
# necessary to manage interaction between models like
@@ -561,6 +598,12 @@ class Wizard(NamedUrlWizardView):
old_m2ms = {}
for model in whole_associated_models:
related_model = getattr(obj, model + 's')
+ # manage through
+ if hasattr(related_model, 'through') and related_model.through:
+ related_set_name = str(
+ related_model.through.__name__ + '_set').lower()
+ if hasattr(obj, related_set_name):
+ related_model = getattr(obj, related_set_name)
# clear real m2m
if hasattr(related_model, 'clear'):
old_m2ms[model] = []
@@ -587,6 +630,9 @@ class Wizard(NamedUrlWizardView):
if value not in m2m_items[key]:
if type(value) == dict:
model = related_model.model
+ if hasattr(related_model, 'through') and \
+ related_model.through:
+ model = related_model.through
# not m2m -> foreign key
if not hasattr(related_model, 'clear'):
assert hasattr(model, 'MAIN_ATTR'), \
@@ -611,8 +657,13 @@ class Wizard(NamedUrlWizardView):
else:
if issubclass(model, models.BaseHistorizedItem):
value['history_modifier'] = self.request.user
- value = model.objects.create(**value)
- value.save()
+ if hasattr(model, 'RELATIVE_MODELS') and \
+ self.get_saved_model() in \
+ model.RELATIVE_MODELS:
+ value[model.RELATIVE_MODELS[
+ self.get_saved_model()]] = obj
+ value, created = model.objects.get_or_create(**value)
+ value.save() # force post_save
# check that an item is not add multiple times (forged forms)
if value not in related_model.all() and\
hasattr(related_model, 'add'):
@@ -626,6 +677,7 @@ class Wizard(NamedUrlWizardView):
self.request.session[self.current_obj_slug] = unicode(obj.pk)
self.request.session[self.get_object_name(obj)] = unicode(obj.pk)
dct = {'item': obj}
+ self.current_object = obj
# force evaluation of lazy urls
wizard_done_window = unicode(self.wizard_done_window)
if wizard_done_window:
@@ -877,7 +929,7 @@ class Wizard(NamedUrlWizardView):
current_obj = None
main_form_key = 'selec-' + self.url_name
try:
- idx = self.session_get_value(main_form_key, 'pk')
+ idx = self.session_get_value(main_form_key, self.current_object_key)
idx = int(idx)
current_obj = self.model.objects.get(pk=idx)
except(TypeError, ValueError, ObjectDoesNotExist):
@@ -980,8 +1032,18 @@ class Wizard(NamedUrlWizardView):
if not hasattr(obj, key):
return initial
keys = c_form.form.base_fields.keys()
- query = getattr(obj, key)
- if not obj._meta.ordering:
+ related = getattr(obj, key)
+ # manage through
+ through = False
+ if hasattr(related, 'through') and related.through:
+ related_set_name = str(
+ related.through.__name__ + '_set').lower()
+ if hasattr(obj, related_set_name):
+ through = True
+ related = getattr(obj, related_set_name)
+
+ query = related
+ if not through and not obj._meta.ordering:
query = query.order_by('pk')
for child_obj in query.all():
if not keys:
diff --git a/translations/de/ishtar_common.po b/translations/de/ishtar_common.po
index 9e764c203..e281d0e4f 100644
--- a/translations/de/ishtar_common.po
+++ b/translations/de/ishtar_common.po
@@ -8,7 +8,7 @@ msgstr ""
"Last-Translator: Valérie-Emma Leroux <emma@iggdrasil.net>\n"
"Language-Team: German (Germany)\n"
"Language: de-DE\n"
-"X-Generator: Zanata 3.9.5\n"
+"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:8
@@ -130,40 +130,40 @@ msgstr ""
msgid "\"%(value)s\" not in %(values)s"
msgstr ""
-#: forms.py:55
+#: forms.py:73
msgid "Enter a valid name consisting of letters, spaces and hyphens."
msgstr ""
-#: forms.py:71 forms_common.py:618
+#: forms.py:89 forms_common.py:618
msgid "Confirm"
msgstr ""
-#: forms.py:76
+#: forms.py:94
msgid "Are you sure you want to delete?"
msgstr ""
-#: forms.py:85
+#: forms.py:103
msgid "There are identical items."
msgstr ""
-#: forms.py:123 forms.py:124
+#: forms.py:141 forms.py:142
msgid "Closing date"
msgstr ""
-#: forms.py:137
+#: forms.py:155
msgid "You should select an item."
msgstr ""
-#: forms.py:138
+#: forms.py:156
msgid "Add a new item"
msgstr ""
-#: forms.py:245 models.py:1310
+#: forms.py:262 models.py:1367
msgid "Template"
msgstr ""
#: forms_common.py:41 forms_common.py:59 forms_common.py:182
-#: forms_common.py:406 models.py:1376 models.py:2758
+#: forms_common.py:406 models.py:1433 models.py:2825
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
@@ -171,16 +171,16 @@ msgstr ""
#: forms_common.py:43
msgid ""
-"<p>Type name, department code and/or postal code of the town you would like "
-"to select. The search is insensitive to case.</p>\n"
+"<p>Type name, department code of the town you would like to select. The "
+"search is insensitive to case.</p>\n"
"<p>Only the first twenty results are displayed but specifying the department "
"code is generally sufficient to get the appropriate result.</p>\n"
"<p class='example'>For instance type \"saint denis 93\" for getting the "
"french town Saint-Denis in the Seine-Saint-Denis department.</p>"
msgstr ""
-#: forms_common.py:68 forms_common.py:855 ishtar_menu.py:47 models.py:1546
-#: models.py:2384 models.py:2566 models.py:2628
+#: forms_common.py:68 forms_common.py:855 ishtar_menu.py:47 models.py:1606
+#: models.py:2452 models.py:2634 models.py:2695
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr ""
@@ -192,63 +192,63 @@ msgid ""
msgstr ""
#: forms_common.py:170 forms_common.py:327 forms_common.py:451
-#: ishtar_menu.py:75 models.py:1547 models.py:2273
+#: ishtar_menu.py:75 models.py:1607 models.py:2338
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr ""
#: forms_common.py:173 forms_common.py:210 forms_common.py:322
-#: forms_common.py:376 forms_common.py:446 models.py:977 models.py:1309
-#: models.py:1592 models.py:1810 models.py:2267 models.py:2370 models.py:2744
+#: forms_common.py:376 forms_common.py:446 models.py:1034 models.py:1366
+#: models.py:1652 models.py:1871 models.py:2332 models.py:2438 models.py:2811
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr ""
-#: forms_common.py:174 models.py:1531 models.py:1941
+#: forms_common.py:174 models.py:1588 models.py:2002
msgid "Organization type"
msgstr ""
-#: forms_common.py:176 forms_common.py:400 models.py:1371
+#: forms_common.py:176 forms_common.py:400 models.py:1428
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr ""
-#: forms_common.py:178 forms_common.py:403 models.py:1372
+#: forms_common.py:178 forms_common.py:403 models.py:1429
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr ""
-#: forms_common.py:180 forms_common.py:404 models.py:1374
+#: forms_common.py:180 forms_common.py:404 models.py:1431
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr ""
-#: forms_common.py:183 forms_common.py:407 models.py:1377
+#: forms_common.py:183 forms_common.py:407 models.py:1434
msgid "Country"
msgstr ""
#: forms_common.py:185 forms_common.py:324 forms_common.py:380
-#: forms_common.py:448 forms_common.py:572 models.py:1404
+#: forms_common.py:448 forms_common.py:572 models.py:1461
msgid "Email"
msgstr ""
-#: forms_common.py:186 forms_common.py:383 models.py:1389
+#: forms_common.py:186 forms_common.py:383 models.py:1446
#: 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:187 forms_common.py:392 models.py:1401
+#: forms_common.py:187 forms_common.py:392 models.py:1458
#: 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:211 forms_common.py:325 forms_common.py:449 models.py:1969
-#: models.py:2269 models.py:2679 templates/sheet_ope.html:85
+#: forms_common.py:211 forms_common.py:325 forms_common.py:449 models.py:2032
+#: models.py:2334 models.py:2746 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
@@ -256,12 +256,12 @@ msgstr ""
msgid "Type"
msgstr ""
-#: forms_common.py:220 views.py:139
+#: forms_common.py:220 views.py:142
msgid "Organization search"
msgstr ""
#: forms_common.py:244
-msgid "At leat two items have to be selected."
+msgid "At least two items have to be selected."
msgstr ""
#: forms_common.py:262
@@ -272,12 +272,12 @@ msgstr ""
msgid "Organization to merge"
msgstr ""
-#: forms_common.py:323 forms_common.py:374 forms_common.py:447 models.py:2368
+#: forms_common.py:323 forms_common.py:374 forms_common.py:447 models.py:2436
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr ""
-#: forms_common.py:339 forms_common.py:434 views.py:104
+#: forms_common.py:339 forms_common.py:434 views.py:107
msgid "Person search"
msgstr ""
@@ -290,25 +290,25 @@ msgstr ""
msgid "Identity"
msgstr ""
-#: forms_common.py:371 forms_common.py:773 forms_common.py:822 models.py:1942
-#: models.py:2362 models.py:2364 models.py:2676 templates/sheet_ope.html:104
+#: forms_common.py:371 forms_common.py:773 forms_common.py:822 models.py:2003
+#: models.py:2430 models.py:2432 models.py:2743 templates/sheet_ope.html:104
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr ""
-#: forms_common.py:372 models.py:2366
+#: forms_common.py:372 models.py:2434
msgid "Salutation"
msgstr ""
-#: forms_common.py:378 models.py:2372
+#: forms_common.py:378 models.py:2440
msgid "Raw name"
msgstr ""
-#: forms_common.py:381 models.py:1390
+#: forms_common.py:381 models.py:1447
msgid "Phone description"
msgstr ""
-#: forms_common.py:384 models.py:1392 models.py:1394
+#: forms_common.py:384 models.py:1449 models.py:1451
msgid "Phone description 2"
msgstr ""
@@ -316,11 +316,11 @@ msgstr ""
msgid "Phone 2"
msgstr ""
-#: forms_common.py:388 models.py:1398
+#: forms_common.py:388 models.py:1455
msgid "Phone description 3"
msgstr ""
-#: forms_common.py:390 models.py:1396
+#: forms_common.py:390 models.py:1453
msgid "Phone 3"
msgstr ""
@@ -328,23 +328,23 @@ msgstr ""
msgid "Current organization"
msgstr ""
-#: forms_common.py:409 models.py:1379
+#: forms_common.py:409 models.py:1436
msgid "Other address: address"
msgstr ""
-#: forms_common.py:412 models.py:1382
+#: forms_common.py:412 models.py:1439
msgid "Other address: address complement"
msgstr ""
-#: forms_common.py:414 models.py:1383
+#: forms_common.py:414 models.py:1440
msgid "Other address: postal code"
msgstr ""
-#: forms_common.py:416 models.py:1385
+#: forms_common.py:416 models.py:1442
msgid "Other address: town"
msgstr ""
-#: forms_common.py:418 models.py:1387
+#: forms_common.py:418 models.py:1444
msgid "Other address: country"
msgstr ""
@@ -360,7 +360,7 @@ msgstr ""
msgid "Account search"
msgstr ""
-#: forms_common.py:510 forms_common.py:550 forms_common.py:554 models.py:2321
+#: forms_common.py:510 forms_common.py:550 forms_common.py:554 models.py:2386
msgid "Person type"
msgstr ""
@@ -368,7 +368,7 @@ msgstr ""
msgid "Account"
msgstr ""
-#: forms_common.py:575 wizards.py:1192
+#: forms_common.py:575 wizards.py:1256
msgid "New password"
msgstr ""
@@ -392,7 +392,7 @@ msgstr ""
msgid "Send the new password by email?"
msgstr ""
-#: forms_common.py:628 forms_common.py:641 models.py:2759
+#: forms_common.py:628 forms_common.py:641 models.py:2826
msgid "Towns"
msgstr ""
@@ -408,7 +408,7 @@ msgstr ""
msgid "Documentation informations"
msgstr ""
-#: forms_common.py:775 forms_common.py:823 models.py:1943 models.py:2653
+#: forms_common.py:775 forms_common.py:823 models.py:2004 models.py:2720
msgid "Source type"
msgstr ""
@@ -420,37 +420,37 @@ msgstr ""
msgid "Internal reference"
msgstr ""
-#: forms_common.py:783 models.py:2690
+#: forms_common.py:783 models.py:2757
msgid "Numerical ressource (web address)"
msgstr ""
-#: forms_common.py:784 models.py:2692
+#: forms_common.py:784 models.py:2759
msgid "Receipt date"
msgstr ""
-#: forms_common.py:786 models.py:2096 models.py:2694
+#: forms_common.py:786 models.py:2161 models.py:2761
msgid "Creation date"
msgstr ""
-#: forms_common.py:789 models.py:2697
+#: forms_common.py:789 models.py:2764
msgid "Receipt date in documentation"
msgstr ""
-#: forms_common.py:791 forms_common.py:827 models.py:317 models.py:577
-#: models.py:1837 models.py:2376 models.py:2704
+#: forms_common.py:791 forms_common.py:827 models.py:323 models.py:634
+#: models.py:1898 models.py:2444 models.py:2771
msgid "Comment"
msgstr ""
-#: forms_common.py:793 forms_common.py:826 models.py:979 models.py:1596
-#: models.py:1769 models.py:1811 models.py:2703 templates/sheet_ope.html:128
+#: forms_common.py:793 forms_common.py:826 models.py:1036 models.py:1656
+#: models.py:1830 models.py:1872 models.py:2770 templates/sheet_ope.html:128
msgid "Description"
msgstr ""
-#: forms_common.py:796 models.py:2705
+#: forms_common.py:796 models.py:2772
msgid "Additional information"
msgstr ""
-#: forms_common.py:798 forms_common.py:830 models.py:2707
+#: forms_common.py:798 forms_common.py:830 models.py:2774
msgid "Has a duplicate"
msgstr ""
@@ -465,7 +465,7 @@ msgid ""
"p>"
msgstr ""
-#: forms_common.py:819 forms_common.py:848 forms_common.py:882 models.py:2633
+#: forms_common.py:819 forms_common.py:848 forms_common.py:882 models.py:2700
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr ""
@@ -478,7 +478,7 @@ msgstr ""
msgid "Would you like to delete this documentation?"
msgstr ""
-#: forms_common.py:856 models.py:1944 models.py:2621 models.py:2630
+#: forms_common.py:856 models.py:2005 models.py:2688 models.py:2697
msgid "Author type"
msgstr ""
@@ -490,7 +490,7 @@ msgstr ""
msgid "There are identical authors."
msgstr ""
-#: forms_common.py:893 models.py:2634 models.py:2686
+#: forms_common.py:893 models.py:2701 models.py:2753
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
@@ -501,14 +501,14 @@ msgid "Administration"
msgstr ""
#: ishtar_menu.py:33
-msgid "Add/modify"
+msgid "Addition/modification"
msgstr ""
-#: ishtar_menu.py:36
+#: ishtar_menu.py:36 ishtar_menu.py:70 ishtar_menu.py:101
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:39 models.py:1105 views.py:1484
+#: ishtar_menu.py:39 models.py:1162 views.py:1530
msgid "Global variables"
msgstr ""
@@ -536,20 +536,15 @@ msgstr ""
msgid "Manual merge"
msgstr ""
-#: ishtar_menu.py:70 ishtar_menu.py:101 models.py:2133 widgets.py:110
-#: templates/ishtar/form_delete.html:11
-msgid "Delete"
-msgstr ""
-
-#: ishtar_menu.py:109 models.py:2107
+#: ishtar_menu.py:109 models.py:2172
msgid "Imports"
msgstr ""
-#: ishtar_menu.py:112 views.py:1492
+#: ishtar_menu.py:112 views.py:1538
msgid "New import"
msgstr ""
-#: ishtar_menu.py:116 views.py:1506
+#: ishtar_menu.py:116 views.py:1552
msgid "Current imports"
msgstr ""
@@ -557,212 +552,212 @@ msgstr ""
msgid "Old imports"
msgstr ""
-#: models.py:178
+#: models.py:183
msgid "Not a valid item."
msgstr ""
-#: models.py:191
+#: models.py:196
msgid "A selected item is not a valid item."
msgstr ""
-#: models.py:202
+#: models.py:207
msgid "This item already exists."
msgstr ""
-#: models.py:313 models.py:576 models.py:1344 models.py:1356
+#: models.py:319 models.py:633 models.py:1401 models.py:1413 models.py:1827
msgid "Label"
msgstr ""
-#: models.py:315
+#: models.py:321
msgid "Textual ID"
msgstr ""
-#: models.py:318 models.py:579 models.py:1313
+#: models.py:324 models.py:636 models.py:1370
msgid "Available"
msgstr ""
-#: models.py:598 models.py:1883
+#: models.py:655 models.py:1944
msgid "Key"
msgstr ""
-#: models.py:604
+#: models.py:661
msgid "Specific key to an import"
msgstr ""
-#: models.py:696
+#: models.py:753
msgid "Last editor"
msgstr ""
-#: models.py:699
+#: models.py:756
msgid "Creator"
msgstr ""
-#: models.py:841 models.py:2770
+#: models.py:898 models.py:2837
msgid "Order"
msgstr ""
-#: models.py:842
+#: models.py:899
msgid "Symmetrical"
msgstr ""
-#: models.py:843
+#: models.py:900
msgid "Tiny label"
msgstr ""
-#: models.py:857
+#: models.py:914
msgid "Cannot have symmetrical and an inverse_relation"
msgstr ""
-#: models.py:971
+#: models.py:1028
msgid "Euro"
msgstr ""
-#: models.py:972
+#: models.py:1029
msgid "US dollar"
msgstr ""
-#: models.py:978 models.py:1594
+#: models.py:1035 models.py:1654
msgid "Slug"
msgstr ""
-#: models.py:980
+#: models.py:1037
msgid "Files module"
msgstr ""
-#: models.py:981
+#: models.py:1038
msgid "Context records module"
msgstr ""
-#: models.py:983
+#: models.py:1040
msgid "Finds module"
msgstr ""
-#: models.py:984
+#: models.py:1041
msgid "Need context records module"
msgstr ""
-#: models.py:986
+#: models.py:1043
msgid "Warehouses module"
msgstr ""
-#: models.py:987
+#: models.py:1044
msgid "Need finds module"
msgstr ""
-#: models.py:989
+#: models.py:1046
msgid "Home page"
msgstr ""
-#: models.py:990
+#: models.py:1047
#, 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:994
+#: models.py:1051
msgid "File external id"
msgstr ""
-#: models.py:996
+#: models.py:1053
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:1001
+#: models.py:1058
msgid "Parcel external id"
msgstr ""
-#: models.py:1004
+#: models.py:1061
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:1009
+#: models.py:1066
msgid "Context record external id"
msgstr ""
-#: models.py:1011
+#: models.py:1068
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:1016
+#: models.py:1073
msgid "Base find external id"
msgstr ""
-#: models.py:1018
+#: models.py:1075
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:1023
+#: models.py:1080
msgid "Find external id"
msgstr ""
-#: models.py:1025
+#: models.py:1082
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:1030
+#: models.py:1087
msgid "Raw name for person"
msgstr ""
-#: models.py:1032
+#: models.py:1089
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:1036
+#: models.py:1093
msgid "Current active"
msgstr ""
-#: models.py:1037
+#: models.py:1094
msgid "Currency"
msgstr ""
-#: models.py:1041
+#: models.py:1098
msgid "Ishtar site profile"
msgstr ""
-#: models.py:1042
+#: models.py:1099
msgid "Ishtar site profiles"
msgstr ""
-#: models.py:1098
+#: models.py:1155
msgid "Variable name"
msgstr ""
-#: models.py:1099
+#: models.py:1156
msgid "Description of the variable"
msgstr ""
-#: models.py:1101 models.py:1884
+#: models.py:1158 models.py:1945
msgid "Value"
msgstr ""
-#: models.py:1104
+#: models.py:1161
msgid "Global variable"
msgstr ""
-#: models.py:1214 models.py:1244
+#: models.py:1271 models.py:1301
msgid "Total"
msgstr ""
-#: models.py:1221 models.py:1345 models.py:1357
+#: models.py:1278 models.py:1402 models.py:1414
#: templates/ishtar/sheet_person.html:22
#: templates/ishtar/dashboards/dashboard_main_detail.html:141
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
@@ -770,718 +765,742 @@ msgstr ""
msgid "Number"
msgstr ""
-#: models.py:1308
+#: models.py:1365
msgid "Administrative Act"
msgstr ""
-#: models.py:1312
+#: models.py:1369
msgid "Associated object"
msgstr ""
-#: models.py:1316
+#: models.py:1373
msgid "Document template"
msgstr ""
-#: models.py:1317
+#: models.py:1374
msgid "Document templates"
msgstr ""
-#: models.py:1348 models.py:1358 models.py:2091
+#: models.py:1405 models.py:1415 models.py:2156
msgid "State"
msgstr ""
-#: models.py:1362 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1419 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr ""
-#: models.py:1363
+#: models.py:1420
msgid "Departments"
msgstr ""
-#: models.py:1400
+#: models.py:1457
msgid "Raw phone"
msgstr ""
-#: models.py:1406
+#: models.py:1463
msgid "Alternative address is prefered"
msgstr ""
-#: models.py:1445
+#: models.py:1502
msgid "Tel: "
msgstr ""
-#: models.py:1449
+#: models.py:1506
msgid "Mobile: "
msgstr ""
-#: models.py:1453
+#: models.py:1510
msgid "Email: "
msgstr ""
-#: models.py:1458
+#: models.py:1515
msgid "Merge key"
msgstr ""
-#: models.py:1532
+#: models.py:1589
msgid "Organization types"
msgstr ""
-#: models.py:1548 views.py:234
+#: models.py:1608 views.py:237
msgid "Operation"
msgstr ""
-#: models.py:1550
+#: models.py:1610
msgid "Archaeological site"
msgstr ""
-#: models.py:1551
+#: models.py:1611
msgid "Parcels"
msgstr ""
-#: models.py:1553
+#: models.py:1613
msgid "Operation source"
msgstr ""
-#: models.py:1556 views.py:1299 views.py:1350
+#: models.py:1616 views.py:1346 views.py:1396
msgid "Archaeological files"
msgstr ""
-#: models.py:1558 views.py:1302 views.py:1358
+#: models.py:1618 views.py:1349 views.py:1404
msgid "Context records"
msgstr ""
-#: models.py:1560
+#: models.py:1620
msgid "Context record relations"
msgstr ""
-#: models.py:1562 views.py:1304 views.py:1361
-msgid "Finds"
+#: models.py:1622
+msgid "Base finds"
msgstr ""
-#: models.py:1598 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1658 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr ""
-#: models.py:1600
+#: models.py:1660
msgid "Associated model"
msgstr ""
-#: models.py:1603
+#: models.py:1663
msgid "Is template"
msgstr ""
-#: models.py:1604
+#: models.py:1664
msgid "Unicity keys (separator \";\")"
msgstr ""
-#: models.py:1608
+#: models.py:1668
msgid "Importer - Type"
msgstr ""
-#: models.py:1609
+#: models.py:1669
msgid "Importer - Types"
msgstr ""
-#: models.py:1699
+#: models.py:1759
msgid "Importer - Default"
msgstr ""
-#: models.py:1700
+#: models.py:1760
msgid "Importer - Defaults"
msgstr ""
-#: models.py:1735
+#: models.py:1795
msgid "Importer - Default value"
msgstr ""
-#: models.py:1736
+#: models.py:1796
msgid "Importer - Default values"
msgstr ""
-#: models.py:1768
+#: models.py:1829
msgid "Column number"
msgstr ""
-#: models.py:1771
+#: models.py:1832
msgid "Required"
msgstr ""
-#: models.py:1774
+#: models.py:1835
msgid "Importer - Column"
msgstr ""
-#: models.py:1775
+#: models.py:1836
msgid "Importer - Columns"
msgstr ""
-#: models.py:1795
+#: models.py:1856
msgid "Field name"
msgstr ""
-#: models.py:1797 models.py:1831
+#: models.py:1858 models.py:1892
msgid "Force creation of new items"
msgstr ""
-#: models.py:1799 models.py:1833
+#: models.py:1860 models.py:1894
msgid "Concatenate with existing"
msgstr ""
-#: models.py:1801 models.py:1835
+#: models.py:1862 models.py:1896
msgid "Concatenate character"
msgstr ""
-#: models.py:1805
+#: models.py:1866
msgid "Importer - Duplicate field"
msgstr ""
-#: models.py:1806
+#: models.py:1867
msgid "Importer - Duplicate fields"
msgstr ""
-#: models.py:1813
+#: models.py:1874
msgid "Regular expression"
msgstr ""
-#: models.py:1816
+#: models.py:1877
msgid "Importer - Regular expression"
msgstr ""
-#: models.py:1817
+#: models.py:1878
msgid "Importer - Regular expressions"
msgstr ""
-#: models.py:1840
+#: models.py:1901
msgid "Importer - Target"
msgstr ""
-#: models.py:1841
+#: models.py:1902
msgid "Importer - Targets"
msgstr ""
-#: models.py:1865 views.py:518
+#: models.py:1926 views.py:536
msgid "True"
msgstr ""
-#: models.py:1866 views.py:520
+#: models.py:1927 views.py:538
msgid "False"
msgstr ""
-#: models.py:1885
+#: models.py:1946
msgid "Is set"
msgstr ""
-#: models.py:1892
+#: models.py:1953
msgid "Importer - Target key"
msgstr ""
-#: models.py:1893
+#: models.py:1954
msgid "Importer - Targets keys"
msgstr ""
-#: models.py:1945 models.py:2669 models.py:2682
+#: models.py:2006 models.py:2736 models.py:2749
msgid "Format"
msgstr ""
-#: models.py:1946 models.py:2774
+#: models.py:2007 models.py:2841
msgid "Operation type"
msgstr ""
-#: models.py:1947
+#: models.py:2008
msgid "Period"
msgstr ""
-#: models.py:1948
+#: models.py:2009
msgid "Report state"
msgstr ""
-#: models.py:1949
+#: models.py:2010
+msgid "Remain type"
+msgstr ""
+
+#: models.py:2011
msgid "Unit"
msgstr ""
-#: models.py:1950
+#: models.py:2012
+msgid "Activity type"
+msgstr ""
+
+#: models.py:2013
msgid "Material"
msgstr ""
-#: models.py:1952
+#: models.py:2015
msgid "Conservatory state"
msgstr ""
-#: models.py:1953
+#: models.py:2016
msgid "Preservation type"
msgstr ""
-#: models.py:1954
+#: models.py:2017
msgid "Object type"
msgstr ""
-#: models.py:1956
+#: models.py:2019
msgid "Identification type"
msgstr ""
-#: models.py:1958
+#: models.py:2021
msgid "Context record relation type"
msgstr ""
-#: models.py:1959 models.py:2661
+#: models.py:2022 models.py:2728
msgid "Support type"
msgstr ""
-#: models.py:1965
+#: models.py:2028
msgid "Integer"
msgstr ""
-#: models.py:1966
+#: models.py:2029
msgid "Float"
msgstr ""
-#: models.py:1967
+#: models.py:2030
msgid "String"
msgstr ""
-#: models.py:1968 templates/sheet_ope.html:86
+#: models.py:2031 templates/sheet_ope.html:86
msgid "Date"
msgstr ""
-#: models.py:1970 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: models.py:2033 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
#: templates/ishtar/dashboards/dashboard_main_detail.html:126
msgid "Year"
msgstr ""
-#: models.py:1971
+#: models.py:2034
msgid "String to boolean"
msgstr ""
-#: models.py:1972
+#: models.py:2035
msgctxt "filesystem"
msgid "File"
msgstr ""
-#: models.py:1973
+#: models.py:2036
msgid "Unknow type"
msgstr ""
-#: models.py:1989
+#: models.py:2052
msgid "4 digit year. e.g.: \"2015\""
msgstr ""
-#: models.py:1990
+#: models.py:2053
msgid "4 digit year/month/day. e.g.: \"2015/02/04\""
msgstr ""
-#: models.py:1991
+#: models.py:2054
msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""
msgstr ""
-#: models.py:2001
+#: models.py:2064
msgid "Options"
msgstr ""
-#: models.py:2003
+#: models.py:2066
msgid "Split character(s)"
msgstr ""
-#: models.py:2007
+#: models.py:2070
msgid "Importer - Formater type"
msgstr ""
-#: models.py:2008
+#: models.py:2071
msgid "Importer - Formater types"
msgstr ""
-#: models.py:2055 templates/ishtar/dashboards/dashboard_main_detail.html:63
+#: models.py:2120 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr ""
-#: models.py:2056
+#: models.py:2121
msgid "Analyse in progress"
msgstr ""
-#: models.py:2057
+#: models.py:2122
msgid "Analysed"
msgstr ""
-#: models.py:2058
+#: models.py:2123
msgid "Import pending"
msgstr ""
-#: models.py:2059
+#: models.py:2124
msgid "Import in progress"
msgstr ""
-#: models.py:2060
+#: models.py:2125
msgid "Finished with errors"
msgstr ""
-#: models.py:2061
+#: models.py:2126
msgid "Finished"
msgstr ""
-#: models.py:2062
+#: models.py:2127
msgid "Archived"
msgstr ""
-#: models.py:2074
+#: models.py:2139
msgid "Imported file"
msgstr ""
-#: models.py:2077
+#: models.py:2142
msgid "Associated images (zip file)"
msgstr ""
-#: models.py:2079
+#: models.py:2144
msgid "Encoding"
msgstr ""
-#: models.py:2081
+#: models.py:2146
msgid "Skip lines"
msgstr ""
-#: models.py:2082 templates/ishtar/import_list.html:47
+#: models.py:2147 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr ""
-#: models.py:2085
+#: models.py:2150
msgid "Result file"
msgstr ""
-#: models.py:2088 templates/ishtar/import_list.html:53
+#: models.py:2153 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr ""
-#: models.py:2094
+#: models.py:2159
msgid "Conservative import"
msgstr ""
-#: models.py:2099
+#: models.py:2164
msgid "End date"
msgstr ""
-#: models.py:2101
+#: models.py:2166
msgid "Remaining seconds"
msgstr ""
-#: models.py:2106
+#: models.py:2171
msgid "Import"
msgstr ""
-#: models.py:2123
+#: models.py:2188
msgid "Analyse"
msgstr ""
-#: models.py:2125 models.py:2128
+#: models.py:2190 models.py:2193
msgid "Re-analyse"
msgstr ""
-#: models.py:2126
+#: models.py:2191
msgid "Launch import"
msgstr ""
-#: models.py:2129
+#: models.py:2194
msgid "Re-import"
msgstr ""
-#: models.py:2130
+#: models.py:2195
msgid "Archive"
msgstr ""
-#: models.py:2132
+#: models.py:2197
msgid "Unarchive"
msgstr ""
-#: models.py:2274
+#: models.py:2198 widgets.py:129 templates/ishtar/form_delete.html:11
+msgid "Delete"
+msgstr ""
+
+#: models.py:2339
msgid "Organizations"
msgstr ""
-#: models.py:2276
+#: models.py:2341
msgid "Can view all Organizations"
msgstr ""
-#: models.py:2277
+#: models.py:2342
msgid "Can view own Organization"
msgstr ""
-#: models.py:2278
+#: models.py:2343
msgid "Can add own Organization"
msgstr ""
-#: models.py:2280
+#: models.py:2345
msgid "Can change own Organization"
msgstr ""
-#: models.py:2282
+#: models.py:2347
msgid "Can delete own Organization"
msgstr ""
-#: models.py:2317
+#: models.py:2382
msgid "Groups"
msgstr ""
-#: models.py:2322
+#: models.py:2387
msgid "Person types"
msgstr ""
-#: models.py:2330
+#: models.py:2398
msgid "Title type"
msgstr ""
-#: models.py:2331
+#: models.py:2399
msgid "Title types"
msgstr ""
-#: models.py:2340
+#: models.py:2408
msgid "Mr"
msgstr ""
-#: models.py:2341
+#: models.py:2409
msgid "Miss"
msgstr ""
-#: models.py:2342
+#: models.py:2410
msgid "Mr and Mrs"
msgstr ""
-#: models.py:2343
+#: models.py:2411
msgid "Mrs"
msgstr ""
-#: models.py:2344
+#: models.py:2412
msgid "Doctor"
msgstr ""
-#: models.py:2374
+#: models.py:2442
msgid "Contact type"
msgstr ""
-#: models.py:2377 models.py:2441
+#: models.py:2445 models.py:2509
msgid "Types"
msgstr ""
-#: models.py:2380
+#: models.py:2448
msgid "Is attached to"
msgstr ""
-#: models.py:2385
+#: models.py:2453
msgid "Persons"
msgstr ""
-#: models.py:2387
+#: models.py:2455
msgid "Can view all Persons"
msgstr ""
-#: models.py:2388
+#: models.py:2456
msgid "Can view own Person"
msgstr ""
-#: models.py:2389
+#: models.py:2457
msgid "Can add own Person"
msgstr ""
-#: models.py:2390
+#: models.py:2458
msgid "Can change own Person"
msgstr ""
-#: models.py:2391
+#: models.py:2459
msgid "Can delete own Person"
msgstr ""
-#: models.py:2569
+#: models.py:2637
msgid "Advanced shortcut menu"
msgstr ""
-#: models.py:2572
+#: models.py:2640
msgid "Ishtar user"
msgstr ""
-#: models.py:2573
+#: models.py:2641
msgid "Ishtar users"
msgstr ""
-#: models.py:2616
+#: models.py:2683
msgid "To modify the password use the form in Auth > User"
msgstr ""
-#: models.py:2622
+#: models.py:2689
msgid "Author types"
msgstr ""
-#: models.py:2654
+#: models.py:2721
msgid "Source types"
msgstr ""
-#: models.py:2662
+#: models.py:2729
msgid "Support types"
msgstr ""
-#: models.py:2670
+#: models.py:2737
msgid "Formats"
msgstr ""
-#: models.py:2677
+#: models.py:2744
msgid "External ID"
msgstr ""
-#: models.py:2680
+#: models.py:2747
msgid "Support"
msgstr ""
-#: models.py:2684
+#: models.py:2751
msgid "Scale"
msgstr ""
-#: models.py:2698
+#: models.py:2765
msgid "Item number"
msgstr ""
-#: models.py:2699
+#: models.py:2766
msgid "Ref."
msgstr ""
-#: models.py:2702
+#: models.py:2769
msgid "Internal ref."
msgstr ""
-#: models.py:2745
+#: models.py:2812
msgid "Surface (m2)"
msgstr ""
-#: models.py:2746 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2813 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr ""
-#: models.py:2771
+#: models.py:2838
msgid "Is preventive"
msgstr ""
-#: models.py:2775
+#: models.py:2842
msgid "Operation types"
msgstr ""
-#: models.py:2804
+#: models.py:2871
msgid "Preventive"
msgstr ""
-#: models.py:2805
+#: models.py:2872
msgid "Research"
msgstr ""
-#: utils.py:74
+#: utils.py:81
msgid " (...)"
msgstr ""
-#: utils.py:107
+#: utils.py:114
msgid "Load another random image?"
msgstr ""
-#: views.py:111
+#: views.py:114
msgid "New person"
msgstr ""
-#: views.py:119
+#: views.py:122
msgid "Person modification"
msgstr ""
-#: views.py:134
+#: views.py:137
msgid "Person deletion"
msgstr ""
-#: views.py:145
+#: views.py:148
msgid "New organization"
msgstr ""
-#: views.py:152
+#: views.py:155
msgid "Organization modification"
msgstr ""
-#: views.py:168
+#: views.py:171
msgid "Organization deletion"
msgstr ""
-#: views.py:175
+#: views.py:178
msgid "Account management"
msgstr ""
-#: views.py:181
+#: views.py:184
msgid "Account deletion"
msgstr ""
-#: views.py:233
+#: views.py:236
msgid "Archaeological file"
msgstr ""
-#: views.py:236
+#: views.py:239
msgid "Context record"
msgstr ""
-#: views.py:238
+#: views.py:241
msgid "Find"
msgstr ""
-#: views.py:1238 views.py:1281
+#: views.py:243
+msgid "Treatment request"
+msgstr ""
+
+#: views.py:244
+msgid "Treatment"
+msgstr ""
+
+#: views.py:1285 views.py:1328
msgid "Operation not permitted."
msgstr ""
-#: views.py:1240
+#: views.py:1287
#, python-format
msgid "New %s"
msgstr ""
-#: views.py:1300 views.py:1354
+#: views.py:1347 views.py:1400
msgid "Operations"
msgstr ""
-#: views.py:1553 templates/ishtar/import_list.html:43
+#: views.py:1351 views.py:1407
+msgid "Finds"
+msgstr ""
+
+#: views.py:1599 templates/ishtar/import_list.html:43
msgid "Link unmatched items"
msgstr ""
-#: views.py:1568
+#: views.py:1614
msgid "Delete import"
msgstr ""
-#: views.py:1607
+#: views.py:1653
msgid "Merge persons"
msgstr ""
-#: views.py:1631
+#: views.py:1677
msgid "Select the main person"
msgstr ""
-#: views.py:1640
+#: views.py:1686
msgid "Merge organization"
msgstr ""
-#: views.py:1650
+#: views.py:1696
msgid "Select the main organization"
msgstr ""
-#: views.py:1690 views.py:1706
+#: views.py:1736 views.py:1752
msgid "Corporation manager"
msgstr ""
-#: widgets.py:239 widgets.py:347 widgets.py:463
+#: widgets.py:258 widgets.py:365 widgets.py:480
msgid "Search..."
msgstr ""
-#: widgets.py:623 templatetags/window_tables.py:79
+#: widgets.py:670 templatetags/window_tables.py:91
msgid "No results"
msgstr ""
-#: widgets.py:624 templatetags/window_tables.py:80
+#: widgets.py:671 templatetags/window_tables.py:92
msgid "Loading..."
msgstr ""
-#: widgets.py:625
+#: widgets.py:672
msgid "Remove"
msgstr ""
-#: wizards.py:323 templates/ishtar/import_delete.html:20
+#: wizards.py:342 templates/ishtar/import_delete.html:20
msgid "Yes"
msgstr ""
-#: wizards.py:325
+#: wizards.py:344
msgid "No"
msgstr ""
-#: wizards.py:1249
+#: wizards.py:1313
#, python-format
msgid "[%(app_name)s] Account creation/modification"
msgstr ""
@@ -1521,11 +1540,11 @@ msgid "The %(app_name)s team"
msgstr ""
#: templates/base.html:41
-msgid "Searches in the shortcut menu deals with all items."
+msgid "Searches in the shortcut menu deal with all items."
msgstr ""
#: templates/base.html:42
-msgid "Searches in the shortcut menu deals with only your items."
+msgid "Searches in the shortcut menu deal with only your items."
msgstr ""
#: templates/base.html:49
@@ -1689,7 +1708,7 @@ msgid "Operator's reference code:"
msgstr ""
#: templates/sheet_ope.html:36
-msgid "Town planning service:"
+msgid "Planning service:"
msgstr ""
#: templates/sheet_ope.html:37
@@ -1849,7 +1868,7 @@ msgid "where the magic happens."
msgstr ""
#: templates/window.html:40 templates/blocks/JQueryJqGrid.html:28
-#: templates/ishtar/manage_basket.html:9
+#: templates/ishtar/manage_basket.html:12
msgid "Add"
msgstr ""
@@ -1929,7 +1948,7 @@ msgstr ""
#: templates/ishtar/import_list.html:58 templates/ishtar/merge.html:31
#: templates/ishtar/simple_form.html:7
#: templates/ishtar/wizard/confirm_wizard.html:42
-#: templates/ishtar/wizard/default_wizard.html:30
+#: templates/ishtar/wizard/default_wizard.html:31
#: templates/ishtar/wizard/search.html:13
#: templates/ishtar/wizard/validation_bar.html:4
msgid "Validate"
@@ -1976,11 +1995,11 @@ msgstr ""
msgid "Control file"
msgstr ""
-#: templates/ishtar/manage_basket.html:7
-msgid "Checking \"Select all\" only select the current page."
+#: templates/ishtar/manage_basket.html:9
+msgid "Checking \"Select all\" only selects the current page."
msgstr ""
-#: templates/ishtar/manage_basket.html:10
+#: templates/ishtar/manage_basket.html:13
msgid "Basket content"
msgstr ""
@@ -2073,11 +2092,11 @@ msgid "No person in this organization"
msgstr ""
#: templates/ishtar/sheet_organization.html:38
-msgid "General contractor organization of archaelogical files"
+msgid "General contractor organization of archaeological files"
msgstr ""
#: templates/ishtar/sheet_organization.html:43
-msgid "Town planning service of archaelogical files"
+msgid "Planning service of archaeological files"
msgstr ""
#: templates/ishtar/sheet_person.html:21
@@ -2108,15 +2127,18 @@ msgid "Associated operations as responsible"
msgstr ""
#: templates/ishtar/sheet_person.html:80
-msgid "In charge of archaelogical files"
+#: templates/ishtar/wizard/wizard_person_deletion.html:6
+msgid "In charge of archaeological files"
msgstr ""
#: templates/ishtar/sheet_person.html:85
-msgid "General contractor of archaelogical files"
+#: templates/ishtar/wizard/wizard_person_deletion.html:14
+msgid "General contractor of archaeological files"
msgstr ""
#: templates/ishtar/sheet_person.html:90
-msgid "Responsible for town planning service of archaelogical files"
+#: templates/ishtar/wizard/wizard_person_deletion.html:22
+msgid "Responsible for planning service of archaeological files"
msgstr ""
#: templates/ishtar/sheet_person.html:96
@@ -2188,8 +2210,8 @@ msgstr ""
#: templates/ishtar/blocks/window_nav.html:17
msgid ""
-"Are you sure to restore to this version? All changement made since this "
-"version will be lost."
+"Are you sure to restore to this version? All changes made since this version "
+"will be lost."
msgstr ""
#: templates/ishtar/blocks/window_nav.html:22
@@ -2319,7 +2341,7 @@ msgstr ""
msgid "Would you like to save them?"
msgstr ""
-#: templates/ishtar/wizard/default_wizard.html:36
+#: templates/ishtar/wizard/default_wizard.html:37
#: templates/ishtar/wizard/parcels_wizard.html:24
#: templates/ishtar/wizard/relations_wizard.html:23
#: templates/ishtar/wizard/search.html:20
@@ -2327,9 +2349,10 @@ msgstr ""
msgid "Add/Modify"
msgstr ""
-#: templates/ishtar/wizard/default_wizard.html:58
+#: templates/ishtar/wizard/default_wizard.html:59
msgid ""
-"The form has changed if you don't validate it all your changes will be lost."
+"The form has changed. If you don't validate it, all your changes will be "
+"lost."
msgstr ""
#: templates/ishtar/wizard/parcels_wizard.html:12
@@ -2388,18 +2411,6 @@ msgstr ""
msgid "Adminact: operator of archaeological operations"
msgstr ""
-#: templates/ishtar/wizard/wizard_person_deletion.html:6
-msgid "In charge of archaeological files"
-msgstr ""
-
-#: templates/ishtar/wizard/wizard_person_deletion.html:14
-msgid "General contractor of archaeological files"
-msgstr ""
-
-#: templates/ishtar/wizard/wizard_person_deletion.html:22
-msgid "Responsible town planning service of archaeological files"
-msgstr ""
-
#: templates/ishtar/wizard/wizard_person_deletion.html:30
msgid "Scientist in charge of archaeological files"
msgstr ""
diff --git a/translations/fr/archaeological_context_records.po b/translations/fr/archaeological_context_records.po
index b5ede5ba3..04aea6bec 100644
--- a/translations/fr/archaeological_context_records.po
+++ b/translations/fr/archaeological_context_records.po
@@ -3,24 +3,24 @@
# This file is distributed under the same license as the Ishtar package.
# Étienne Loks <etienne.loks at peacefrogs net>, 2010-2015.
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
-# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata
+# Étienne Loks <etienne.loks@iggdrasil.net>, 2017. #zanata
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-10-17 01:16-0400\n"
+"PO-Revision-Date: 2017-01-09 01:15-0500\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"
+"X-Generator: Zanata 3.9.6\n"
-#: forms.py:47 forms.py:51 models.py:164 wizards.py:77
+#: forms.py:47 forms.py:51 models.py:175 wizards.py:77
msgid "Operation"
msgstr "Opération"
-#: forms.py:59 forms.py:137 models.py:166
+#: forms.py:59 forms.py:137 models.py:177 models.py:453
msgid "ID"
msgstr "Identifiant"
@@ -37,14 +37,14 @@ msgid "Operation's number (index by year)"
msgstr "Numéro de l'opération (index par année)"
#: forms.py:69
-msgid "Archaelogical site"
-msgstr "Entité Archéologique"
+msgid "Archaeological site"
+msgstr "Entité archéologique"
#: forms.py:75
-msgid "Search within operation relations"
-msgstr "Rechercher parmi les opérations reliées"
+msgid "Search within related operations"
+msgstr "Rechercher parmi les opérations liées"
-#: forms.py:77 forms.py:232 models.py:55
+#: forms.py:77 forms.py:233 models.py:55
msgid "Period"
msgstr "Période"
@@ -54,15 +54,15 @@ msgstr "Type d'unité"
#: forms.py:79
msgid "Parcel (section/number/public domain)"
-msgstr "Parcelle (section/nombre/domaine public)"
+msgstr "Parcelle (section/numéro/domaine public)"
#: forms.py:81
msgid "Search within relations"
-msgstr "Recherche parmi les relations"
+msgstr "Rechercher parmi les relations"
-#: forms.py:111 forms.py:335 views.py:88
+#: forms.py:111 forms.py:336 views.py:92
msgid "Context record search"
-msgstr "Recherche d'Unité d'Enregistrement"
+msgstr "Rechercher une Unité d'Enregistrement"
#: forms.py:125
msgid "You should at least select one context record."
@@ -72,43 +72,44 @@ msgstr "Vous devez sélectionner au moins une Unité d'Enregistrement."
msgid "General"
msgstr "Général"
-#: forms.py:136 models.py:131 models.py:162
+#: forms.py:136 models.py:132 models.py:173 models.py:455
msgid "Parcel"
msgstr "Parcelle"
-#: forms.py:139 models.py:167 templates/ishtar/sheet_contextrecord.html:27
+#: forms.py:139 models.py:178 models.py:456
+#: templates/ishtar/sheet_contextrecord.html:27
msgid "Description"
msgstr "Description"
-#: forms.py:141 models.py:168
+#: forms.py:141 models.py:179
msgid "General comment"
msgstr "Commentaire général"
-#: forms.py:143 models.py:172
+#: forms.py:143 models.py:183
msgid "Length (m)"
msgstr "Taille (m)"
-#: forms.py:144 models.py:173
+#: forms.py:144 models.py:184
msgid "Width (m)"
msgstr "Largeur (m)"
-#: forms.py:145 models.py:174
+#: forms.py:145 models.py:185
msgid "Thickness (m)"
msgstr "Épaisseur (m)"
-#: forms.py:146 models.py:176
+#: forms.py:146 models.py:187
msgid "Depth (m)"
msgstr "Profondeur (m)"
-#: forms.py:147 models.py:184
+#: forms.py:147 models.py:195 models.py:454
msgid "Unit"
msgstr "Unité"
-#: forms.py:148 models.py:186
+#: forms.py:148 models.py:197
msgid "Has furniture?"
msgstr "Contient du mobilier ?"
-#: forms.py:151 models.py:178
+#: forms.py:151 models.py:189
msgid "Location"
msgstr "Lieu"
@@ -125,116 +126,116 @@ msgstr ""
"<p>Les images trop grandes sont retaillées en : %(width)dx%(height)d (le "
"ratio est conservé).</p>"
-#: forms.py:221
+#: forms.py:222
msgid "This ID already exists for this operation."
msgstr "Cet identifiant existe déjà pour cette opération."
-#: forms.py:227 forms.py:254 models.py:66
+#: forms.py:228 forms.py:255 models.py:66
msgid "Dating"
msgstr "Datation"
-#: forms.py:233 models.py:56
+#: forms.py:234 models.py:56
msgid "Start date"
msgstr "Date de début"
-#: forms.py:234 models.py:57 models.py:171
+#: forms.py:235 models.py:57 models.py:182
msgid "End date"
msgstr "Date de fin"
-#: forms.py:235 models.py:60
+#: forms.py:236 models.py:60
msgid "Quality"
msgstr "Qualité"
-#: forms.py:236 models.py:38 models.py:58
+#: forms.py:237 models.py:38 models.py:58
msgid "Dating type"
msgstr "Type de datation"
-#: forms.py:263 ishtar_menu.py:29 models.py:457
+#: forms.py:264 ishtar_menu.py:29 models.py:514
msgid "Context record"
msgstr "Unité d'Enregistrement"
-#: forms.py:284
+#: forms.py:285
msgid "Relations"
msgstr "Relations"
-#: forms.py:288 forms.py:296 models.py:189
+#: forms.py:289 forms.py:297 models.py:200
#: templates/ishtar/sheet_contextrecord.html:39
msgid "Interpretation"
msgstr "Interprétation"
-#: forms.py:292
+#: forms.py:293
msgid "Comments on dating"
msgstr "Commentaires sur la datation"
-#: forms.py:294 models.py:188
+#: forms.py:295 models.py:199
msgid "Filling"
msgstr "Remplissage"
-#: forms.py:298 models.py:209
+#: forms.py:299 models.py:220
msgid "Activity"
msgstr "Activité"
-#: forms.py:300 models.py:207
+#: forms.py:301 models.py:218
msgid "Identification"
msgstr "Identification"
-#: forms.py:302 models.py:192
+#: forms.py:303 models.py:203
msgid "TAQ"
msgstr "TAQ"
-#: forms.py:303 models.py:196
+#: forms.py:304 models.py:207
msgid "Estimated TAQ"
msgstr "TAQ estimé"
-#: forms.py:305 models.py:199
+#: forms.py:306 models.py:210
msgid "TPQ"
msgstr "TPQ"
-#: forms.py:306 models.py:203
+#: forms.py:307 models.py:214
msgid "Estimated TPQ"
msgstr "TPQ estimé"
-#: forms.py:321
+#: forms.py:322
msgid "Operation search"
-msgstr "Recherche d'Opérations"
+msgstr "Rechercher une opération"
-#: forms.py:323
+#: forms.py:324
msgid "You should select an operation."
msgstr "Vous devez sélectionner une Opération."
-#: forms.py:328
+#: forms.py:329
msgid "Would you like to delete this context record?"
msgstr "Voulez-vous supprimer cette Unité d'Enregistrement ?"
-#: forms.py:337
+#: forms.py:338
msgid "You should select a context record."
msgstr "Vous devez sélectionner une Unité d'Enregistrement."
-#: forms.py:342
+#: forms.py:343
msgid "Year of the operation"
msgstr "Année de l'opération"
-#: forms.py:344
+#: forms.py:345
msgid "Numeric reference"
msgstr "Référence numérique"
-#: forms.py:350
+#: forms.py:351
msgid "Town of the operation"
msgstr "Commune de l'opération"
-#: forms.py:352
+#: forms.py:353
msgid "Period of the context record"
msgstr "Période de l'Unité d'Enregistrement"
-#: forms.py:354
+#: forms.py:355
msgid "Unit type of the context record"
msgstr "Type d'unité de l'Unité d'Enregistrement"
-#: forms.py:367
+#: forms.py:368
msgid "Documentation search"
-msgstr "Recherche de documents"
+msgstr "Rechercher une documentation"
-#: forms.py:369
+#: forms.py:370
msgid "You should select a document."
msgstr "Vous devez sélectionner un document."
@@ -242,7 +243,7 @@ msgstr "Vous devez sélectionner un document."
msgid "Search"
msgstr "Recherche"
-#: ishtar_menu.py:35
+#: ishtar_menu.py:35 ishtar_menu.py:55
msgid "Creation"
msgstr "Ajout"
@@ -258,10 +259,6 @@ msgstr "Suppression"
msgid "Documentation"
msgstr "Documentation"
-#: ishtar_menu.py:55
-msgid "Add"
-msgstr "Ajout"
-
#: models.py:39
msgid "Dating types"
msgstr "Types de datation"
@@ -314,27 +311,51 @@ msgstr "Type d'identification"
msgid "Identification Types"
msgstr "Types d'identification"
-#: models.py:159
+#: models.py:133 models.py:457
+msgid "Periods"
+msgstr "Périodes"
+
+#: models.py:161
+msgid "Parcel (town)"
+msgstr "Parcelle (commune)"
+
+#: models.py:162
+msgid "Related context records"
+msgstr "Unités d'Enregistrement liées"
+
+#: models.py:164
+msgid "Parcel (external ID)"
+msgstr "Parcelle (identifiant externe)"
+
+#: models.py:165
+msgid "Datings (period)"
+msgstr "Datations"
+
+#: models.py:166
+msgid "Parcel (year)"
+msgstr "Parcelle (année)"
+
+#: models.py:170
msgid "External ID"
msgstr "ID externe"
-#: models.py:161
+#: models.py:172
msgid "External ID is set automatically"
msgstr "L'identifiant externe est configuré automatiquement"
-#: models.py:169
+#: models.py:180
msgid "Date d'ouverture"
msgstr "Date d'ouverture"
-#: models.py:179
+#: models.py:190
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:182
+#: models.py:193
msgid "Comment on datings"
msgstr "Commentaire sur les datations"
-#: models.py:193
+#: models.py:204
msgid ""
"\"Terminus Ante Quem\" the context record can't have been created after this "
"date"
@@ -342,11 +363,11 @@ msgstr ""
"« Terminus Ante Quem » l'Unité d'Enregistrement ne peut avoir été créée "
"après cette date"
-#: models.py:197
+#: models.py:208
msgid "Estimation of a \"Terminus Ante Quem\""
msgstr "Estimation d'un « Terminus Ante Quem »"
-#: models.py:200
+#: models.py:211
msgid ""
"\"Terminus Post Quem\" the context record can't have been created before "
"this date"
@@ -354,142 +375,146 @@ msgstr ""
"« Terminus Post Quem » l'Unité d'Enregistrement ne peut avoir été créée "
"avant cette date"
-#: models.py:204
+#: models.py:215
msgid "Estimation of a \"Terminus Post Quem\""
msgstr "Estimation d'un « Terminus Post Quem »"
-#: models.py:212
+#: models.py:223
msgid "Point"
msgstr "Point"
-#: models.py:213
+#: models.py:224
msgid "Polygon"
msgstr "Polygone"
-#: models.py:214
+#: models.py:225
msgid "Cached name"
msgstr "Nom en cache"
-#: models.py:218 models.py:219 templates/ishtar/sheet_contextrecord.html:4
+#: models.py:229 models.py:230 templates/ishtar/sheet_contextrecord.html:4
msgid "Context Record"
msgstr "Unité d'Enregistrement"
-#: models.py:221
+#: models.py:232
msgid "Can view all Context Records"
msgstr "Peut voir toutes les Unités d'Enregistrement"
-#: models.py:223
+#: models.py:234
msgid "Can view own Context Record"
msgstr "Peut voir sa propre Unité d'Enregistrement"
-#: models.py:225
+#: models.py:236
msgid "Can add own Context Record"
msgstr "Peut ajouter sa propre Unité d'Enregistrement"
-#: models.py:227
+#: models.py:238
msgid "Can change own Context Record"
msgstr "Peut modifier sa propre Unité d'Enregistrement"
-#: models.py:229
+#: models.py:240
msgid "Can delete own Context Record"
msgstr "Peut supprimer sa propre Unité d'Enregistrement"
-#: models.py:239
+#: models.py:250
msgctxt "short"
msgid "Context record"
msgstr "UE"
-#: models.py:375
+#: models.py:387
msgid "Inverse relation"
msgstr "Relation inverse"
-#: models.py:379 models.py:403
+#: models.py:391 models.py:414 models.py:452
msgid "Relation type"
msgstr "Type de relation"
-#: models.py:380
+#: models.py:392
msgid "Relation types"
msgstr "Types de relation"
-#: models.py:398
+#: models.py:409
msgid "ID (left)"
msgstr "ID (gauche)"
-#: models.py:399
+#: models.py:410
msgid "Unit (left)"
msgstr "Unité (gauche)"
-#: models.py:400
+#: models.py:411
msgid "Parcel (left)"
msgstr "Parcelle (gauche)"
-#: models.py:401
+#: models.py:412
msgid "Description (left)"
msgstr "Description (gauche)"
-#: models.py:402
+#: models.py:413
msgid "Periods (left)"
msgstr "Périodes (gauche)"
-#: models.py:404
+#: models.py:415
+msgid "ID (right)"
+msgstr "ID (droit)"
+
+#: models.py:416
msgid "Unit (right)"
msgstr "Unité (droite)"
-#: models.py:405 models.py:406
+#: models.py:417
msgid "Parcel (right)"
msgstr "Parcelle (droite)"
-#: models.py:407
+#: models.py:418
msgid "Description (right)"
msgstr "Description (droite)"
-#: models.py:408
+#: models.py:419
msgid "Periods (right)"
msgstr "Périodes (droite)"
-#: models.py:417
+#: models.py:428
msgid "Record relation"
msgstr "Relation entre Unités d'Enregistrement"
-#: models.py:418
+#: models.py:429
msgid "Record relations"
msgstr "Relations entre Unités d'Enregistrement"
-#: models.py:454
+#: models.py:511
msgid "Context record documentation"
msgstr "Documentation d'une Unité d'Enregistrement"
-#: models.py:455
+#: models.py:512
msgid "Context record documentations"
msgstr "Documentations des Unités d'Enregistrement"
-#: views.py:98
+#: views.py:102
msgid "New context record"
-msgstr "Nouvelle Unité d'Enregistrement"
+msgstr "Ajouter une Unité d'Enregistrement"
-#: views.py:109
+#: views.py:113
msgid "Context record modification"
-msgstr "Modification d'une Unité d'Enregistrement"
+msgstr "Modifier une Unité d'Enregistrement"
-#: views.py:123
+#: views.py:127
msgid "Context record deletion"
-msgstr "Suppression d'une Unité d'Enregistrement"
+msgstr "Supprimer une Unité d'Enregistrement"
-#: views.py:128
+#: views.py:132
msgid "Context record: source search"
-msgstr "Unité d'Enregistrement : recherche de documentation associée"
+msgstr "Unité d'Enregistrement : rechercher une documentation associée"
-#: views.py:136
+#: views.py:140
msgid "Context record: new source"
-msgstr "Unité d'Enregistrement : nouvelle documentation associée"
+msgstr "Unité d'Enregistrement : ajouter une documentation associée"
-#: views.py:144
+#: views.py:148
msgid "Context record: source modification"
-msgstr "Unité d'Enregistrement : modification d'une documentation associée"
+msgstr "Unité d'Enregistrement : modifier une documentation associée"
-#: views.py:159
+#: views.py:163
msgid "Context record: source deletion"
-msgstr "Unité d'Enregistrement : suppression d'une documentation associée"
+msgstr "Unité d'Enregistrement : supprimer une documentation associée"
#: templates/ishtar/sheet_contextrecord.html:17
msgid "Complete ID:"
diff --git a/translations/fr/archaeological_files.po b/translations/fr/archaeological_files.po
index 925f44322..5d1df6224 100644
--- a/translations/fr/archaeological_files.po
+++ b/translations/fr/archaeological_files.po
@@ -10,254 +10,255 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-08-29 11:35-0400\n"
+"PO-Revision-Date: 2016-11-15 04:16-0500\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"
+"X-Generator: Zanata 3.9.6\n"
-#: forms.py:52 forms.py:212 forms.py:257 forms.py:404 forms.py:431
+#: forms.py:47 forms.py:210 forms.py:255 forms.py:396 forms.py:423
#: models.py:108 templates/ishtar/sheet_file.html:146
msgid "Year"
msgstr "Année"
-#: forms.py:53 forms.py:217 forms.py:259 models.py:111
+#: forms.py:48 forms.py:215 forms.py:257 models.py:111
msgid "Numeric reference"
msgstr "Référence numérique"
-#: forms.py:55 forms.py:219
+#: forms.py:50 forms.py:217
msgid "Other reference"
msgstr "Autre référence"
-#: forms.py:57 forms.py:439
+#: forms.py:52 forms.py:431
msgid "Parcel (section/number/public domain)"
-msgstr "Parcelle (section/nombre/domaine public)"
+msgstr "Parcelle (section/numéro/domaine public)"
-#: forms.py:60 forms.py:415 forms.py:442 models.py:543
+#: forms.py:55 forms.py:407 forms.py:434 models.py:546
msgid "Department"
msgstr "Département"
-#: forms.py:61 forms.py:451
+#: forms.py:56 forms.py:443
msgid "File name"
msgstr "Nom du dossier"
-#: forms.py:62 forms.py:158 forms.py:223 models.py:119
+#: forms.py:57 forms.py:154 forms.py:221 models.py:119
msgid "File type"
msgstr "Type de dossier"
-#: forms.py:63
+#: forms.py:58
msgid "Is active?"
msgstr "Est actif ?"
-#: forms.py:64 forms.py:160 forms.py:321
+#: forms.py:59 forms.py:156 forms.py:314
msgid "Saisine type"
msgstr "Type de saisine"
-#: forms.py:65 forms.py:311 models.py:60 models.py:150
+#: forms.py:60 forms.py:304 models.py:60 models.py:150
msgid "Permit type"
msgstr "Type de permis"
-#: forms.py:67 forms.py:314 models.py:151
+#: forms.py:62 forms.py:307 models.py:151
msgid "Permit reference"
msgstr "Référence du permis"
-#: forms.py:68 forms.py:229 forms.py:372 models.py:180
+#: forms.py:63 forms.py:227 forms.py:364 models.py:180
#: templates/ishtar/sheet_file.html:99
msgid "Comment"
msgstr "Commentaire"
-#: forms.py:70 templates/ishtar/sheet_file.html:119
+#: forms.py:65 templates/ishtar/sheet_file.html:119
msgid "In charge"
msgstr "Responsable"
-#: forms.py:77 forms.py:289 forms.py:453 models.py:126
+#: forms.py:72 forms.py:281 forms.py:445 models.py:126
msgid "General contractor"
msgstr "Aménageur"
-#: forms.py:84 forms.py:462
+#: forms.py:79 forms.py:453
msgid "Organization of general contractor"
msgstr "Organisation de l'aménageur"
-#: forms.py:91 forms.py:485
+#: forms.py:87 forms.py:476
msgid "Created by"
msgstr "Créé par"
-#: forms.py:98 forms.py:493
+#: forms.py:94 forms.py:484
msgid "Modified by"
msgstr "Modifié par"
-#: forms.py:129
+#: forms.py:125
msgid "Archaeological file search"
-msgstr "Recherche de dossiers archéologiques"
+msgstr "Rechercher un dossier archéologique"
-#: forms.py:143
+#: forms.py:139
msgid "You should select a file."
msgstr "Vous devez sélectionner un dossier archéologique."
-#: forms.py:146 forms.py:221 models.py:159
+#: forms.py:142 forms.py:219 models.py:159
msgid "Creation date"
msgstr "Date de création"
-#: forms.py:147 forms.py:324 models.py:161
+#: forms.py:143 forms.py:317 models.py:161
msgid "Reception date"
msgstr "Date de réception"
-#: forms.py:152
+#: forms.py:148
msgid "Slicing"
msgstr "Découpage"
-#: forms.py:154
+#: forms.py:150
msgid "Department detail"
msgstr "Détail par département"
-#: forms.py:156
+#: forms.py:152
msgid "Date get from"
msgstr "Date utilisée"
-#: forms.py:162
+#: forms.py:158
msgid "Date after"
msgstr "Date après"
-#: forms.py:164
+#: forms.py:160
msgid "Date before"
msgstr "Date avant"
-#: forms.py:201 templates/ishtar/sheet_file.html:14
+#: forms.py:197 templates/ishtar/sheet_file.html:14
msgid "General"
msgstr "Général"
-#: forms.py:206 models.py:121
+#: forms.py:202 models.py:121
msgid "Person in charge"
msgstr "Responsable"
-#: forms.py:220 models.py:118
+#: forms.py:218 models.py:118
msgid "Name"
msgstr "Nom"
-#: forms.py:225 models.py:163
+#: forms.py:223 models.py:163
msgid "Related file"
msgstr "Dossier associé"
-#: forms.py:233 models.py:171
+#: forms.py:231 models.py:171
msgid "Total surface (m2)"
msgstr "Surface totale (m2)"
-#: forms.py:236 models.py:177
+#: forms.py:234 models.py:177
msgid "Main address"
msgstr "Adresse des terrains"
-#: forms.py:237
+#: forms.py:235
msgid "Main address - complement"
msgstr "Adresse des terrains - complément"
-#: forms.py:250
+#: forms.py:248
#, python-format
msgid "<br/>(last recorded: %s)"
msgstr "<br/>(dernier enregistrement : %s)"
-#: forms.py:272
+#: forms.py:270
msgid "Another file with this numeric id exists."
msgstr "Un autre dossier avec cet identifiant numérique existe."
-#: forms.py:283
+#: forms.py:275
msgid "Preventive informations"
msgstr "Information archéologie préventive"
-#: forms.py:301 models.py:138
-msgid "Responsible for town planning service"
-msgstr "Responsable au service instructeur"
+#: forms.py:293 models.py:138
+msgid "Responsible for planning service"
+msgstr "Responsable pour le service instructeur"
-#: forms.py:317 models.py:174
+#: forms.py:310 models.py:174
msgid "Total developed surface (m2)"
msgstr "Surface totale aménagée (m2)"
-#: forms.py:340 templates/ishtar/sheet_file.html:89
+#: forms.py:333 templates/ishtar/sheet_file.html:89
#: templates/ishtar/dashboards/dashboard_file.html:45
msgid "Research archaeology"
msgstr "Archéologie programmée"
-#: forms.py:348 models.py:183 templates/ishtar/sheet_file.html:90
+#: forms.py:341 models.py:183 templates/ishtar/sheet_file.html:90
msgid "Departments"
msgstr "Départements"
-#: forms.py:359 models.py:192
+#: forms.py:351 models.py:192
msgid "Scientist in charge"
msgstr "Responsable scientifique"
-#: forms.py:361 models.py:186 templates/ishtar/sheet_file.html:92
+#: forms.py:353 models.py:186 templates/ishtar/sheet_file.html:92
msgid "Requested operation type"
msgstr "Type d'opération demandée"
-#: forms.py:363
+#: forms.py:355
msgid "Lead organization"
msgstr "Organisation porteuse du projet"
-#: forms.py:379 models.py:196 templates/ishtar/sheet_file.html:97
+#: forms.py:371 models.py:196 templates/ishtar/sheet_file.html:97
msgid "Classified area"
msgstr "Au sein d'un site classé"
-#: forms.py:381 models.py:198 templates/ishtar/sheet_file.html:98
+#: forms.py:373 models.py:198 templates/ishtar/sheet_file.html:98
msgid "Protected area"
msgstr "Au sein d'un secteur sauvegardé"
-#: forms.py:395
+#: forms.py:387
msgid "Would you like to close this archaeological file?"
-msgstr "Voulez vous clore ce dossier archéologique ?"
+msgstr "Voulez-vous clore ce dossier archéologique ?"
-#: forms.py:400
-msgid "Would you like to delete this archaelogical file ?"
-msgstr "Voulez vous supprimer ce dossier archéologique ?"
+#: forms.py:392
+msgid "Would you like to delete this archaeological file ?"
+msgstr "Voulez-vous supprimer ce dossier archéologique ?"
-#: forms.py:405 forms.py:432 forms.py:556
+#: forms.py:397 forms.py:424 forms.py:547
msgid "Index"
msgstr "Index"
-#: forms.py:409 forms.py:436 forms.py:542
+#: forms.py:401 forms.py:428 forms.py:533
msgid "Act type"
msgstr "Type d'acte"
-#: forms.py:410
+#: forms.py:402
msgid "Object (full text search)"
msgstr "Objet (recherche texte intégral)"
-#: forms.py:437
+#: forms.py:429
msgid "Indexed?"
msgstr "Indexé ?"
-#: forms.py:443
+#: forms.py:435
msgid "Object"
msgstr "Objet"
-#: forms.py:447
+#: forms.py:439
msgid "Signature date after"
msgstr "Date de signature après"
-#: forms.py:449
+#: forms.py:441
msgid "Signature date before"
msgstr "Date de signature avant"
-#: forms.py:470
+#: forms.py:461
msgid "File numeric reference"
msgstr "Dossier : réf. numérique"
-#: forms.py:471
+#: forms.py:462
msgid "File year"
msgstr "Dossier : année"
-#: forms.py:473
+#: forms.py:464
msgid "File other reference"
msgstr "Dossier : autre référence"
-#: forms.py:475
+#: forms.py:466
msgid "File in charge"
msgstr "Dossier : responsable"
-#: forms.py:483
+#: forms.py:474
msgid "File permit reference"
msgstr "Dossier : réf. du permis"
-#: ishtar_menu.py:33 models.py:220 templates/ishtar/sheet_file.html:4
+#: ishtar_menu.py:33 models.py:220 wizards.py:155 wizards.py:165
+#: templates/ishtar/sheet_file.html:4
msgid "Archaeological file"
msgstr "Dossier"
@@ -265,7 +266,7 @@ msgstr "Dossier"
msgid "Search"
msgstr "Recherche"
-#: ishtar_menu.py:41
+#: ishtar_menu.py:41 ishtar_menu.py:64
msgid "Creation"
msgstr "Ajout"
@@ -285,10 +286,6 @@ msgstr "Suppression"
msgid "Administrative act"
msgstr "Acte administratif"
-#: ishtar_menu.py:64
-msgid "Add"
-msgstr "Ajout"
-
#: ishtar_menu.py:76
msgid "Documents"
msgstr "Documents"
@@ -343,11 +340,11 @@ msgid "General contractor organization"
msgstr "Organisation de l'aménageur"
#: models.py:141
-msgid "Town planning service (raw)"
+msgid "Planning service (raw)"
msgstr "Service instructeur (brut)"
#: models.py:147
-msgid "Town planning service organization"
+msgid "Planning service organization"
msgstr "Service instructeur"
#: models.py:153
@@ -391,23 +388,23 @@ msgid "Imported line"
msgstr "Ligne importée"
#: models.py:223
-msgid "Can view all Archaelogical files"
+msgid "Can view all Archaeological files"
msgstr "Peut voir tous les Dossiers"
#: models.py:224
-msgid "Can view own Archaelogical file"
+msgid "Can view own Archaeological file"
msgstr "Peut voir son propre Dossier"
#: models.py:225
-msgid "Can add own Archaelogical file"
+msgid "Can add own Archaeological file"
msgstr "Peut ajouter son propre Dossier"
#: models.py:227
-msgid "Can change own Archaelogical file"
+msgid "Can change own Archaeological file"
msgstr "Peut modifier son propre Dossier"
#: models.py:229
-msgid "Can delete own Archaelogical file"
+msgid "Can delete own Archaeological file"
msgstr "Peut supprimer son propre Dossier"
#: models.py:230
@@ -418,29 +415,29 @@ msgstr "Peut fermer un Dossier"
msgid "FILE"
msgstr "DOSSIER"
-#: models.py:404
+#: models.py:406
msgid "Multi-town"
msgstr "Intercommunal"
-#: models.py:410
+#: models.py:412
msgid "No town"
msgstr "Pas de commune"
-#: models.py:542
+#: models.py:545
msgid "File"
msgstr "Dossier"
#: views.py:107
msgid "File search"
-msgstr "Recherche de dossier archéologique"
+msgstr "Rechercher un dossier archéologique"
#: views.py:116
msgid "New file"
-msgstr "Nouveau dossier archéologique"
+msgstr "Ajouter un dossier"
#: views.py:135
msgid "File modification"
-msgstr "Modification de dossier archéologique"
+msgstr "Modifier un dossier archéologique"
#: views.py:158
msgid "File closing"
@@ -448,7 +445,7 @@ msgstr "Clôture de dossier archéologique"
#: views.py:163
msgid "File deletion"
-msgstr "Suppression de dossier archéologique"
+msgstr "Supprimer un dossier"
#: views.py:170
msgid "File: search administrative act"
@@ -456,24 +453,20 @@ msgstr "Dossier : rechercher un acte administratif"
#: views.py:179
msgid "File: new administrative act"
-msgstr "Dossier : nouvel acte administratif"
+msgstr "Dossier : ajouter un acte administratif"
#: views.py:189
msgid "File: administrative act modification"
-msgstr "Dossier : modification d'acte administratif"
+msgstr "Dossier : modifier un acte administratif"
#: views.py:213
msgid "File: administrative act deletion"
-msgstr "Dossier : suppression d'acte administratif"
+msgstr "Dossier : supprimer un acte administratif"
#: wizards.py:124 templates/ishtar/sheet_file.html:111
msgid "Associated operations"
msgstr "Opérations associées"
-#: wizards.py:154 wizards.py:164
-msgid "Archaelogical file"
-msgstr "Dossier"
-
#: templates/ishtar/administrativeact_document.html:9
msgid "Document generation"
msgstr "Génération de document"
@@ -543,7 +536,7 @@ msgid "Surface:"
msgstr "Surface :"
#: templates/ishtar/sheet_file.html:62
-msgid "Preventive archaelogical file"
+msgid "Preventive archaeological file"
msgstr "Dossier d'archéologie préventive"
#: templates/ishtar/sheet_file.html:64
@@ -586,7 +579,7 @@ msgid "Excavation end date"
msgstr "Date de fin de chantier"
#: templates/ishtar/sheet_file.html:135
-msgid "No operation associated to this archaelogical file"
+msgid "No operation associated to this archaeological file"
msgstr "Pas d'opération associée à ce dossier archéologique"
#: templates/ishtar/sheet_file.html:141
diff --git a/translations/fr/archaeological_files_pdl.po b/translations/fr/archaeological_files_pdl.po
index 34955a35a..949555adc 100644
--- a/translations/fr/archaeological_files_pdl.po
+++ b/translations/fr/archaeological_files_pdl.po
@@ -2,141 +2,140 @@
# Copyright (C) 2014
# This file is distributed under the same license as the Ishtar package.
# Étienne Loks <etienne.loks at peacefrogs net>, 2014.
-# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-02-23 08:09-0500\n"
-"Last-Translator: Valérie-Emma Leroux <emma@iggdrasil.net>\n"
+"PO-Revision-Date: 2016-11-14 05:33-0500\n"
+"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
-"X-Generator: Zanata 3.9.5\n"
+"X-Generator: Zanata 3.9.6\n"
-#: forms.py:41
+#: forms.py:38
msgid "General"
msgstr "Général"
-#: forms.py:43
+#: forms.py:40
msgid "File type"
msgstr "Type de dossier"
-#: forms.py:44 forms.py:403
+#: forms.py:41 forms.py:415
msgid "Year"
msgstr "Année"
-#: forms.py:48
+#: forms.py:45
msgid "Creation date"
msgstr "Date de création"
-#: forms.py:51
+#: forms.py:48
msgid "Reception date"
msgstr "Date de réception"
-#: forms.py:63
+#: forms.py:60
msgid "Reception date cannot be after today."
msgstr "La date de réception ne peut pas être dans le futur."
-#: forms.py:71
+#: forms.py:68
msgid "Permit type"
msgstr "Type de permis"
-#: forms.py:73
+#: forms.py:70
msgid "Saisine type"
msgstr "Type de saisine"
-#: forms.py:87
+#: forms.py:84
msgid "Planning"
msgstr "Aménagement"
-#: forms.py:90
+#: forms.py:87
msgid "Planning name"
msgstr "Nom de l'aménagement"
-#: forms.py:93 forms.py:123
+#: forms.py:90 forms.py:122
#: templates/ishtar/wizard/wizard_preventiveplanning.html:31
msgid "Towns"
msgstr "Communes"
-#: forms.py:95 forms.py:125
+#: forms.py:92 forms.py:124
#: templates/ishtar/wizard/wizard_preventiveplanning.html:41
msgid "Departments"
msgstr "Départements"
-#: forms.py:96 forms.py:126
+#: forms.py:93 forms.py:125
msgid "Locality"
msgstr "Lieu-dit"
-#: forms.py:99 forms.py:129
+#: forms.py:96 forms.py:128
msgid "Address (number/street)"
msgstr "Adresse (n° / voie)"
-#: forms.py:100 forms.py:130
+#: forms.py:97 forms.py:129
msgid "Number/street"
msgstr "N° / voie"
-#: forms.py:102 forms.py:132
+#: forms.py:99 forms.py:131
msgid "Postal code"
msgstr "Code postal"
-#: forms.py:107
+#: forms.py:104
msgid "Total surface (m2)"
msgstr "Surface totale des terrains (m2)"
-#: forms.py:112
+#: forms.py:109
msgid "Total developed surface (m2)"
msgstr "Surface totale aménagée (m2)"
-#: forms.py:119
+#: forms.py:116
msgid "Address"
msgstr "Adresse"
-#: forms.py:233 forms.py:237 forms.py:267 forms.py:270
+#: forms.py:119
+msgid "Project name"
+msgstr "Nom du projet"
+
+#: forms.py:232 forms.py:236 forms.py:273 forms.py:276
msgid "General contractor"
msgstr "Aménageur"
-#: forms.py:252 forms.py:364
+#: forms.py:254 forms.py:372
msgid "In charge"
msgstr "Responsable"
-#: forms.py:342
-msgid "Town planning service"
+#: forms.py:348 forms.py:355
+msgid "Planning service"
msgstr "Service instructeur"
-#: forms.py:346
+#: forms.py:352
msgid "File reference"
msgstr "Référence du dossier"
-#: forms.py:349
-msgid "Planning service"
-msgstr "Service instructeur"
-
-#: forms.py:383
+#: forms.py:395
msgid "Person in charge"
msgstr "Dossier suivi par"
-#: forms.py:395
+#: forms.py:407
msgid "Related file"
msgstr "Dossier lié à"
-#: forms.py:399
+#: forms.py:411
msgid "Comment"
msgstr "Commentaires"
-#: forms.py:406
+#: forms.py:418
msgid "Numeric reference"
msgstr "Référence numérique"
#: views.py:50
msgid "New file"
-msgstr "Nouveau dossier"
+msgstr "Ajouter un dossier"
#: views.py:77
msgid "File modification"
-msgstr "Modification de dossier archéologique"
+msgstr "Modifier un dossier archéologique"
#: views.py:93 views.py:97
msgid "File followed by"
diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po
index 40d36c10b..58106a58b 100644
--- a/translations/fr/archaeological_finds.po
+++ b/translations/fr/archaeological_finds.po
@@ -2,140 +2,155 @@
# Copyright (C) 2010-2015
# This file is distributed under the same license as the Ishtar package.
# Étienne Loks <etienne.loks at peacefrogs net>, 2010-2015.
-# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
-# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata
+# Valérie-Emma Leroux <emma@iggdrasil.net>, 2017. #zanata
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-09-15 10:20-0400\n"
-"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"
+"PO-Revision-Date: 2017-01-09 05:41-0500\n"
+"Last-Translator: Valérie-Emma Leroux <emma@iggdrasil.net>\n"
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-"X-Generator: Zanata 3.9.5\n"
+"X-Generator: Zanata 3.9.6\n"
-#: forms.py:50 forms.py:54 wizards.py:60
+#: forms.py:88 forms.py:92 wizards.py:64
msgid "Context record"
msgstr "Unité d'Enregistrement"
-#: forms.py:83 ishtar_menu.py:31 models.py:439 models.py:750 models.py:850
-#: models.py:1000 templates/ishtar/sheet_find.html:5
+#: forms.py:121 ishtar_menu.py:32 models_finds.py:466 models_finds.py:791
+#: models_finds.py:800 models_treatments.py:265
+#: templates/ishtar/sheet_find.html:5
msgid "Find"
msgstr "Mobilier"
-#: forms.py:94 forms.py:218 forms.py:425 models.py:127 models.py:376
+#: forms.py:132 forms.py:263 forms.py:487 models_finds.py:127
+#: models_finds.py:394
msgid "Free ID"
msgstr "ID libre"
-#: forms.py:96 models.py:425
+#: forms.py:134 models_finds.py:449
msgid "Previous ID"
msgstr "Identifiant précédent"
-#: forms.py:97 forms.py:250 forms.py:591 models.py:131 models.py:377
-#: models.py:784
+#: forms.py:135 forms.py:295 forms_treatments.py:133 models_finds.py:131
+#: models_finds.py:395 models_treatments.py:123
msgid "Description"
msgstr "Description"
-#: forms.py:100 forms.py:252 models.py:142
+#: forms.py:138 forms.py:297 models_finds.py:142
msgid "Batch/object"
msgstr "Lot/objet"
-#: forms.py:102 models.py:405
+#: forms.py:140 models_finds.py:423
msgid "Is complete?"
msgstr "Est complet ?"
-#: forms.py:105 forms.py:240 forms.py:429 models.py:50
+#: forms.py:143 forms.py:285 forms.py:491 models_finds.py:50
msgid "Material type"
msgstr "Type de matériau"
-#: forms.py:106 forms.py:244 models.py:62 models.py:381
+#: forms.py:144 forms.py:289 models_finds.py:62 models_finds.py:399
msgid "Conservatory state"
msgstr "État sanitaire"
-#: forms.py:109 models.py:383
+#: forms.py:147 models_finds.py:401
msgid "Conservatory comment"
msgstr "Commentaire relatif à la conservation"
-#: forms.py:112 models.py:102 models.py:408
+#: forms.py:150 models_finds.py:102 models_finds.py:426
msgid "Object types"
msgstr "Types d'objet"
-#: forms.py:114 forms.py:243 models.py:71
+#: forms.py:152 forms.py:288 models_finds.py:71
msgid "Preservation type"
msgstr "Type de conservation"
-#: forms.py:117 forms.py:246 models.py:410
+#: forms.py:155 forms.py:291 models_finds.py:428
msgid "Integrity / interest"
msgstr "Intégrité / intérêt"
-#: forms.py:120 forms.py:248 models.py:413
+#: forms.py:158 forms.py:293 models_finds.py:431
msgid "Remarkability"
msgstr "Remarquabilité"
-#: forms.py:122 models.py:415
+#: forms.py:161 models_finds.py:441
+msgid "Point of topographic reference"
+msgstr "Point de référence topographique"
+
+#: forms.py:164 models_finds.py:435
msgid "Length (cm)"
msgstr "Longueur (cm)"
-#: forms.py:123 models.py:416
+#: forms.py:165 models_finds.py:436
msgid "Width (cm)"
msgstr "Largeur (cm)"
-#: forms.py:124 models.py:417
+#: forms.py:166 models_finds.py:437
msgid "Height (cm)"
msgstr "Hauteur (cm)"
-#: forms.py:125 models.py:418
+#: forms.py:167 models_finds.py:438
msgid "Diameter (cm)"
msgstr "Diamètre (cm)"
-#: forms.py:126 forms.py:430 models.py:388
+#: forms.py:168 models_finds.py:439
+msgid "Thickness (cm)"
+msgstr "Épaisseur (cm)"
+
+#: forms.py:169 forms.py:492 models_finds.py:406
msgid "Volume (l)"
msgstr "Volume (l)"
-#: forms.py:127 forms.py:431 models.py:389
+#: forms.py:170 forms.py:493 models_finds.py:407
msgid "Weight (g)"
msgstr "Poids (g)"
-#: forms.py:129 models.py:419
+#: forms.py:172 models_finds.py:443
msgid "Dimensions comment"
msgstr "Commentaire concernant les dimensions"
-#: forms.py:130 forms.py:432 models.py:392
+#: forms.py:173 forms.py:494 models_finds.py:410
msgid "Find number"
msgstr "Mobilier (en nombre)"
-#: forms.py:131 models.py:421
+#: forms.py:175 models_finds.py:434
+msgid "Minimum number of individuals (MNI)"
+msgstr "Nombre minimum d'individus (NMI)"
+
+#: forms.py:176 models_finds.py:445
msgid "Mark"
msgstr "Marque"
-#: forms.py:132 forms.py:254 models.py:427
+#: forms.py:177 forms.py:299 models_finds.py:451
msgid "Check"
msgstr "Vérification"
-#: forms.py:134 models.py:429
+#: forms.py:179 models_finds.py:453
msgid "Check date"
msgstr "Date de vérification"
-#: forms.py:135 models.py:132 models.py:422 models.py:785
+#: forms.py:180 forms_treatments.py:131 forms_treatments.py:418
+#: models_finds.py:132 models_finds.py:446 models_treatments.py:122
+#: models_treatments.py:468
msgid "Comment"
msgstr "Commentaires"
-#: forms.py:138 models.py:423
+#: forms.py:183 models_finds.py:447
msgid "Comment on dating"
msgstr "Commentaire général sur les datations"
-#: forms.py:139 models.py:431
+#: forms.py:184 models_finds.py:455
msgid "Estimated value"
msgstr "Valeur estimée"
-#: forms.py:141
+#: forms.py:186 forms_treatments.py:142
msgid "Image"
msgstr "Image"
-#: forms.py:142
+#: forms.py:187 forms_treatments.py:143
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
@@ -144,631 +159,1005 @@ 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:400
+#: forms.py:226 forms.py:257 models_finds.py:418
msgid "Dating"
msgstr "Datation"
-#: forms.py:186 forms.py:238
+#: forms.py:231 forms.py:283
msgid "Period"
msgstr "Période"
-#: forms.py:187 forms.py:593 models.py:798 models.py:863 models.py:1005
-#: templates/ishtar/sheet_find.html:92 templates/ishtar/sheet_find.html:121
+#: forms.py:232 forms_treatments.py:137 forms_treatments.py:420
+#: models_finds.py:805 models_treatments.py:125 models_treatments.py:276
+#: templates/ishtar/sheet_find.html:102 templates/ishtar/sheet_find.html:142
msgid "Start date"
msgstr "Date de début"
-#: forms.py:189 forms.py:595 models.py:799 models.py:864 models.py:1006
-#: templates/ishtar/sheet_find.html:93 templates/ishtar/sheet_find.html:122
+#: forms.py:234 models_finds.py:806 models_treatments.py:277
+#: templates/ishtar/sheet_find.html:103 templates/ishtar/sheet_find.html:143
msgid "End date"
msgstr "Date de fin"
-#: forms.py:190
+#: forms.py:235
msgid "Quality"
msgstr "Qualité"
-#: forms.py:192
+#: forms.py:237
msgid "Dating type"
msgstr "Type de datation"
-#: forms.py:194
+#: forms.py:239
msgid "Precise dating"
msgstr "Datation précise"
-#: forms.py:216 models.py:150
+#: forms.py:261 models_finds.py:150
msgid "Short ID"
msgstr "ID court"
-#: forms.py:217 models.py:153
+#: forms.py:262 models_finds.py:153
msgid "Complete ID"
msgstr "ID complet"
-#: forms.py:221
+#: forms.py:266 forms_treatments.py:53 forms_treatments.py:95
+#: forms_treatments.py:268 forms_treatments.py:340 forms_treatments.py:390
+#: forms_treatments.py:473 models_treatments.py:98 models_treatments.py:440
msgid "Year"
msgstr "Année"
-#: forms.py:223
+#: forms.py:268
msgid "Operation's number (index by year)"
msgstr "Numéro de l'opération (index par année)"
-#: forms.py:226
+#: forms.py:271
msgid "Code PATRIARCHE"
msgstr "Code PATRIARCHE"
-#: forms.py:230
-msgid "Archaelogical site"
-msgstr "Entité Archéologique"
+#: forms.py:275
+msgid "Archaeological site"
+msgstr "Entité archéologique"
-#: forms.py:236
-msgid "Search within operation relations"
-msgstr "Rechercher parmi les opérations reliées"
+#: forms.py:281
+msgid "Search within related operations"
+msgstr "Rechercher parmi les opérations liées"
-#: forms.py:241 models.py:101
+#: forms.py:286 models_finds.py:101
msgid "Object type"
msgstr "Type d'objet"
-#: forms.py:255
+#: forms.py:300 forms_treatments.py:56
msgid "Has an image?"
msgstr "Dispose d'une image ?"
-#: forms.py:297 forms.py:310 views.py:66
+#: forms.py:342 forms.py:355 views.py:129
msgid "Find search"
-msgstr "Recherche de mobilier"
+msgstr "Rechercher un mobilier"
-#: forms.py:324
+#: forms.py:369 templates/ishtar/sheet_treatment.html:42
msgid "Upstream finds"
msgstr "Mobilier amont"
-#: forms.py:326 models.py:440
+#: forms.py:371 models_finds.py:467
msgid "Finds"
msgstr "Mobilier"
-#: forms.py:336
+#: forms.py:381
msgid "You should at least select one archaeological find."
msgstr "Vous devez sélectionner au moins un mobilier archéologique."
-#: forms.py:422
+#: forms.py:484
msgid "Resulting find"
msgstr "Mobilier résultant"
-#: forms.py:427
+#: forms.py:489
msgid "Precise description"
msgstr "Description précise"
-#: forms.py:442
+#: forms.py:504
msgid "Resulting finds"
msgstr "Mobiliers résultants"
-#: forms.py:447
+#: forms.py:509
msgid "Would you like to delete this find?"
-msgstr "Souhaitez vous supprimer ce mobilier ?"
+msgstr "Voulez-vous supprimer ce mobilier ?"
-#: forms.py:451
+#: forms.py:513 models_treatments.py:90
msgid "Upstream find"
msgstr "Mobilier amont"
-#: forms.py:462
+#: forms.py:526
msgid "Archaeological find search"
-msgstr "Recherche de mobilier"
+msgstr "Rechercher un mobilier"
-#: forms.py:464
+#: forms.py:528
msgid "You should select an archaeological find."
msgstr "Vous devez sélectionner du mobilier."
-#: forms.py:469
+#: forms.py:533
msgid "Year of the operation"
msgstr "Année de l'opération"
-#: forms.py:471
+#: forms.py:535
msgid "Numeric reference"
msgstr "Référence numérique"
-#: forms.py:478
-msgid "Period of the archaelogical find"
+#: forms.py:542
+msgid "Period of the archaeological find"
msgstr "Période du mobilier"
-#: forms.py:480
-msgid "Material type of the archaelogical find"
+#: forms.py:544
+msgid "Material type of the archaeological find"
msgstr "Type de matériau du mobilier"
-#: forms.py:482
-msgid "Description of the archaelogical find"
+#: forms.py:546
+msgid "Description of the archaeological find"
msgstr "Description du mobilier"
-#: forms.py:494
+#: forms.py:558 forms_treatments.py:574 forms_treatments.py:600
msgid "Documentation search"
-msgstr "Recherche de document"
+msgstr "Rechercher une documentation"
-#: forms.py:496
+#: forms.py:560 forms_treatments.py:576 forms_treatments.py:602
msgid "You should select a document."
msgstr "Vous devez sélectionner un document."
-#: forms.py:513
-msgid "Another basket already exist with this name."
-msgstr "Un autre panier existe déjà avec ce nom."
+#: forms.py:577
+msgid "Another basket already exists with this name."
+msgstr "Un autre panier existant utilise déjà ce nom."
-#: forms.py:523 ishtar_menu.py:60
+#: forms.py:587 forms.py:591 forms_treatments.py:159 ishtar_menu.py:56
msgid "Basket"
msgstr "Panier"
-#: forms.py:573
+#: forms_treatments.py:51 forms_treatments.py:91 models_treatments.py:94
+#: templates/ishtar/sheet_find.html:97 templates/ishtar/sheet_find.html:137
+msgid "Label"
+msgstr "Intitulé"
+
+#: forms_treatments.py:52 forms_treatments.py:94 models_treatments.py:96
+msgid "Other ref."
+msgstr "Autre réf."
+
+#: forms_treatments.py:54 forms_treatments.py:221 forms_treatments.py:269
+#: forms_treatments.py:332 forms_treatments.py:341 forms_treatments.py:443
+#: forms_treatments.py:474 forms_treatments.py:541 models_treatments.py:100
+#: models_treatments.py:442
+msgid "Index"
+msgstr "Index"
+
+#: forms_treatments.py:55 forms_treatments.py:100 forms_treatments.py:285
+#: forms_treatments.py:562 models_treatments.py:56 models_treatments.py:105
+#: models_treatments.py:275
+msgid "Treatment type"
+msgstr "Type de traitement"
+
+#: forms_treatments.py:67 forms_treatments.py:544 views.py:359
+msgid "Treatment search"
+msgstr "Rechercher un traitement"
+
+#: forms_treatments.py:79
msgid "Base treatment"
msgstr "Traitement de base"
-#: forms.py:578 models.py:772 models.py:787 models.py:862
-msgid "Treatment type"
-msgstr "Type de traitement"
+#: forms_treatments.py:102 models_treatments.py:107
+msgid "State"
+msgstr "État"
-#: forms.py:580 models.py:796 models.py:867
-#: templates/ishtar/sheet_find.html:90 templates/ishtar/sheet_find.html:119
-msgid "Doer"
-msgstr "Opérateur"
+#: forms_treatments.py:104
+msgid "Target"
+msgstr "Destination"
+
+#: forms_treatments.py:106 forms_treatments.py:401 models_treatments.py:115
+msgid "Responsible"
+msgstr "Responsable"
-#: forms.py:586 models.py:789 models.py:865
+#: forms_treatments.py:112 models_treatments.py:118
+msgid "Organization"
+msgstr "Organisation"
+
+#: forms_treatments.py:118 models_treatments.py:110 models_treatments.py:278
msgid "Location"
msgstr "Lieu"
-#: forms.py:607
-msgid "Leave it blank if you want to select a single item"
-msgstr "Ne pas modifier si vous voulez sélectionner un seul élément"
+#: forms_treatments.py:124
+msgid "Container (relevant for packaging)"
+msgstr "Contenant (pertinent dans le cadre du conditionnement)"
+
+#: forms_treatments.py:130 forms_treatments.py:397
+msgid "External ref."
+msgstr "Réf. externe"
+
+#: forms_treatments.py:135 models_treatments.py:124
+msgid "Goal"
+msgstr "But"
+
+#: forms_treatments.py:139 forms_treatments.py:426 models_treatments.py:126
+#: models_treatments.py:462
+msgid "Closing date"
+msgstr "Date de clôture"
+
+#: forms_treatments.py:159
+msgid "Single find"
+msgstr "Mobilier isolé"
+
+#: forms_treatments.py:193
+msgid ""
+"The container field is attached to the treatment. If no packaging treatment "
+"is done it is not relevant."
+msgstr ""
+"Le champ concernant le contenant est rattaché au traitement. Si aucun "
+"conditionnement n'est réalisé, il n'est pas pertinent."
+
+#: forms_treatments.py:198
+msgid "If a packaging treatment is done, the container field must be filled."
+msgstr ""
+"Si un conditionnement est fait, le champ du contenant doit être rempli."
+
+#: forms_treatments.py:202
+msgid "A responsible or an organization must be defined."
+msgstr "Un responsable ou une organisation doit être défini."
+
+#: forms_treatments.py:240
+msgid "Another treatment with this index exists for {}."
+msgstr "Un autre traitement avec cet index existe pour {}."
+
+#: forms_treatments.py:246 models_treatments.py:103
+msgid "Associated request"
+msgstr "Demande associée"
+
+#: forms_treatments.py:250 forms_treatments.py:381 ishtar_menu.py:107
+#: models_treatments.py:473 models_treatments.py:495 models_treatments.py:556
+#: wizards.py:183 templates/ishtar/sheet_treatmentfile.html:5
+msgid "Treatment request"
+msgstr "Demande de traitement"
+
+#: forms_treatments.py:259
+msgid ""
+"Are you sure you want to delete this treatment? All changes made to the "
+"associated finds since this treatment record will be lost!"
+msgstr ""
+"Êtes-vous sûr de vouloir supprimer ce traitement ? Toutes les modifications "
+"sur le mobilier associé réalisées depuis l'enregistrement de ce traitement "
+"seront perdues !"
+
+#: forms_treatments.py:262
+msgid "Would you like to delete this treatment?"
+msgstr "Voulez-vous supprimer ce traitement ?"
+
+#: forms_treatments.py:270 forms_treatments.py:318 forms_treatments.py:475
+#: forms_treatments.py:526
+msgid "Act type"
+msgstr "Type d'acte"
+
+#: forms_treatments.py:271 forms_treatments.py:476
+msgid "Indexed?"
+msgstr "Indexé ?"
+
+#: forms_treatments.py:272 forms_treatments.py:477 models_finds.py:120
+msgid "Object"
+msgstr "Objet"
+
+#: forms_treatments.py:276 forms_treatments.py:481
+msgid "Signature date after"
+msgstr "Date de signature après"
-#: forms.py:614
-msgid "This treatment type is not available."
-msgstr "Ce type de traitement n'est pas disponible"
+#: forms_treatments.py:278 forms_treatments.py:483
+msgid "Signature date before"
+msgstr "Date de signature avant"
-#: forms.py:618
-msgid "This treatment needs a basket."
-msgstr "Ce traitement nécessite de sélectionner un panier."
+#: forms_treatments.py:280 forms_treatments.py:557
+msgid "Treatment name"
+msgstr "Nom du traitement"
-#: ishtar_menu.py:35 ishtar_menu.py:83
+#: forms_treatments.py:281 forms_treatments.py:558
+msgid "Treatment year"
+msgstr "Année du traitement"
+
+#: forms_treatments.py:282 forms_treatments.py:559
+msgid "Treatment index"
+msgstr "Index du traitement"
+
+#: forms_treatments.py:284 forms_treatments.py:561
+msgid "Treatment internal reference"
+msgstr "Référence interne du traitement"
+
+#: forms_treatments.py:288 forms_treatments.py:495
+msgid "Modified by"
+msgstr "Modifié par"
+
+#: forms_treatments.py:338 forms_treatments.py:388 models_treatments.py:447
+msgid "Name"
+msgstr "Nom"
+
+#: forms_treatments.py:339 forms_treatments.py:395
+msgid "Internal ref."
+msgstr "Réf. interne"
+
+#: forms_treatments.py:342 forms_treatments.py:399
+#: templates/ishtar/sheet_find.html:98 templates/ishtar/sheet_find.html:138
+#: templates/ishtar/sheet_find.html:216
+msgid "Type"
+msgstr "Type"
+
+#: forms_treatments.py:344
+msgid "In charge"
+msgstr "Responsable"
+
+#: forms_treatments.py:350 forms_treatments.py:407 models_treatments.py:456
+#: templates/ishtar/sheet_treatmentfile.html:31
+msgid "Applicant"
+msgstr "Demandeur"
+
+#: forms_treatments.py:356 forms_treatments.py:413 models_treatments.py:460
+#: templates/ishtar/sheet_treatmentfile.html:38
+msgid "Applicant organisation"
+msgstr "Organisation du demandeur"
+
+#: forms_treatments.py:369 forms_treatments.py:549 views.py:463
+msgid "Treatment request search"
+msgstr "Rechercher une demande de traitement"
+
+#: forms_treatments.py:423 models_treatments.py:466
+msgid "Reception date"
+msgstr "Date de réception"
+
+#: forms_treatments.py:462
+msgid "Another treatment request with this index exists for {}."
+msgstr "Une autre demande de traitement avec cet index existe pour {}."
+
+#: forms_treatments.py:468
+msgid "Are you sure you want to delete this treatment request?"
+msgstr "Êtes-vous sûr de vouloir supprimer cette demande de traitement ? "
+
+#: forms_treatments.py:469
+msgid "Would you like to delete this treatment request?"
+msgstr "Voulez-vous supprimer cette demande de traitement ?"
+
+#: forms_treatments.py:485 forms_treatments.py:581
+msgid "Treatment request name"
+msgstr "Nom du dossier de traitement"
+
+#: forms_treatments.py:487 forms_treatments.py:583
+msgid "Treatment request year"
+msgstr "Année du dossier de traitement"
+
+#: forms_treatments.py:489 forms_treatments.py:585
+msgid "Treatment request index"
+msgstr "Index de la demande de traitement"
+
+#: forms_treatments.py:491 forms_treatments.py:587
+msgid "Treatment request internal reference"
+msgstr "Référence interne de la demande de traitement"
+
+#: forms_treatments.py:492 forms_treatments.py:588 models_treatments.py:425
+#: models_treatments.py:449
+msgid "Treatment request type"
+msgstr "Type de demande de traitement"
+
+#: forms_treatments.py:546
+msgid "You should select a treatment."
+msgstr "Vous devez sélectionner un traitement."
+
+#: forms_treatments.py:552
+msgid "You should select a treatment request."
+msgstr "Vous devez sélectionner une demande de traitement."
+
+#: ishtar_menu.py:36 ishtar_menu.py:79 ishtar_menu.py:111 ishtar_menu.py:134
+#: ishtar_menu.py:158 ishtar_menu.py:190 ishtar_menu.py:214 ishtar_menu.py:238
msgid "Search"
msgstr "Recherche"
-#: ishtar_menu.py:40 ishtar_menu.py:63 ishtar_menu.py:88
+#: ishtar_menu.py:41 ishtar_menu.py:59 ishtar_menu.py:84 ishtar_menu.py:116
+#: ishtar_menu.py:138 ishtar_menu.py:163 ishtar_menu.py:195 ishtar_menu.py:218
+#: ishtar_menu.py:243
msgid "Creation"
msgstr "Ajout"
-#: ishtar_menu.py:45 ishtar_menu.py:93
+#: ishtar_menu.py:46 ishtar_menu.py:89 ishtar_menu.py:121 ishtar_menu.py:142
+#: ishtar_menu.py:168 ishtar_menu.py:200 ishtar_menu.py:223 ishtar_menu.py:248
msgid "Modification"
msgstr "Modification"
-#: ishtar_menu.py:55 ishtar_menu.py:74 ishtar_menu.py:98
+#: ishtar_menu.py:51 ishtar_menu.py:70 ishtar_menu.py:94 ishtar_menu.py:126
+#: ishtar_menu.py:145 ishtar_menu.py:173 ishtar_menu.py:205 ishtar_menu.py:226
+#: ishtar_menu.py:253
msgid "Deletion"
msgstr "Suppression"
-#: ishtar_menu.py:68
+#: ishtar_menu.py:64
msgid "Manage items"
-msgstr "Gérer les éléments"
+msgstr "Gestion des éléments"
-#: ishtar_menu.py:80
+#: ishtar_menu.py:76
msgid "Documentation"
msgstr "Documentation"
-#: models.py:43
+#: ishtar_menu.py:131 ishtar_menu.py:211 models_finds.py:802
+msgid "Administrative act"
+msgstr "Acte administratif"
+
+#: ishtar_menu.py:149 ishtar_menu.py:230 templates/ishtar/sheet_find.html:211
+#: templates/ishtar/sheet_find.html:213
+msgid "Documents"
+msgstr "Documents"
+
+#: ishtar_menu.py:155 ishtar_menu.py:235
+msgid "Source"
+msgstr "Documentation"
+
+#: ishtar_menu.py:183 models_treatments.py:135 models_treatments.py:267
+#: models_treatments.py:540 templates/ishtar/sheet_treatment.html:5
+msgid "Treatment"
+msgstr "Traitement"
+
+#: ishtar_menu.py:187
+msgid "Simple treatments"
+msgstr "Traitements simples"
+
+#: models_finds.py:43
msgid "Code"
msgstr "Code"
-#: models.py:44
+#: models_finds.py:44
msgid "Recommendation"
msgstr "Recommandation"
-#: models.py:47
+#: models_finds.py:47
msgid "Parent material"
msgstr "Matériau parent"
-#: models.py:51 models.py:379
+#: models_finds.py:51 models_finds.py:397
msgid "Material types"
msgstr "Types de matériau"
-#: models.py:59
+#: models_finds.py:59
msgid "Parent conservatory state"
msgstr "État sanitaire - parent"
-#: models.py:63
+#: models_finds.py:63
msgid "Conservatory states"
msgstr "États sanitaires"
-#: models.py:72
+#: models_finds.py:72
msgid "Preservation types"
msgstr "Types de conservation"
-#: models.py:80
+#: models_finds.py:80
msgid "Integrity / interest type"
msgstr "Type d'intégrité / intérêt"
-#: models.py:81
+#: models_finds.py:81
msgid "Integrity / interest types"
-msgstr "Types d'intégrité / intérêts"
+msgstr "Types d'intégrité / intérêt"
-#: models.py:89
+#: models_finds.py:89
msgid "Remarkability type"
msgstr "Type de remarquabilité"
-#: models.py:90
+#: models_finds.py:90
msgid "Remarkability types"
msgstr "Types de remarquabilité"
-#: models.py:98
+#: models_finds.py:98
msgid "Parent"
msgstr "Parent"
-#: models.py:119
+#: models_finds.py:119
msgid "Unknow"
msgstr "Inconnu"
-#: models.py:120
-msgid "Object"
-msgstr "Objet"
-
-#: models.py:121
+#: models_finds.py:121
msgid "Batch"
msgstr "Lot"
-#: models.py:128 models.py:372 models.py:780
+#: models_finds.py:128 models_finds.py:390 models_treatments.py:120
+#: models_treatments.py:445
msgid "External ID"
msgstr "ID externe"
-#: models.py:130 models.py:374
+#: models_finds.py:130 models_finds.py:392
msgid "External ID is set automatically"
msgstr "L'identifiant externe est configuré automatiquement"
-#: models.py:134
+#: models_finds.py:134
msgid "Topographic localisation"
msgstr "Localisation topogaphique"
-#: models.py:135
+#: models_finds.py:135
msgid "Special interest"
msgstr "Intérêt spécifique"
-#: models.py:139
+#: models_finds.py:139
msgid "Context Record"
msgstr "Unité d'Enregistrement"
-#: models.py:140
+#: models_finds.py:140
msgid "Discovery date"
msgstr "Date de découverte"
-#: models.py:145
+#: models_finds.py:145
msgid "Material index"
msgstr "Index matériel"
-#: models.py:146
+#: models_finds.py:146
msgid "Point"
msgstr "Point"
-#: models.py:147
+#: models_finds.py:147
msgid "Line"
msgstr "Ligne"
-#: models.py:148
+#: models_finds.py:148
msgid "Polygon"
msgstr "Polygon"
-#: models.py:151 models.py:154
+#: models_finds.py:151 models_finds.py:154
msgid "Cached value - do not edit"
msgstr "Valeur en cache - ne pas éditer"
-#: models.py:159 models.py:370
+#: models_finds.py:159 models_finds.py:388
msgid "Base find"
msgstr "Mobilier de base"
-#: models.py:160
+#: models_finds.py:160
msgid "Base finds"
msgstr "Mobilier de base"
-#: models.py:162
+#: models_finds.py:162
msgid "Can view all Base finds"
msgstr "Peut voir tout le Mobilier de base"
-#: models.py:163
+#: models_finds.py:163
msgid "Can view own Base find"
msgstr "Peut voir son propre Mobilier de base"
-#: models.py:164
+#: models_finds.py:164
msgid "Can add own Base find"
msgstr "Peut ajouter son propre Mobilier de base"
-#: models.py:165
+#: models_finds.py:165
msgid "Can change own Base find"
msgstr "Peut modifier son propre Mobilier de base"
-#: models.py:166
+#: models_finds.py:166
msgid "Can delete own Base find"
msgstr "Peut supprimer son propre Mobilier de base"
-#: models.py:275
+#: models_finds.py:276
msgid "g"
msgstr "g"
-#: models.py:276
+#: models_finds.py:277
msgid "kg"
msgstr "kg"
-#: models.py:278
+#: models_finds.py:279
msgid "Not checked"
msgstr "Non vérifié"
-#: models.py:279
+#: models_finds.py:280
msgid "Checked but incorrect"
msgstr "Vérifié mais incorrect"
-#: models.py:280
+#: models_finds.py:281
msgid "Checked and correct"
msgstr "Vérifié et correct"
-#: models.py:320
+#: models_finds.py:315
+msgid "Periods"
+msgstr "Périodes"
+
+#: models_finds.py:316 models_finds.py:421 models_treatments.py:127
+#: models_treatments.py:279 templates/ishtar/sheet_find.html:101
+#: templates/ishtar/sheet_find.html:141
+msgid "Container"
+msgstr "Contenant"
+
+#: models_finds.py:326
msgid "Base find - Short ID"
msgstr "Mobilier de base - ID court"
-#: models.py:321
+#: models_finds.py:327
msgid "Base find - Complete ID"
msgstr "Mobilier de base - ID complet"
-#: models.py:322
+#: models_finds.py:328
msgid "Base find - Comment"
msgstr "Mobilier de base - Commentaires"
-#: models.py:323
+#: models_finds.py:329
msgid "Base find - Description"
msgstr "Mobilier de base - Description"
-#: models.py:324
+#: models_finds.py:330
msgid "Base find - Topographic localisation"
msgstr "Mobilier de base - Localisation topographique"
-#: models.py:326
+#: models_finds.py:332
msgid "Base find - Special interest"
msgstr "Mobilier de base - Intérêt spécifique"
-#: models.py:327
+#: models_finds.py:333
msgid "Base find - Discovery date"
msgstr "Mobilier de base - Date de découverte"
-#: models.py:375 models.py:856
+#: models_finds.py:393 models_treatments.py:40 models_treatments.py:271
msgid "Order"
msgstr "Ordre"
-#: models.py:386
+#: models_finds.py:404
msgid "Type of preservation to consider"
msgstr "Mesures de conservation à envisager"
-#: models.py:390
+#: models_finds.py:408
msgid "Weight unit"
msgstr "Unité de poids"
-#: models.py:396 templates/ishtar/sheet_find.html:83
+#: models_finds.py:414 templates/ishtar/sheet_find.html:90
msgid "Upstream treatment"
msgstr "Traitement amont"
-#: models.py:399 templates/ishtar/sheet_find.html:112
+#: models_finds.py:417 templates/ishtar/sheet_find.html:130
msgid "Downstream treatment"
msgstr "Traitement aval"
-#: models.py:403 models.py:782 models.py:866
-#: templates/ishtar/sheet_find.html:91 templates/ishtar/sheet_find.html:120
-msgid "Container"
-msgstr "Contenant"
+#: models_finds.py:458
+msgid "Collection"
+msgstr "Collection"
-#: models.py:433
+#: models_finds.py:460 models_treatments.py:131 models_treatments.py:469
msgid "Cached name"
msgstr "Nom en cache"
-#: models.py:442
+#: models_finds.py:469
msgid "Can view all Finds"
msgstr "Peut voir tout le Mobilier"
-#: models.py:443
+#: models_finds.py:470
msgid "Can view own Find"
msgstr "Peut voir son propre Mobilier"
-#: models.py:444
+#: models_finds.py:471
msgid "Can add own Find"
msgstr "Peut ajouter son propre Mobilier"
-#: models.py:445
+#: models_finds.py:472
msgid "Can change own Find"
msgstr "Peut modifier son propre Mobilier"
-#: models.py:446
+#: models_finds.py:473
msgid "Can delete own Find"
msgstr "Peut supprimer son propre Mobilier"
-#: models.py:452
+#: models_finds.py:479
msgid "FIND"
msgstr "MOBILIER"
-#: models.py:748
+#: models_finds.py:789
msgid "Find documentation"
msgstr "Documentation de mobilier"
-#: models.py:749
+#: models_finds.py:790
msgid "Find documentations"
msgstr "Documentations de mobilier"
-#: models.py:759
+#: models_finds.py:803
+msgid "Person"
+msgstr "Individu"
+
+#: models_finds.py:809
+msgid "Property"
+msgstr "Propriété"
+
+#: models_finds.py:810
+msgid "Properties"
+msgstr "Propriétés"
+
+#: models_treatments.py:41
+msgid "Parent type"
+msgstr "Type parent"
+
+#: models_treatments.py:43
msgid "Virtual"
msgstr "Virtuel"
-#: models.py:761
+#: models_treatments.py:45
msgid "Upstream is many"
-msgstr "Les éléments amonts sont multiple"
+msgstr "Les éléments amont sont multiples"
-#: models.py:763
+#: models_treatments.py:47
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."
+"Cochez cela si, pour ce traitement, à partir de plusieurs éléments vous en "
+"obtenez un seul."
-#: models.py:766
+#: models_treatments.py:50
msgid "Downstream is many"
-msgstr "Les éléments avals sont multiple"
+msgstr "Les éléments aval sont multiples"
-#: models.py:768
+#: models_treatments.py:52
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."
+"Cochez cela si, pour ce traitement, à partir d'un seul élément vous en "
+"obtenez plusieurs."
-#: models.py:773
+#: models_treatments.py:57
msgid "Treatment types"
msgstr "Types de traitement"
-#: models.py:791
+#: models_treatments.py:65
+msgid "Treatment state type"
+msgstr "Type d'état de traitement"
+
+#: models_treatments.py:66
+msgid "Treatment state types"
+msgstr "Types d'état de traitement"
+
+#: models_treatments.py:89
+msgid "Downstream find"
+msgstr "Mobilier aval"
+
+#: models_treatments.py:112
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:793
-msgid "Other location"
-msgstr "Autre lieu"
+#: models_treatments.py:129
+msgid "Target a basket"
+msgstr "Cibler un panier"
-#: models.py:803 models.py:852 models.py:992
-msgid "Treatment"
-msgstr "Traitement"
-
-#: models.py:804 templates/ishtar/sheet_find.html:80
+#: models_treatments.py:136 templates/ishtar/sheet_find.html:87
+#: templates/ishtar/sheet_treatmentfile.html:45
msgid "Treatments"
msgstr "Traitements"
-#: models.py:806
+#: models_treatments.py:139
msgid "Can view all Treatments"
msgstr "Peut voir tous les Traitements"
-#: models.py:807
+#: models_treatments.py:140
msgid "Can view own Treatment"
msgstr "Peut voir son propre Traitement"
-#: models.py:808
+#: models_treatments.py:141
msgid "Can add own Treatment"
msgstr "Peut ajouter son propre Traitement"
-#: models.py:809
+#: models_treatments.py:142
msgid "Can change own Treatment"
msgstr "Peut modifier son propre Traitement"
-#: models.py:810
+#: models_treatments.py:143
msgid "Can delete own Treatment"
msgstr "Peut supprimer son propre Traitement"
-#: models.py:816
-msgid "by"
-msgstr "par"
+#: models_treatments.py:155
+msgid "TREATMENT"
+msgstr "TRAITEMENT"
+
+#: models_treatments.py:280 templates/ishtar/sheet_find.html:100
+#: templates/ishtar/sheet_find.html:140
+msgid "Doer"
+msgstr "Opérateur"
-#: models.py:868 models.py:869 templates/ishtar/sheet_find.html:89
-#: templates/ishtar/sheet_find.html:118
+#: models_treatments.py:281 models_treatments.py:282
+#: templates/ishtar/sheet_find.html:99 templates/ishtar/sheet_find.html:139
msgid "Related finds"
msgstr "Mobilier associé"
-#: models.py:978
+#: models_treatments.py:414
msgid "Is upstream"
-msgstr "Est amont"
+msgstr "Est en amont"
-#: models.py:989
-msgid "Treatment documentation"
-msgstr "Documentation d'un traitement"
+#: models_treatments.py:426
+msgid "Treatment request types"
+msgstr "Types de demande de traitement"
-#: models.py:990
-msgid "Treament documentations"
-msgstr "Documentations des traitements"
+#: models_treatments.py:443
+msgid "Internal reference"
+msgstr "Référence interne"
-#: models.py:1002
-msgid "Administrative act"
-msgstr "Acte administratif"
+#: models_treatments.py:452
+msgid "Person in charge"
+msgstr "Personne responsable"
-#: models.py:1003
-msgid "Person"
-msgstr "Individu"
+#: models_treatments.py:464
+msgid "Creation date"
+msgstr "Date de création"
-#: models.py:1009
-msgid "Property"
-msgstr "Propriété"
+#: models_treatments.py:474
+msgid "Treatment requests"
+msgstr "Demandes de traitement"
-#: models.py:1010
-msgid "Properties"
-msgstr "Propriétés"
+#: models_treatments.py:478
+msgid "Can view all Treatment requests"
+msgstr "Peut voir toutes les Demandes de traitement"
+
+#: models_treatments.py:480
+msgid "Can view own Treatment request"
+msgstr "Peut voir sa propre Demande de traitement"
+
+#: models_treatments.py:482
+msgid "Can add own Treatment request"
+msgstr "Peut ajouter sa propre Demande de traitement"
+
+#: models_treatments.py:484
+msgid "Can change own Treatment request"
+msgstr "Peut modifier sa propre Demande de traitement"
+
+#: models_treatments.py:486
+msgid "Can delete own Treatment request"
+msgstr "Peut supprimer sa propre Demande de traitement"
+
+#: models_treatments.py:546
+msgid "Treatment documentation"
+msgstr "Documentation de traitement"
+
+#: models_treatments.py:547
+msgid "Treament documentations"
+msgstr "Documentations de traitement"
+
+#: models_treatments.py:563
+msgid "Treatment request documentation"
+msgstr "Documentation de demande de traitement"
+
+#: models_treatments.py:564
+msgid "Treatment request documentations"
+msgstr "Documentations de demande de traitement"
-#: views.py:61
+#: views.py:124
msgid "New find"
-msgstr "Nouveau mobilier"
+msgstr "Ajouter un mobilier"
-#: views.py:75
+#: views.py:138
msgid "Find modification"
-msgstr "Modification de mobilier"
+msgstr "Modifier un mobilier"
-#: views.py:90
+#: views.py:153
msgid "Find deletion"
-msgstr "Suppression de mobilier"
+msgstr "Supprimer un mobilier"
-#: views.py:95
+#: views.py:158
msgid "Find: source search"
-msgstr "Mobilier : recherche de documentation associée"
+msgstr "Mobilier : rechercher une documentation associée"
-#: views.py:103
+#: views.py:166
msgid "Find: new source"
-msgstr "Mobilier : nouvelle documentation associée"
+msgstr "Mobilier : ajouter une documentation associée"
-#: views.py:111
+#: views.py:174
msgid "Find: source modification"
-msgstr "Mobilier : modification de documentation associée"
+msgstr "Mobilier : modifier une documentation associée"
-#: views.py:126
+#: views.py:189
msgid "Find: source deletion"
-msgstr "Mobilier : suppression de mobilier associé"
+msgstr "Mobilier : supprimer un mobilier associé"
-#: views.py:140
+#: views.py:203
msgid "New basket"
-msgstr "Nouveau panier"
+msgstr "Ajouter un panier"
-#: views.py:159
+#: views.py:222
msgid "Manage items in basket"
msgstr "Gérer les éléments dans un panier"
-#: views.py:179
+#: views.py:242
msgid "Manage basket"
msgstr "Gérer un panier"
-#: views.py:267
+#: views.py:330
msgid "Delete basket"
msgstr "Supprimer un panier"
-#: views.py:303
+#: views.py:380
msgid "New treatment"
-msgstr "Nouveau traitement"
+msgstr "Ajouter un traitement"
+
+#: views.py:388 views.py:480
+msgid "Modify"
+msgstr "Modifier"
+
+#: views.py:405
+msgid "Treatment deletion"
+msgstr "Supprimer un traitement"
+
+#: views.py:412
+msgid "Treatment: search administrative act"
+msgstr "Traitement : rechercher un acte administratif"
+
+#: views.py:421
+msgid "Treatment: new administrative act"
+msgstr "Traitement : ajouter un acte administratif"
+
+#: views.py:431
+msgid "Treatment: administrative act modification"
+msgstr "Traitement : modifier un acte administratif"
+
+#: views.py:440
+msgid "Treatment: administrative act deletion"
+msgstr "Traitement : supprimer un acte administratif"
-#: wizards.py:59
+#: views.py:473
+msgid "New treatment request"
+msgstr "Ajouter une demande de traitement"
+
+#: views.py:496
+msgid "Treatment request deletion"
+msgstr "Supprimer une demande de traitement"
+
+#: views.py:503
+msgid "Treatment request: search administrative act"
+msgstr "Demande de traitement : rechercher un acte administratif"
+
+#: views.py:513
+msgid "Treatment request: new administrative act"
+msgstr "Demande de traitement : ajouter un acte administratif"
+
+#: views.py:523
+msgid "Treatment request: administrative act modification"
+msgstr "Demande de traitement : modifier un acte administratif"
+
+#: views.py:532
+msgid "Treatment request: administrative act deletion"
+msgstr "Demande de traitement : supprimer un acte administratif"
+
+#: views.py:558
+msgid "Treatment: source search"
+msgstr "Traitement : rechercher une documentation associée"
+
+#: views.py:573
+msgid "Treatment: source modification"
+msgstr "Traitement : modifier une documentation associée"
+
+#: views.py:588
+msgid "Treatment: source deletion"
+msgstr "Traitement : supprimer une documentation associée"
+
+#: views.py:601
+msgid "Treatment request: source search"
+msgstr "Demande de traitement : rechercher une documentation associée"
+
+#: views.py:617
+msgid "Treatment request: source modification"
+msgstr "Demande de traitement : modifier une documentation associée"
+
+#: views.py:635
+msgid "Treatment request: source deletion"
+msgstr "Demande de traitement : supprimer une documentation associée"
+
+#: wizards.py:63 wizards.py:195
msgid "Operation"
msgstr "Opération"
-#: templates/ishtar/sheet_find.html:88 templates/ishtar/sheet_find.html:117
-#: templates/ishtar/sheet_find.html:187
-msgid "Type"
-msgstr "Type"
+#: templates/ishtar/sheet_find.html:79
+msgid "Warehouse"
+msgstr "Dépôt"
-#: templates/ishtar/sheet_find.html:108
+#: templates/ishtar/sheet_find.html:96 templates/ishtar/sheet_find.html:136
+msgid "Year - index"
+msgstr "Année - index"
+
+#: templates/ishtar/sheet_find.html:126
msgid "Export as CSV"
msgstr "Export en CSV"
-#: templates/ishtar/sheet_find.html:108 templates/ishtar/sheet_find.html:138
+#: templates/ishtar/sheet_find.html:126 templates/ishtar/sheet_find.html:167
msgid "CSV"
msgstr "CSV"
-#: templates/ishtar/sheet_find.html:143
+#: templates/ishtar/sheet_find.html:172
msgid "Associated base finds"
msgstr "Mobilier de base associé"
-#: templates/ishtar/sheet_find.html:182 templates/ishtar/sheet_find.html:184
-msgid "Documents"
-msgstr "Documents"
-
-#: templates/ishtar/sheet_find.html:186
+#: templates/ishtar/sheet_find.html:215
msgid "Title"
msgstr "Titre"
-#: templates/ishtar/sheet_find.html:188
+#: templates/ishtar/sheet_find.html:217
msgid "Authors"
msgstr "Auteurs"
-#: templates/ishtar/sheet_find.html:189
+#: templates/ishtar/sheet_find.html:218
msgid "Link"
msgstr "Lien"
@@ -778,4 +1167,36 @@ msgstr "Panier de mobilier"
#: templates/ishtar/sheet_findsource.html:4
msgid "Find source"
-msgstr "Documentation associé au mobilier"
+msgstr "Documentation associée au mobilier"
+
+#: templates/ishtar/sheet_treatment.html:20
+msgctxt "Treatment"
+msgid "Closed"
+msgstr "Clôturé"
+
+#: templates/ishtar/sheet_treatment.html:22
+msgctxt "Treatment"
+msgid "Active"
+msgstr "Actif"
+
+#: templates/ishtar/sheet_treatment.html:47
+msgid "Downstream finds"
+msgstr "Mobilier aval"
+
+#: templates/ishtar/sheet_treatmentfile.html:16
+msgctxt "Treatment request"
+msgid "Closed"
+msgstr "Clôturée"
+
+#: templates/ishtar/sheet_treatmentfile.html:18
+msgctxt "Treatment request"
+msgid "Active"
+msgstr "Active"
+
+#: templates/ishtar/sheet_treatmentfilesource.html:4
+msgid "Treatment request source"
+msgstr "Documentation de demande de traitement"
+
+#: templates/ishtar/sheet_treatmentsource.html:4
+msgid "Treatment source"
+msgstr "Documentation de traitement"
diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po
index d8c54d684..91f73bdd2 100644
--- a/translations/fr/archaeological_operations.po
+++ b/translations/fr/archaeological_operations.po
@@ -5,25 +5,26 @@
# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata
+# Valérie-Emma Leroux <emma@iggdrasil.net>, 2017. #zanata
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-10-17 01:17-0400\n"
-"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"
+"PO-Revision-Date: 2017-01-09 05:30-0500\n"
+"Last-Translator: Valérie-Emma Leroux <emma@iggdrasil.net>\n"
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-"X-Generator: Zanata 3.9.5\n"
+"X-Generator: Zanata 3.9.6\n"
-#: forms.py:67 forms.py:369 forms.py:1004 forms.py:1026 forms.py:1030
-#: models.py:1168 templates/ishtar/sheet_operation.html:144
+#: forms.py:69 forms.py:371 forms.py:1009 forms.py:1031 forms.py:1035
+#: models.py:1213 templates/ishtar/sheet_operation.html:144
#: templates/ishtar/blocks/window_tables/parcels.html:10
msgid "Parcels"
msgstr "Parcelles"
-#: forms.py:70 forms.py:203 forms.py:980 models.py:1154
+#: forms.py:72 forms.py:205 forms.py:985 models.py:1199
#: templates/ishtar/blocks/window_tables/parcels.html:7
#: templates/ishtar/dashboards/dashboard_operation.html:432
#: templates/ishtar/dashboards/dashboard_operation.html:446
@@ -32,96 +33,96 @@ msgstr "Parcelles"
msgid "Town"
msgstr "Commune"
-#: forms.py:72 forms.py:459 forms.py:755 forms.py:1250 models.py:249
-#: models.py:971 models.py:1152
+#: forms.py:74 forms.py:455 forms.py:752 forms.py:1255 models.py:271
+#: models.py:1005 models.py:1197
#: templates/ishtar/blocks/window_tables/parcels.html:8
msgid "Year"
msgstr "Année"
-#: forms.py:75 models.py:1155
+#: forms.py:77 models.py:1200
#: templates/ishtar/blocks/window_tables/parcels.html:9
msgid "Section"
msgstr "Section"
-#: forms.py:78 models.py:1157
+#: forms.py:80 models.py:1202
msgid "Parcel number"
msgstr "Numéro de parcelle"
-#: forms.py:80 models.py:1159 models.py:1176 models.py:1225
+#: forms.py:82 models.py:1204 models.py:1221 models.py:1270
msgid "Public domain"
msgstr "Domaine public"
-#: forms.py:124
+#: forms.py:126
msgid "Town section is required."
-msgstr "Vous devez renseigner le secteur."
+msgstr "Vous devez renseigner la section."
-#: forms.py:160
+#: forms.py:162
msgid "public domain"
msgstr "domaine public"
-#: forms.py:167
+#: forms.py:169
msgid "Current parcels"
msgstr "Parcelles actuelles"
-#: forms.py:169
+#: forms.py:171
msgid "Deleted parcels"
msgstr "Parcelles supprimées"
-#: forms.py:206
+#: forms.py:208
msgid "Full text input"
msgstr "Saisie libre"
-#: forms.py:208
+#: forms.py:210
msgid "example: \"2013: XD:1 to 13,24,33 to 39, YD:24\" or \"AB:24,AC:42\""
msgstr "exemple : \"2013: XD:1 à 13,24,33 à 39, YD:24\" ou \"AB:24,AC:42\""
-#: forms.py:363
+#: forms.py:365
msgid "There are identical parcels."
msgstr "Il y a des parcelles identiques."
-#: forms.py:378
+#: forms.py:380
msgid "Relation type"
msgstr "Type de relation"
-#: forms.py:381 ishtar_menu.py:30 models.py:344 models.py:804 models.py:834
-#: models.py:862 models.py:963 models.py:1151 wizards.py:339 wizards.py:350
+#: forms.py:383 ishtar_menu.py:30 models.py:366 models.py:826 models.py:856
+#: models.py:884 models.py:987 models.py:1196 wizards.py:344 wizards.py:355
#: templates/ishtar/sheet_operation.html:4
msgid "Operation"
msgstr "Opération"
-#: forms.py:401
+#: forms.py:403
msgid ":"
msgstr ": "
-#: forms.py:409 forms.py:608 forms.py:1215
+#: forms.py:411 forms.py:605 forms.py:1220
msgid "You should select an operation."
msgstr "Vous devez sélectionner une opération."
-#: forms.py:413
+#: forms.py:415
msgid "You should select a relation type."
msgstr "Vous devez sélectionner un type de relation."
-#: forms.py:443
+#: forms.py:445
msgid "Current relations"
msgstr "Relations actuelles"
-#: forms.py:445
+#: forms.py:447
msgid "Deleted relations"
msgstr "Relations supprimées"
-#: forms.py:449 templates/ishtar/sheet_operation.html:83
+#: forms.py:451 templates/ishtar/sheet_operation.html:83
msgid "Relations"
msgstr "Relations"
-#: forms.py:460 forms.py:1221 models.py:250
+#: forms.py:456 forms.py:1226 models.py:272
msgid "Numeric reference"
msgstr "Identifiant numérique"
-#: forms.py:466 forms.py:1261
+#: forms.py:462 forms.py:1266
msgid "Parcel (section/number/public domain)"
-msgstr "Parcelle (section/nombre/domaine public)"
+msgstr "Parcelle (section/numéro/domaine public)"
-#: forms.py:469 forms.py:1264 models.py:805
+#: forms.py:465 forms.py:1269 models.py:827
#: templates/ishtar/dashboards/dashboard_operation.html:390
#: templates/ishtar/dashboards/dashboard_operation.html:411
#: templates/ishtar/dashboards/dashboard_operation.html:643
@@ -130,247 +131,248 @@ msgstr "Parcelle (section/nombre/domaine public)"
msgid "Department"
msgstr "Département"
-#: forms.py:470 forms.py:1092 models.py:85
+#: forms.py:466 forms.py:1097 models.py:85
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8
msgid "Name"
msgstr "Nom"
-#: forms.py:472 forms.py:675 forms.py:753 forms.py:1227 models.py:257
+#: forms.py:468 forms.py:672 forms.py:750 forms.py:1232 models.py:279
msgid "Operation type"
msgstr "Type d'opération"
-#: forms.py:474
+#: forms.py:470
msgid "Is open?"
msgstr "Est ouvert ?"
-#: forms.py:483 forms.py:782 models.py:246
+#: forms.py:478 forms.py:782 models.py:268
msgid "In charge"
msgstr "Responsable"
-#: forms.py:490 models.py:957
+#: forms.py:485 models.py:981
msgid "Scientist in charge"
msgstr "Responsable scientifique"
-#: forms.py:492 forms.py:677 forms.py:773 models.py:244
+#: forms.py:487 forms.py:674 forms.py:772 models.py:266
msgid "Operator"
msgstr "Opérateur"
-#: forms.py:499 forms.py:1097 models.py:89 models.py:259
+#: forms.py:496 forms.py:1102 models.py:89 models.py:281
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:10
msgid "Remains"
msgstr "Vestiges"
-#: forms.py:500 forms.py:1075 forms.py:1094 models.py:87 models.py:265
+#: forms.py:497 forms.py:1080 forms.py:1099 models.py:87 models.py:287
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9
msgid "Periods"
msgstr "Périodes"
-#: forms.py:501
+#: forms.py:498
msgid "Started before"
msgstr "Commencé avant"
-#: forms.py:503
+#: forms.py:500
msgid "Started after"
msgstr "Commencé après"
-#: forms.py:505
+#: forms.py:502
msgid "Ended before"
msgstr "Terminé avant"
-#: forms.py:507
+#: forms.py:504
msgid "Ended after"
msgstr "Terminé après"
-#: forms.py:510
+#: forms.py:507
msgid "Search within relations"
-msgstr "Recherche parmi les relations"
+msgstr "Rechercher parmi les relations"
-#: forms.py:512 forms.py:832
+#: forms.py:509 forms.py:837
msgid "Comment"
msgstr "Commentaire"
-#: forms.py:513
+#: forms.py:510
msgid "Abstract (full text search)"
msgstr "Résumé (recherche texte intégral)"
-#: forms.py:515 forms.py:835 models.py:313
+#: forms.py:512 forms.py:840 models.py:335
msgid "Comment about scientific documentation"
msgstr "Commentaire concernant la documentation scientifique"
-#: forms.py:516 forms.py:837 models.py:325
+#: forms.py:513 forms.py:842 models.py:347
msgid "Record quality"
msgstr "Qualité d'enregistrement"
-#: forms.py:517 forms.py:805 models.py:277
+#: forms.py:514 forms.py:807 models.py:299
msgid "Report processing"
msgstr "Traitement du rapport"
-#: forms.py:519 forms.py:840 models.py:320
+#: forms.py:516 forms.py:845 models.py:342
msgid "Virtual operation"
msgstr "Opération virtuelle"
-#: forms.py:521 forms.py:1141
-msgid "Archaelogical site"
-msgstr "Entité Archéologique"
+#: forms.py:518 forms.py:1142 forms.py:1146 models.py:93
+msgid "Archaeological site"
+msgstr "Entité archéologique"
-#: forms.py:527 forms.py:1268
+#: forms.py:524 forms.py:1273
msgid "Created by"
msgstr "Créé par"
-#: forms.py:533 forms.py:1274
+#: forms.py:530 forms.py:1279
msgid "Modified by"
msgstr "Modifié par"
-#: forms.py:540
+#: forms.py:537
msgid "Documentation deadline before"
msgstr "Date limite de rendu de la documentation avant"
-#: forms.py:542
+#: forms.py:539
msgid "Documentation deadline after"
msgstr "Date limite de rendu de la documentation après"
-#: forms.py:544 forms.py:825 models.py:332
+#: forms.py:541 forms.py:830 models.py:354
msgid "Documentation received"
msgstr "Documentation reçue"
-#: forms.py:546
+#: forms.py:543
msgid "Finds deadline before"
msgstr "Date limite de rendu du mobilier avant"
-#: forms.py:548
+#: forms.py:545
msgid "Finds deadline after"
msgstr "Date limite de rendu du mobilier après"
-#: forms.py:550 forms.py:830 models.py:336
+#: forms.py:547 forms.py:835 models.py:358
msgid "Finds received"
msgstr "Mobilier reçu"
-#: forms.py:595 forms.py:1213 views.py:168
+#: forms.py:592 forms.py:1218 views.py:168
msgid "Operation search"
-msgstr "Recherche d'opérations"
+msgstr "Rechercher une opération"
-#: forms.py:639
+#: forms.py:636
msgid "Associated file"
msgstr "Dossier associé"
-#: forms.py:643 forms.py:928 models.py:968 wizards.py:76
-msgid "Archaelogical file"
-msgstr "Dossier"
+#: forms.py:640 forms.py:933 models.py:493 models.py:883 models.py:992
+#: wizards.py:80
+msgid "Archaeological file"
+msgstr "Dossier archéologique"
-#: forms.py:650 forms.py:652 models.py:327
+#: forms.py:647 forms.py:649 models.py:349
msgid "Abstract"
msgstr "Résumé"
-#: forms.py:655
+#: forms.py:652
msgid "months"
msgstr "mois"
-#: forms.py:655
+#: forms.py:652
msgid "years"
msgstr "années"
-#: forms.py:657 models.py:230
+#: forms.py:654 models.py:252
msgid "Creation date"
msgstr "Date de création"
-#: forms.py:658
+#: forms.py:655
msgid "Start of field work"
msgstr "Début du travail de terrain"
-#: forms.py:660
+#: forms.py:657
msgid "All"
msgstr "Tout"
-#: forms.py:661
+#: forms.py:658
msgid "Preventive"
msgstr "Préventif"
-#: forms.py:662
+#: forms.py:659
msgid "Research"
msgstr "Programmé"
-#: forms.py:666
+#: forms.py:663
msgid "Slicing"
msgstr "Découpage"
-#: forms.py:669
+#: forms.py:666
msgid "Department detail"
msgstr "Détail par département"
-#: forms.py:671
+#: forms.py:668
msgid "Date get from"
msgstr "Date obtenue depuis"
-#: forms.py:673
+#: forms.py:670
msgid "Preventive/Research"
msgstr "Préventif/Programmé"
-#: forms.py:679
+#: forms.py:676
msgid "Date after"
msgstr "Date après"
-#: forms.py:681
+#: forms.py:678
msgid "Date before"
msgstr "Date avant"
-#: forms.py:683
+#: forms.py:680
msgid "With reports"
msgstr "Avec un rapport"
-#: forms.py:684
+#: forms.py:681
msgid "With finds"
msgstr "Avec du mobilier"
-#: forms.py:736 forms.py:1322 templates/ishtar/sheet_administrativeact.html:13
+#: forms.py:733 forms.py:1327 templates/ishtar/sheet_administrativeact.html:20
#: templates/ishtar/sheet_operation.html:24
msgid "General"
msgstr "Général"
-#: forms.py:751 models.py:310
+#: forms.py:748 models.py:332
msgid "Generic name"
msgstr "Nom générique"
-#: forms.py:760 models.py:279
+#: forms.py:757 models.py:301
msgid "Old code"
msgstr "Ancien code"
-#: forms.py:763
+#: forms.py:760
msgid "Head scientist"
msgstr "Responsable scientifique"
-#: forms.py:779 models.py:309
+#: forms.py:779 models.py:331
msgid "Operator reference"
msgstr "Référence de l'opérateur"
-#: forms.py:791
+#: forms.py:793
msgid "Total surface (m2)"
msgstr "Surface totale (m2)"
-#: forms.py:798 models.py:53 models.py:233 models.py:1341
+#: forms.py:800 models.py:53 models.py:255 models.py:1386
msgid "Start date"
msgstr "Date de début"
-#: forms.py:800 models.py:235
+#: forms.py:802 models.py:257
msgid "Excavation end date"
msgstr "Date de fin de chantier"
-#: forms.py:803 models.py:236
+#: forms.py:805 models.py:258
msgid "Report delivery date"
msgstr "Date de livraison du rapport"
-#: forms.py:822 models.py:329
+#: forms.py:827 models.py:351
msgid "Deadline for submission of the documentation"
msgstr "Date limite de rendu de la documentation"
-#: forms.py:827 models.py:334
+#: forms.py:832 models.py:356
msgid "Deadline for submission of the finds"
msgstr "Date limite de rendu du mobilier"
-#: forms.py:842
+#: forms.py:847
msgid "Image"
msgstr "Image"
-#: forms.py:843
+#: forms.py:848
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
@@ -379,131 +381,127 @@ msgstr ""
"<p>Les images trop grandes sont retaillées en : %(width)dx%(height)d (le "
"ratio est conservé).</p>"
-#: forms.py:881
+#: forms.py:886
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:886
+#: forms.py:891
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:914
+#: forms.py:919
#, python-format
msgid ""
-"Operation code already exist for year: %(year)d - use a value bigger than "
+"Operation code already exists for year: %(year)d - use a value bigger than "
"%(last_val)d"
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:918
+#: forms.py:923
msgid "Bad operation code"
msgstr "Mauvais code d'opération"
-#: forms.py:924 models.py:486
+#: forms.py:929 models.py:508
msgid "Operation code"
msgstr "Code de l'opération"
-#: forms.py:950
+#: forms.py:955
msgid "Preventive informations - excavation"
msgstr "Information archéologie préventive - fouille"
-#: forms.py:951 models.py:263
+#: forms.py:956 models.py:285
#: templates/ishtar/dashboards/dashboard_operation.html:701
msgid "Cost (euros)"
msgstr "Coût (euros)"
-#: forms.py:952 models.py:268
+#: forms.py:957 models.py:290
msgid "Scheduled man-days"
msgstr "Jours-hommes prévus"
-#: forms.py:954 models.py:271
+#: forms.py:959 models.py:293
msgid "Optional man-days"
msgstr "Jours-hommes optionnels"
-#: forms.py:956 models.py:274
+#: forms.py:961 models.py:296
msgid "Effective man-days"
msgstr "Jours-hommes effectifs"
-#: forms.py:966
+#: forms.py:971
msgid "Preventive informations - diagnostic"
msgstr "Information archéologie préventive - diagnostic"
-#: forms.py:969 models.py:293
+#: forms.py:974 models.py:315
msgid "Prescription on zoning"
msgstr "Prescription sur zonage"
-#: forms.py:971 models.py:296
+#: forms.py:976 models.py:318
msgid "Prescription on large area"
msgstr "Prescription sur une vaste surface"
-#: forms.py:974 models.py:298
+#: forms.py:979 models.py:320
msgid "Prescription on geoarchaeological context"
msgstr "Prescription sur un contexte géoarchéologique"
-#: forms.py:978 forms.py:1000 models.py:261 models.py:981
+#: forms.py:983 forms.py:1005 models.py:283 models.py:1015
msgid "Towns"
msgstr "Communes"
-#: forms.py:1007 models.py:1167 models.py:1339
+#: forms.py:1012 models.py:1212 models.py:1384
msgid "Parcel"
msgstr "Parcelle"
-#: forms.py:1059 models.py:45
+#: forms.py:1064 models.py:45
msgid "Remain types"
msgstr "Types de vestige"
-#: forms.py:1063 models.py:44
+#: forms.py:1068 models.py:44
msgid "Remain type"
msgstr "Type de vestige"
-#: forms.py:1079 templates/ishtar/sheet_operation.html:164
+#: forms.py:1084 templates/ishtar/sheet_operation.html:164
#: templates/ishtar/sheet_operation.html:195
msgid "Period"
msgstr "Période"
-#: forms.py:1091 models.py:84
+#: forms.py:1096 models.py:84
msgid "Reference"
msgstr "Référence"
-#: forms.py:1120
+#: forms.py:1125
msgid "This reference already exists."
msgstr "Cette référence existe déjà."
-#: forms.py:1137 models.py:93
-msgid "Archaeological site"
-msgstr "Entité archéologique"
-
-#: forms.py:1152 models.py:94 models.py:317
+#: forms.py:1157 models.py:94 models.py:339
#: templates/ishtar/sheet_operation.html:94
msgid "Archaeological sites"
msgstr "Entités archéologiques"
-#: forms.py:1156
-msgid "Associated archaelogical sites"
+#: forms.py:1161
+msgid "Associated archaeological sites"
msgstr "Entités archéologiques associées"
-#: forms.py:1162 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
+#: forms.py:1167 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
msgid "Search"
msgstr "Recherche"
-#: forms.py:1167
+#: forms.py:1172
msgid "Would you like to close this operation?"
msgstr "Voulez-vous clore cette opération ?"
-#: forms.py:1172
+#: forms.py:1177
msgid "Would you like to delete this operation?"
msgstr "Voulez-vous supprimer cette opération ?"
-#: forms.py:1181 forms.py:1251 forms.py:1387 models.py:836 models.py:948
+#: forms.py:1186 forms.py:1256 forms.py:1392 models.py:858 models.py:972
msgid "Index"
msgstr "Index"
-#: forms.py:1207
+#: forms.py:1212
#, python-format
msgid ""
"Index already exists for operation: %(operation)s - use a value bigger than "
@@ -512,86 +510,86 @@ msgstr ""
"Cet index existe déjà pour l'opération : %(operation)s, utilisez une valeur "
"plus grande que %(last_val)d"
-#: forms.py:1219
+#: forms.py:1224
msgid "Operation's year"
msgstr "Année de l'opération"
-#: forms.py:1226
+#: forms.py:1231
msgid "Operation's town"
msgstr "Commune de l'opération"
-#: forms.py:1239
+#: forms.py:1244
msgid "Documentation search"
-msgstr "Recherche de document"
+msgstr "Rechercher une documentation"
-#: forms.py:1241
+#: forms.py:1246
msgid "You should select a document."
msgstr "Vous devez sélectionner un document."
-#: forms.py:1258 forms.py:1325 models.py:873 models.py:942
+#: forms.py:1263 forms.py:1330 models.py:897 models.py:966
msgid "Act type"
msgstr "Type d'acte"
-#: forms.py:1259 forms.py:1457
+#: forms.py:1264 forms.py:1462
msgid "Indexed?"
msgstr "Indexé ?"
-#: forms.py:1265 forms.py:1330 models.py:972
+#: forms.py:1270 forms.py:1335 models.py:1006
#: templates/ishtar/blocks/window_tables/administrativacts.html:10
msgid "Object"
msgstr "Objet"
-#: forms.py:1302 views.py:324
+#: forms.py:1307 views.py:329
msgid "Administrative act search"
-msgstr "Recherche d'actes administratifs"
+msgstr "Rechercher un acte administratif"
-#: forms.py:1317 forms.py:1415 forms.py:1482
+#: forms.py:1322 forms.py:1420 forms.py:1487
msgid "You should select an administrative act."
msgstr "Vous devez sélectionner un acte administratif."
-#: forms.py:1333 models.py:969
+#: forms.py:1338 models.py:1003
msgid "Signature date"
msgstr "Date de signature"
-#: forms.py:1375
+#: forms.py:1380
#, python-format
msgid ""
-"This index already exist for year: %(year)d - use a value bigger than "
+"This index already exists for year: %(year)d - use a value bigger than "
"%(last_val)d"
msgstr ""
"Cet index existe déjà pour l'année : %(year)d, utilisez une valeur plus "
"grande que %(last_val)d"
-#: forms.py:1379
+#: forms.py:1384
msgid "Bad index"
msgstr "Mauvais index"
-#: forms.py:1392
+#: forms.py:1397
msgid "Would you like to delete this administrative act?"
msgstr "Voulez-vous supprimer cet acte administratif ?"
-#: forms.py:1397
+#: forms.py:1402
msgid "Template"
msgstr "Patron"
-#: forms.py:1421 forms.py:1425
+#: forms.py:1426 forms.py:1430
msgid "This document is not intended for this type of act."
msgstr "Ce document n'est pas destiné à ce type d'acte."
-#: forms.py:1443
+#: forms.py:1448
msgid "Doc generation"
msgstr "Génération de document"
-#: forms.py:1445
+#: forms.py:1450
msgid "Generate the associated doc?"
msgstr "Générer le document associé ?"
-#: forms.py:1466 ishtar_menu.py:121 views.py:377
+#: forms.py:1471 ishtar_menu.py:121 views.py:382
msgctxt "admin act register"
msgid "Register"
msgstr "Registre"
-#: ishtar_menu.py:38
+#: ishtar_menu.py:38 ishtar_menu.py:69 ishtar_menu.py:97
msgid "Creation"
msgstr "Ajout"
@@ -607,15 +605,11 @@ msgstr "Clôture"
msgid "Deletion"
msgstr "Suppression"
-#: ishtar_menu.py:58 models.py:988
+#: ishtar_menu.py:58 models.py:1022
#: templates/ishtar/sheet_administrativeact.html:4
msgid "Administrative act"
msgstr "Acte administratif"
-#: ishtar_menu.py:69 ishtar_menu.py:97 widgets.py:55
-msgid "Add"
-msgstr "Ajout"
-
#: ishtar_menu.py:84
msgid "Documents"
msgstr "Documents"
@@ -636,16 +630,16 @@ msgstr "Tableau de bord"
msgid "General informations"
msgstr "Informations générales"
-#: ishtar_menu.py:136 models.py:345
+#: ishtar_menu.py:136 models.py:367
#: templates/ishtar/dashboards/dashboard_operation.html:8
msgid "Operations"
msgstr "Opérations"
-#: models.py:52 models.py:70 models.py:1803
+#: models.py:52 models.py:70 models.py:1848
msgid "Order"
msgstr "Ordre"
-#: models.py:54 models.py:1342
+#: models.py:54 models.py:1387
msgid "End date"
msgstr "Date de fin"
@@ -683,7 +677,7 @@ msgstr "Peut ajouter ses propres Entités archéologique"
#: models.py:103
msgid "Can change own Archaeological site"
-msgstr "Peut modifier ses propres Entités archéologiques"
+msgstr "Peut modifier sa propre Entité archéologique"
#: models.py:105
msgid "Can delete own Archaeological site"
@@ -701,415 +695,435 @@ msgstr "Arbitraire"
msgid "Reliable"
msgstr "Fiable"
+#: models.py:230
+msgid "Year - Index"
+msgstr "Année - Index"
+
+#: models.py:231
+msgid "Associated file (label)"
+msgstr "Fichier associé (nom)"
+
#: models.py:232
+msgid "Operator name"
+msgstr "Nom de l'opérateur"
+
+#: models.py:233
+msgid "Scientist (full name)"
+msgstr "Responsable scientifique (nom complet)"
+
+#: models.py:234
+msgid "Associated file (external ID)"
+msgstr "Fichier associé (identifiant externe)"
+
+#: models.py:235
+msgid "Scientist (title)"
+msgstr "Responsable scientifique (titre)"
+
+#: models.py:236
+msgid "Scientist (surname)"
+msgstr "Responsable scientifique (nom)"
+
+#: models.py:237
+msgid "Scientist (name)"
+msgstr "Scientifique (nom)"
+
+#: models.py:238
+msgid "Scientist - Organization (name)"
+msgstr "Scientifique - Organisation (nom)"
+
+#: models.py:239
+msgid "In charge (title)"
+msgstr "Responsable (titre)"
+
+#: models.py:240
+msgid "In charge (surname)"
+msgstr "Responsable (prénom)"
+
+#: models.py:241
+msgid "In charge (name)"
+msgstr "Responsable (nom)"
+
+#: models.py:242
+msgid "In charge - Organization (name)"
+msgstr "Responsable - Organisation (nom)"
+
+#: models.py:247
+msgid "Archaeological sites (reference)"
+msgstr "Entités archéologiques (référence)"
+
+#: models.py:254
msgid "Closing date"
msgstr "Date de clôture"
-#: models.py:239
+#: models.py:261
msgid "In charge scientist"
msgstr "Responsable scientifique"
-#: models.py:254 models.py:1147
+#: models.py:276 models.py:1192
msgid "File"
msgstr "Dossier"
-#: models.py:258
+#: models.py:280
msgid "Surface (m2)"
msgstr "Surface (m2)"
-#: models.py:311
+#: models.py:333
msgid "General comment"
msgstr "Commentaire général"
-#: models.py:314
+#: models.py:336
msgid "Cached name"
msgstr "Nom en cache"
-#: models.py:322
+#: models.py:344
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:338
+#: models.py:360
msgid "Point"
msgstr "Point"
-#: models.py:339
+#: models.py:361
msgid "Multi polygon"
-msgstr "Polygones multiples"
+msgstr "Polygones multi-parties"
-#: models.py:347
+#: models.py:369
msgid "Can view all Operations"
msgstr "Peut voir toutes les Opérations"
-#: models.py:348
+#: models.py:370
msgid "Can view own Operation"
msgstr "Peut voir sa propre Opération"
-#: models.py:349
+#: models.py:371
msgid "Can add own Operation"
msgstr "Peut ajouter sa propre Opération"
-#: models.py:350
+#: models.py:372
msgid "Can change own Operation"
msgstr "Peut modifier sa propre Opération"
-#: models.py:351
+#: models.py:373
msgid "Can delete own Operation"
msgstr "Peut supprimer sa propre Opération"
-#: models.py:352
+#: models.py:374
msgid "Can close Operation"
msgstr "Peut fermer une Opération"
-#: models.py:380
+#: models.py:402
msgid "OPE"
msgstr "OPE"
-#: models.py:440
+#: models.py:462
msgid "Intercommunal"
msgstr "Intercommunal"
-#: models.py:471 models.py:861
-msgid "Archaeological file"
-msgstr "Dossier archéologique"
-
-#: models.py:472
+#: models.py:494
msgid "Code patriarche"
msgstr "Code patriarche"
-#: models.py:512
+#: models.py:534
msgid "This operation code already exists for this year"
msgstr "Ce code d'opération existe déjà pour cette année."
-#: models.py:545
+#: models.py:567
msgid "Number of parcels"
msgstr "Nombre de parcelles"
-#: models.py:563
+#: models.py:585
msgid "Number of administrative acts"
msgstr "Nombre d'actes administratifs"
-#: models.py:571
+#: models.py:593
msgid "Number of indexed administrative acts"
msgstr "Nombre d'actes administratifs indexés"
-#: models.py:579
+#: models.py:601
msgid "Number of context records"
msgstr "Nombre d'Unités d'Enregistrement"
-#: models.py:615
+#: models.py:637
msgid "Number of finds"
-msgstr "Nombre d'élément de mobilier"
+msgstr "Nombre d'éléments de mobilier"
-#: models.py:660
+#: models.py:682
msgid "No type"
msgstr "Pas de type"
-#: models.py:691
+#: models.py:713
msgid "Number of sources"
msgstr "Nombre de documents"
-#: models.py:733 templates/ishtar/dashboards/dashboard_operation.html:309
+#: models.py:755 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:775
+#: models.py:797
msgid "Inverse relation"
msgstr "Relation inverse"
-#: models.py:779
+#: models.py:801
msgid "Operation relation type"
msgstr "Type de relation entre opérations"
-#: models.py:780
+#: models.py:802
msgid "Operation relation types"
msgstr "Types de relation entre opérations"
-#: models.py:793
+#: models.py:815
msgid "Operation record relation"
msgstr "Relation entre opérations"
-#: models.py:794
+#: models.py:816
msgid "Operation record relations"
msgstr "Relations entre opérations"
-#: models.py:840
+#: models.py:862
msgid "Operation documentation"
msgstr "Documentation d'une opération"
-#: models.py:841
+#: models.py:863
msgid "Operation documentations"
msgstr "Documentations des opérations"
-#: models.py:844
+#: models.py:866
msgid "Can view all Operation sources"
msgstr "Peut voir toutes les Documentations d'opération"
-#: models.py:846
+#: models.py:868
msgid "Can view own Operation source"
msgstr "Peut voir sa propre Documentation d'opération"
-#: models.py:848
+#: models.py:870
msgid "Can add own Operation source"
msgstr "Peut ajouter sa propre Documentation d'opération"
-#: models.py:850
+#: models.py:872
msgid "Can change own Operation source"
msgstr "Peut modifier sa propre Documentation d'opération"
-#: models.py:852
+#: models.py:874
msgid "Can delete own Operation source"
msgstr "Peut supprimer sa propre Documentation d'opération"
-#: models.py:864
+#: models.py:885 models.py:997
+msgid "Treatment request"
+msgstr "Demande de traitement"
+
+#: models.py:886 models.py:1002
+msgid "Treatment"
+msgstr "Traitement"
+
+#: models.py:888
msgid "Intended to"
msgstr "Destiné à"
-#: models.py:866
+#: models.py:890
msgid "Code"
msgstr "Code"
-#: models.py:869
+#: models.py:893
msgid "Associated template"
msgstr "Patron associé"
-#: models.py:870
+#: models.py:894
msgid "Indexed"
msgstr "Indexé"
-#: models.py:874
+#: models.py:898
msgid "Act types"
msgstr "Types d'acte"
-#: models.py:946
+#: models.py:970
msgid "Person in charge of the operation"
msgstr "Responsable d'opération"
-#: models.py:952
+#: models.py:976
msgid "Archaeological preventive operator"
msgstr "Opérateur d'archéologie préventive"
-#: models.py:960
+#: models.py:984
msgid "Signatory"
msgstr "Signataire"
-#: models.py:978
+#: models.py:1012
msgid "Departments"
msgstr "Départements"
-#: models.py:979
+#: models.py:1013
msgid "Cached values get from associated departments"
msgstr "Valeur en cache des départements associés"
-#: models.py:982
+#: models.py:1016
msgid "Cached values get from associated towns"
msgstr "Valeur en cache des communes associées"
-#: models.py:989 templates/ishtar/sheet_operation.html:102
+#: models.py:1023 templates/ishtar/sheet_operation.html:102
#: templates/ishtar/sheet_operation.html:138
msgid "Administrative acts"
msgstr "Actes administratifs"
-#: models.py:992
+#: models.py:1026
msgid "Can view all Administrative acts"
msgstr "Peut voir tous les Actes administratifs"
-#: models.py:994
+#: models.py:1028
msgid "Can view own Administrative act"
msgstr "Peut voir son propre Acte administratif"
-#: models.py:996
+#: models.py:1030
msgid "Can add own Administrative act"
msgstr "Peut ajouter son propre Acte administratif"
-#: models.py:998
+#: models.py:1032
msgid "Can change own Administrative act"
msgstr "Peut modifier son propre Acte administratif"
-#: models.py:1000
+#: models.py:1034
msgid "Can delete own Administrative act"
msgstr "Peut supprimer son propre Acte administratif"
-#: models.py:1009
+#: models.py:1043
#: templates/ishtar/blocks/window_tables/administrativacts.html:7
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7
msgid "Ref."
msgstr "Réf."
-#: models.py:1092
+#: models.py:1137
msgid "This index already exists for this year"
msgstr "Cet index existe déjà pour cette année."
-#: models.py:1160
+#: models.py:1205
msgid "External ID"
msgstr "ID externe"
-#: models.py:1163
+#: models.py:1208
msgid "External ID is set automatically"
msgstr "L'identifiant externe est configuré automatiquement"
-#: models.py:1164
+#: models.py:1209
msgid "Address - Locality"
msgstr "Adresse - Lieu-dit"
-#: models.py:1337
+#: models.py:1382
msgid "Owner"
msgstr "Propriétaire"
-#: models.py:1345
+#: models.py:1390
msgid "Parcel owner"
msgstr "Propriétaire de parcelle"
-#: models.py:1346
+#: models.py:1391
msgid "Parcel owners"
msgstr "Propriétaires de parcelle"
-#: models.py:1372
+#: models.py:1417
msgid "Recorded"
msgstr "Enregistré"
-#: models.py:1373
+#: models.py:1418
msgid "Effective"
msgstr "Effectif"
-#: models.py:1374
+#: models.py:1419
msgid "Active"
msgstr "Actif"
-#: models.py:1375
+#: models.py:1420
msgid "Field completed"
msgstr "Terrain achevé"
-#: models.py:1376
+#: models.py:1421
msgid "Associated report"
msgstr "Rapport associé"
-#: models.py:1377
+#: models.py:1422
msgid "Closed"
msgstr "Clos"
-#: models.py:1378
+#: models.py:1423
msgid "Documented and closed"
msgstr "Documenté et clos"
-#: models.py:1804
+#: models.py:1849
msgid "Is preventive"
msgstr "Préventif"
-#: models.py:1807
+#: models.py:1852
msgid "Operation type old"
msgstr "Type d'opération - ancien"
-#: models.py:1808
+#: models.py:1853
msgid "Operation types old"
msgstr "Types d'opération - ancien"
#: views.py:214
msgid "New operation"
-msgstr "Nouvelle opération"
+msgstr "Ajouter une opération"
#: views.py:233
msgid "Operation modification"
-msgstr "Modification d'une opération"
+msgstr "Modifier une opération"
#: views.py:276
msgid "Operation closing"
-msgstr "Clôture d'une opération"
+msgstr "Clôturer une opération"
-#: views.py:282
+#: views.py:287
msgid "Operation deletion"
-msgstr "Suppression d'une opération"
+msgstr "Supprimer une opération"
-#: views.py:287
+#: views.py:292
msgid "Operation: source search"
-msgstr "Opération : recherche de documentation associée"
+msgstr "Opération : rechercher une documentation associée"
-#: views.py:295
+#: views.py:300
msgid "Operation: source creation"
-msgstr "Opération : nouvelle documentation associée"
+msgstr "Opération : ajouter une documentation associée"
-#: views.py:303
+#: views.py:308
msgid "Operation: source modification"
-msgstr "Opération : modification d'une documentation associée"
+msgstr "Opération : modifier une documentation associée"
-#: views.py:318
+#: views.py:323
msgid "Operation: source deletion"
-msgstr "Opération : suppression d'une documentation associée"
+msgstr "Opération : supprimer une documentation associée"
-#: views.py:337
+#: views.py:342
msgid "Operation: new administrative act"
-msgstr "Opération : nouvel acte administratif"
+msgstr "Opération : ajouter un acte administratif"
-#: views.py:347
+#: views.py:352
msgid "Operation: administrative act modification"
msgstr "Opération : modification d'un acte administratif"
-#: views.py:371
+#: views.py:376
msgid "Operation: administrative act deletion"
-msgstr "Opération : suppression d'un acte administratif"
+msgstr "Opération : supprimer un acte administratif"
+
+#: widgets.py:55
+msgid "Add"
+msgstr "Ajouter"
-#: wizards.py:199
+#: wizards.py:203
msgid ""
-"Warning: No Archaelogical File is provided. If you have forget it return to "
+"Warning: No Archaeological File is provided. If you have forget it return to "
"the first step."
msgstr ""
"Attention : Aucun dossier archéologique n'a été précisé. S'il s'agit d'un "
"oubli, définissez-le à la première étape."
-#: templates/ishtar/sheet_administrativeact.html:14
-msgid "Year:"
-msgstr "Année :"
-
-#: templates/ishtar/sheet_administrativeact.html:15
-msgid "Numerical reference:"
-msgstr "Identifiant numérique :"
-
-#: templates/ishtar/sheet_administrativeact.html:16
-msgid "Internal reference:"
-msgstr "Référence interne :"
-
-#: templates/ishtar/sheet_administrativeact.html:17
-msgid "Type:"
-msgstr "Type :"
-
-#: templates/ishtar/sheet_administrativeact.html:18
-msgid "Object:"
-msgstr "Objet :"
-
-#: templates/ishtar/sheet_administrativeact.html:19
-msgid "Signature date:"
-msgstr "Date de signature :"
-
-#: templates/ishtar/sheet_administrativeact.html:20
-msgid "In charge:"
-msgstr "Responsable :"
-
-#: templates/ishtar/sheet_administrativeact.html:21
-msgid "Archaeological preventive operator:"
-msgstr "Opérateur d'archéologie préventive :"
-
-#: templates/ishtar/sheet_administrativeact.html:23
-msgid "Associated file:"
-msgstr "Dossier associé :"
-
-#: templates/ishtar/sheet_administrativeact.html:24
-msgid "Associated operation:"
-msgstr "Opération associée :"
-
-#: templates/ishtar/sheet_administrativeact.html:26
+#: templates/ishtar/sheet_administrativeact.html:36
#: templates/ishtar/sheet_operation.html:38
msgid "Surface:"
msgstr "Surface :"
-#: templates/ishtar/sheet_administrativeact.html:27
-msgid "Created by:"
-msgstr "Créé par :"
-
#: templates/ishtar/sheet_operation.html:14
msgid "This operation is virtual."
msgstr "Cette opération est virtuelle."
diff --git a/translations/fr/archaeological_warehouse.po b/translations/fr/archaeological_warehouse.po
index 5da94edbb..4f32658d1 100644
--- a/translations/fr/archaeological_warehouse.po
+++ b/translations/fr/archaeological_warehouse.po
@@ -3,158 +3,313 @@
# This file is distributed under the same license as the Ishtar package.
# Étienne Loks <etienne.loks at peacefrogs net>, 2010-2011.
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
+# Valérie-Emma Leroux <emma@iggdrasil.net>, 2017. #zanata
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-02-24 10:52-0500\n"
+"PO-Revision-Date: 2017-01-09 05:42-0500\n"
"Last-Translator: Valérie-Emma Leroux <emma@iggdrasil.net>\n"
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-"X-Generator: Zanata 3.9.5\n"
+"X-Generator: Zanata 3.9.6\n"
-#: forms.py:34 forms.py:97 models.py:47 models.py:87
+#: forms.py:35 forms.py:91 ishtar_menu.py:39 models.py:60 models.py:88
+#: templates/ishtar/sheet_warehouse.html:4
msgid "Warehouse"
msgstr "Dépôt"
-#: forms.py:43 models.py:38
+#: forms.py:44 forms.py:49 models.py:234
+msgid "Division"
+msgstr "Division"
+
+#: forms.py:51 models.py:112
+msgid "Order"
+msgstr "Ordre"
+
+#: forms.py:62 models.py:53
+msgid "Divisions"
+msgstr "Divisions"
+
+#: forms.py:66 forms.py:95 models.py:45 models.py:85
msgid "Name"
msgstr "Nom"
-#: forms.py:45 models.py:30 models.py:40
+#: forms.py:67 forms.py:97 models.py:36 models.py:47
msgid "Warehouse type"
msgstr "Type de dépôt"
-#: forms.py:48 models.py:43
+#: forms.py:68 forms.py:114
+msgid "Town"
+msgstr "Commune"
+
+#: forms.py:79 views.py:98
+msgid "Warehouse search"
+msgstr "Rechercher un dépôt"
+
+#: forms.py:100 models.py:50
msgid "Person in charge"
msgstr "Responsable"
-#: forms.py:54 forms.py:102 models.py:44 models.py:91
+#: forms.py:106 forms.py:168 models.py:51 models.py:165
msgid "Comment"
msgstr "Commentaires"
-#: forms.py:56
+#: forms.py:108
msgid "Address"
msgstr "Adresse"
-#: forms.py:58
+#: forms.py:110
msgid "Address complement"
msgstr "Complément d'adresse"
-#: forms.py:60
+#: forms.py:112
msgid "Postal code"
msgstr "Code postal"
-#: forms.py:62 forms.py:66
-msgid "Town"
-msgstr "Commune"
-
-#: forms.py:63
+#: forms.py:115
msgid "Country"
msgstr "Pays"
-#: forms.py:65
+#: forms.py:117
msgid "Phone"
msgstr "Téléphone"
-#: forms.py:93 models.py:94
+#: forms.py:118
+msgid "Mobile phone"
+msgstr "Téléphone mobile"
+
+#: forms.py:145 forms.py:146
+msgid "Would you like to delete this warehouse?"
+msgstr "Voulez-vous supprimer ce dépôt ?"
+
+#: forms.py:150 models.py:173 models.py:232
+#: templates/ishtar/sheet_container.html:4
msgid "Container"
msgstr "Contenant"
-#: forms.py:94 forms.py:129 models.py:66
+#: forms.py:154 forms.py:220 models.py:127
msgid "Ref."
msgstr "Réf."
-#: forms.py:95 forms.py:128 models.py:69 models.py:89
+#: forms.py:155 forms.py:219 models.py:130 models.py:163
msgid "Container type"
msgstr "Type de contenant"
-#: forms.py:139
+#: forms.py:157
+msgid "Current location (warehouse)"
+msgstr "Lieu actuel (dépôt)"
+
+#: forms.py:163 models.py:160
+msgid "Responsible warehouse"
+msgstr "Dépôt responsable"
+
+#: forms.py:194
+msgid "Index"
+msgstr "Index"
+
+#: forms.py:212
+msgid "This ID already exists for this warehouse."
+msgstr "Cet identifiant existe déjà pour ce dépôt."
+
+#: forms.py:230 forms.py:236 views.py:127
msgid "Container search"
-msgstr "Recherche de contenant"
+msgstr "Rechercher un contenant"
-#: forms.py:141
+#: forms.py:232 forms.py:238
msgid "You should select a container."
msgstr "Vous devez sélectionner un contenant."
-#: forms.py:142
+#: forms.py:233
msgid "Add a new container"
-msgstr "Ajouter un nouveau contenant."
+msgstr "Ajouter un nouveau contenant"
-#: forms.py:146 ishtar_menu.py:33 views.py:87
+#: forms.py:243 ishtar_menu.py:35 views.py:93
msgid "Packaging"
msgstr "Conditionnement"
-#: forms.py:153
+#: forms.py:249
msgid "Packager"
msgstr "Personne assurant le conditionnement"
-#: forms.py:159
+#: forms.py:255
msgid "Date"
msgstr "Date"
-#: forms.py:168
+#: forms.py:259
msgid "Packaged finds"
msgstr "Mobilier conditionné"
-#: ishtar_menu.py:30
-msgid "Find"
-msgstr "Mobilier"
+#: forms.py:263 models.py:166
+msgid "Localisation"
+msgstr "Localisation"
+
+#: forms.py:287 forms.py:288
+msgid "Would you like to delete this container?"
+msgstr "Voulez-vous supprimer ce contenant ?"
+
+#: ishtar_menu.py:32
+msgid "Treatment"
+msgstr "Traitement"
+
+#: ishtar_menu.py:42 ishtar_menu.py:57
+msgid "Search"
+msgstr "Recherche"
+
+#: ishtar_menu.py:45 ishtar_menu.py:60
+msgid "Creation"
+msgstr "Ajout"
+
+#: ishtar_menu.py:48 ishtar_menu.py:63
+msgid "Modification"
+msgstr "Modification"
-#: models.py:31
+#: ishtar_menu.py:51 ishtar_menu.py:66
+msgid "Deletion"
+msgstr "Suppression"
+
+#: ishtar_menu.py:55 models.py:174 templates/ishtar/sheet_warehouse.html:17
+msgid "Containers"
+msgstr "Contenants"
+
+#: models.py:37
msgid "Warehouse types"
msgstr "Types de dépôts"
-#: models.py:48
+#: models.py:61
msgid "Warehouses"
msgstr "Dépôts"
-#: models.py:50
+#: models.py:63
msgid "Can view all Warehouses"
msgstr "Peut voir tous les Dépôts"
-#: models.py:51
+#: models.py:64
msgid "Can view own Warehouse"
msgstr "Peut voir son propre Dépôt"
-#: models.py:52
+#: models.py:65
msgid "Can add own Warehouse"
msgstr "Peut ajouter son propre Dépôt"
-#: models.py:53
+#: models.py:66
msgid "Can change own Warehouse"
msgstr "Peut modifier son propre Dépôt"
-#: models.py:54
+#: models.py:67
msgid "Can delete own Warehouse"
msgstr "Peut supprimer son propre Dépôt"
-#: models.py:62
+#: models.py:87
+msgid "Description"
+msgstr "Description"
+
+#: models.py:92 models.py:93
+msgid "Collection"
+msgstr "Collection"
+
+#: models.py:102
+msgid "Warehouse division"
+msgstr "Division de dépôt"
+
+#: models.py:103
+msgid "Warehouse divisions"
+msgstr "Divisions de dépôt"
+
+#: models.py:123
msgid "Length (mm)"
msgstr "Longueur (mm)"
-#: models.py:63
+#: models.py:124
msgid "Width (mm)"
msgstr "Largeur (mm)"
-#: models.py:64
+#: models.py:125
msgid "Height (mm)"
msgstr "Hauteur (mm)"
-#: models.py:65
+#: models.py:126
msgid "Volume (l)"
msgstr "Volume (l)"
-#: models.py:70
+#: models.py:131
msgid "Container types"
msgstr "Types de contenant"
-#: models.py:90
+#: models.py:149
+msgid "Location - index"
+msgstr "Lieu - index"
+
+#: models.py:150
+msgid "Precise localisation"
+msgstr "Localisation précise"
+
+#: models.py:151
+msgid "Type"
+msgstr "Type"
+
+#: models.py:157
+msgid "Location (warehouse)"
+msgstr "Lieu (dépôt)"
+
+#: models.py:164
msgid "Container ref."
msgstr "Réf. du contenant"
-#: models.py:95
-msgid "Containers"
-msgstr "Contenants"
+#: models.py:168
+msgid "Cached location"
+msgstr "Lieu - en cache"
+
+#: models.py:235
+msgid "Reference"
+msgstr "Référence"
+
+#: models.py:238
+msgid "Container localisation"
+msgstr "Localisation de contenant"
+
+#: models.py:239
+msgid "Container localisations"
+msgstr "Localisations de contenant"
+
+#: views.py:106
+msgid "Warehouse creation"
+msgstr "Ajouter un dépôt"
+
+#: views.py:115
+msgid "Warehouse modification"
+msgstr "Modifier un dépôt"
+
+#: views.py:122
+msgid "Warehouse deletion"
+msgstr "Supprimer un dépôt"
+
+#: views.py:135
+msgid "Container creation"
+msgstr "Ajouter un contenant"
+
+#: views.py:144
+msgid "Container modification"
+msgstr "Modifier un contenant"
+
+#: views.py:151
+msgid "Container deletion"
+msgstr "Supprimer un contenant"
+
+#: templates/ishtar/sheet_container.html:19
+msgid "Content"
+msgstr "Contenu"
+
+#: templates/ishtar/sheet_warehouse.html:22
+msgid "Attached containers"
+msgstr "Contenants associés"
+
+#: templates/ishtar/wizard/wizard_containerlocalisation.html:5
+msgid ""
+"No division set for this warehouse. Define it to localise container in this "
+"warehouse."
+msgstr ""
+"Pas de division configurée pour ce dépôt. Définissez une division pour "
+"localiser un contenant dans ce dépôt."
diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po
index 9e6d05458..269ddb6eb 100644
--- a/translations/fr/ishtar_common.po
+++ b/translations/fr/ishtar_common.po
@@ -5,17 +5,18 @@
# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata
# Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata
# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata
+# Valérie-Emma Leroux <emma@iggdrasil.net>, 2017. #zanata
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-10-22 06:30-0400\n"
-"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"
+"PO-Revision-Date: 2017-01-09 05:43-0500\n"
+"Last-Translator: Valérie-Emma Leroux <emma@iggdrasil.net>\n"
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-"X-Generator: Zanata 3.9.5\n"
+"X-Generator: Zanata 3.9.6\n"
#: __init__.py:8
msgid "username"
@@ -83,7 +84,7 @@ msgid ""
"reference file."
msgstr ""
"Le fichier fourni n'est pas correct. Vérifiez le format du fichier. Si vous "
-"utilisez un fichier CSV : vérifiez que le séparateur de colonne et "
+"utilisez un fichier CSV : vérifiez que le séparateur de colonnes et "
"l'encodage sont similaires à ceux du fichier de référence."
#: data_importer.py:624
@@ -141,40 +142,40 @@ msgstr "résultat"
msgid "\"%(value)s\" not in %(values)s"
msgstr "\"%(value)s\" n'est pas dans %(values)s"
-#: forms.py:55
+#: forms.py:73
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:618
+#: forms.py:89 forms_common.py:618
msgid "Confirm"
msgstr "Confirmer"
-#: forms.py:76
+#: forms.py:94
msgid "Are you sure you want to delete?"
msgstr "Êtes-vous sûr de vouloir supprimer ?"
-#: forms.py:85
+#: forms.py:103
msgid "There are identical items."
msgstr "Il y a des éléments identiques."
-#: forms.py:123 forms.py:124
+#: forms.py:141 forms.py:142
msgid "Closing date"
msgstr "Date de clôture"
-#: forms.py:137
+#: forms.py:155
msgid "You should select an item."
msgstr "Vous devez sélectionner un élément."
-#: forms.py:138
+#: forms.py:156
msgid "Add a new item"
msgstr "Ajouter un nouvel élément"
-#: forms.py:245 models.py:1310
+#: forms.py:262 models.py:1367
msgid "Template"
msgstr "Patron"
#: forms_common.py:41 forms_common.py:59 forms_common.py:182
-#: forms_common.py:406 models.py:1376 models.py:2758
+#: forms_common.py:406 models.py:1433 models.py:2825
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
@@ -182,24 +183,23 @@ msgstr "Commune"
#: forms_common.py:43
msgid ""
-"<p>Type name, department code and/or postal code of the town you would like "
-"to select. The search is insensitive to case.</p>\n"
+"<p>Type name, department code of the town you would like to select. The "
+"search is insensitive to case.</p>\n"
"<p>Only the first twenty results are displayed but specifying the department "
"code is generally sufficient to get the appropriate result.</p>\n"
"<p class='example'>For instance type \"saint denis 93\" for getting the "
"french town Saint-Denis in the Seine-Saint-Denis department.</p>"
msgstr ""
-"<p>Tapez le nom, le numéro de département et/ou le code postal de la commune "
-"que vous voulez sélectionner. La recherche n'est pas sensible à la casse.</"
-"p>\n"
+"<p>Tapez le nom, le numéro de département de la commune que vous voulez "
+"sélectionner. La recherche n'est pas sensible à la casse.</p>\n"
"<p>Seuls les vingt premiers résultats sont affichés mais en plus du nom, "
"préciser le numéro de département est généralement suffisant pour obtenir le "
"résultat souhaité.</p>\n"
"<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:68 forms_common.py:855 ishtar_menu.py:47 models.py:1546
-#: models.py:2384 models.py:2566 models.py:2628
+#: forms_common.py:68 forms_common.py:855 ishtar_menu.py:47 models.py:1606
+#: models.py:2452 models.py:2634 models.py:2695
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr "Personne"
@@ -213,63 +213,63 @@ msgstr ""
"pas possible."
#: forms_common.py:170 forms_common.py:327 forms_common.py:451
-#: ishtar_menu.py:75 models.py:1547 models.py:2273
+#: ishtar_menu.py:75 models.py:1607 models.py:2338
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr "Organisation"
#: forms_common.py:173 forms_common.py:210 forms_common.py:322
-#: forms_common.py:376 forms_common.py:446 models.py:977 models.py:1309
-#: models.py:1592 models.py:1810 models.py:2267 models.py:2370 models.py:2744
+#: forms_common.py:376 forms_common.py:446 models.py:1034 models.py:1366
+#: models.py:1652 models.py:1871 models.py:2332 models.py:2438 models.py:2811
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr "Nom"
-#: forms_common.py:174 models.py:1531 models.py:1941
+#: forms_common.py:174 models.py:1588 models.py:2002
msgid "Organization type"
msgstr "Type d'organisation"
-#: forms_common.py:176 forms_common.py:400 models.py:1371
+#: forms_common.py:176 forms_common.py:400 models.py:1428
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr "Adresse"
-#: forms_common.py:178 forms_common.py:403 models.py:1372
+#: forms_common.py:178 forms_common.py:403 models.py:1429
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr "Complément d'adresse"
-#: forms_common.py:180 forms_common.py:404 models.py:1374
+#: forms_common.py:180 forms_common.py:404 models.py:1431
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr "Code postal"
-#: forms_common.py:183 forms_common.py:407 models.py:1377
+#: forms_common.py:183 forms_common.py:407 models.py:1434
msgid "Country"
msgstr "Pays"
#: forms_common.py:185 forms_common.py:324 forms_common.py:380
-#: forms_common.py:448 forms_common.py:572 models.py:1404
+#: forms_common.py:448 forms_common.py:572 models.py:1461
msgid "Email"
msgstr "Courriel"
-#: forms_common.py:186 forms_common.py:383 models.py:1389
+#: forms_common.py:186 forms_common.py:383 models.py:1446
#: 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:187 forms_common.py:392 models.py:1401
+#: forms_common.py:187 forms_common.py:392 models.py:1458
#: 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:211 forms_common.py:325 forms_common.py:449 models.py:1969
-#: models.py:2269 models.py:2679 templates/sheet_ope.html:85
+#: forms_common.py:211 forms_common.py:325 forms_common.py:449 models.py:2032
+#: models.py:2334 models.py:2746 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
@@ -277,13 +277,13 @@ msgstr "Téléphone portable"
msgid "Type"
msgstr "Type"
-#: forms_common.py:220 views.py:139
+#: forms_common.py:220 views.py:142
msgid "Organization search"
-msgstr "Recherche d'organisations"
+msgstr "Rechercher une organisation"
#: forms_common.py:244
-msgid "At leat two items have to be selected."
-msgstr "AU moins deux éléments doivent être sélectionnés."
+msgid "At least two items have to be selected."
+msgstr "Au moins deux éléments doivent être sélectionnés."
#: forms_common.py:262
msgid "Merge all items into"
@@ -293,14 +293,14 @@ msgstr "Fusionner tous les éléments dans"
msgid "Organization to merge"
msgstr "Organisation à fusionner"
-#: forms_common.py:323 forms_common.py:374 forms_common.py:447 models.py:2368
+#: forms_common.py:323 forms_common.py:374 forms_common.py:447 models.py:2436
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr "Prénom"
-#: forms_common.py:339 forms_common.py:434 views.py:104
+#: forms_common.py:339 forms_common.py:434 views.py:107
msgid "Person search"
-msgstr "Recherche de personnes"
+msgstr "Rechercher une personne"
#: forms_common.py:351
msgid "Person to merge"
@@ -311,25 +311,25 @@ msgstr "Personne à fusionner"
msgid "Identity"
msgstr "Identité"
-#: forms_common.py:371 forms_common.py:773 forms_common.py:822 models.py:1942
-#: models.py:2362 models.py:2364 models.py:2676 templates/sheet_ope.html:104
+#: forms_common.py:371 forms_common.py:773 forms_common.py:822 models.py:2003
+#: models.py:2430 models.py:2432 models.py:2743 templates/sheet_ope.html:104
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr "Titre"
-#: forms_common.py:372 models.py:2366
+#: forms_common.py:372 models.py:2434
msgid "Salutation"
msgstr "Formule d'appel"
-#: forms_common.py:378 models.py:2372
+#: forms_common.py:378 models.py:2440
msgid "Raw name"
msgstr "Nom brut"
-#: forms_common.py:381 models.py:1390
+#: forms_common.py:381 models.py:1447
msgid "Phone description"
msgstr "Type de téléphone"
-#: forms_common.py:384 models.py:1392 models.py:1394
+#: forms_common.py:384 models.py:1449 models.py:1451
msgid "Phone description 2"
msgstr "Type de téléphone 2"
@@ -337,11 +337,11 @@ msgstr "Type de téléphone 2"
msgid "Phone 2"
msgstr "Téléphone 2"
-#: forms_common.py:388 models.py:1398
+#: forms_common.py:388 models.py:1455
msgid "Phone description 3"
msgstr "Type de téléphone 3"
-#: forms_common.py:390 models.py:1396
+#: forms_common.py:390 models.py:1453
msgid "Phone 3"
msgstr "Téléphone 3"
@@ -349,29 +349,29 @@ msgstr "Téléphone 3"
msgid "Current organization"
msgstr "Organisation actuelle"
-#: forms_common.py:409 models.py:1379
+#: forms_common.py:409 models.py:1436
msgid "Other address: address"
msgstr "Autre adresse : adresse"
-#: forms_common.py:412 models.py:1382
+#: forms_common.py:412 models.py:1439
msgid "Other address: address complement"
msgstr "Autre adresse : complément d'adresse"
-#: forms_common.py:414 models.py:1383
+#: forms_common.py:414 models.py:1440
msgid "Other address: postal code"
msgstr "Autre adresse : code postal"
-#: forms_common.py:416 models.py:1385
+#: forms_common.py:416 models.py:1442
msgid "Other address: town"
msgstr "Autre adresse : ville"
-#: forms_common.py:418 models.py:1387
+#: forms_common.py:418 models.py:1444
msgid "Other address: country"
msgstr "Autre adresse : pays"
#: forms_common.py:430
msgid "Already has an account"
-msgstr "As déjà un compte"
+msgstr "A déjà un compte"
#: forms_common.py:445
msgid "Username"
@@ -379,9 +379,9 @@ msgstr "Nom d'utilisateur"
#: forms_common.py:463
msgid "Account search"
-msgstr "Recherche de comptes"
+msgstr "Rechercher un compte"
-#: forms_common.py:510 forms_common.py:550 forms_common.py:554 models.py:2321
+#: forms_common.py:510 forms_common.py:550 forms_common.py:554 models.py:2386
msgid "Person type"
msgstr "Type de personne"
@@ -389,7 +389,7 @@ msgstr "Type de personne"
msgid "Account"
msgstr "Compte"
-#: forms_common.py:575 wizards.py:1192
+#: forms_common.py:575 wizards.py:1256
msgid "New password"
msgstr "Nouveau mot de passe"
@@ -413,7 +413,7 @@ msgstr "Ce nom d'utilisateur existe déjà."
msgid "Send the new password by email?"
msgstr "Envoyer le nouveau mot de passe par courriel ?"
-#: forms_common.py:628 forms_common.py:641 models.py:2759
+#: forms_common.py:628 forms_common.py:641 models.py:2826
msgid "Towns"
msgstr "Communes"
@@ -429,7 +429,7 @@ msgstr "Seul un choix peut être coché."
msgid "Documentation informations"
msgstr "Information sur le document"
-#: forms_common.py:775 forms_common.py:823 models.py:1943 models.py:2653
+#: forms_common.py:775 forms_common.py:823 models.py:2004 models.py:2720
msgid "Source type"
msgstr "Type de document"
@@ -441,37 +441,37 @@ msgstr "Référence"
msgid "Internal reference"
msgstr "Référence interne"
-#: forms_common.py:783 models.py:2690
+#: forms_common.py:783 models.py:2757
msgid "Numerical ressource (web address)"
msgstr "Ressource numérique (adresse web)"
-#: forms_common.py:784 models.py:2692
+#: forms_common.py:784 models.py:2759
msgid "Receipt date"
msgstr "Date de réception"
-#: forms_common.py:786 models.py:2096 models.py:2694
+#: forms_common.py:786 models.py:2161 models.py:2761
msgid "Creation date"
msgstr "Date de création"
-#: forms_common.py:789 models.py:2697
+#: forms_common.py:789 models.py:2764
msgid "Receipt date in documentation"
msgstr "Date de réception en documentation"
-#: forms_common.py:791 forms_common.py:827 models.py:317 models.py:577
-#: models.py:1837 models.py:2376 models.py:2704
+#: forms_common.py:791 forms_common.py:827 models.py:323 models.py:634
+#: models.py:1898 models.py:2444 models.py:2771
msgid "Comment"
msgstr "Commentaire"
-#: forms_common.py:793 forms_common.py:826 models.py:979 models.py:1596
-#: models.py:1769 models.py:1811 models.py:2703 templates/sheet_ope.html:128
+#: forms_common.py:793 forms_common.py:826 models.py:1036 models.py:1656
+#: models.py:1830 models.py:1872 models.py:2770 templates/sheet_ope.html:128
msgid "Description"
msgstr "Description"
-#: forms_common.py:796 models.py:2705
+#: forms_common.py:796 models.py:2772
msgid "Additional information"
msgstr "Informations supplémentaires"
-#: forms_common.py:798 forms_common.py:830 models.py:2707
+#: forms_common.py:798 forms_common.py:830 models.py:2774
msgid "Has a duplicate"
msgstr "Existe en doublon"
@@ -488,7 +488,7 @@ msgstr ""
"<p>Les images trop grandes sont retaillées en : %(width)dx%(height)d (le "
"ratio est conservé).</p>"
-#: forms_common.py:819 forms_common.py:848 forms_common.py:882 models.py:2633
+#: forms_common.py:819 forms_common.py:848 forms_common.py:882 models.py:2700
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr "Auteur"
@@ -501,7 +501,7 @@ msgstr "Informations complémentaires"
msgid "Would you like to delete this documentation?"
msgstr "Voulez-vous supprimer ce document ?"
-#: forms_common.py:856 models.py:1944 models.py:2621 models.py:2630
+#: forms_common.py:856 models.py:2005 models.py:2688 models.py:2697
msgid "Author type"
msgstr "Type d'auteur"
@@ -513,7 +513,7 @@ msgstr "Sélection d'auteur"
msgid "There are identical authors."
msgstr "Il y a des auteurs identiques."
-#: forms_common.py:893 models.py:2634 models.py:2686
+#: forms_common.py:893 models.py:2701 models.py:2753
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
@@ -524,14 +524,14 @@ msgid "Administration"
msgstr "Administration"
#: ishtar_menu.py:33
-msgid "Add/modify"
-msgstr "Ajouter/Modifier"
+msgid "Addition/modification"
+msgstr "Ajout/modification"
-#: ishtar_menu.py:36
+#: ishtar_menu.py:36 ishtar_menu.py:70 ishtar_menu.py:101
msgid "Deletion"
msgstr "Suppression"
-#: ishtar_menu.py:39 models.py:1105 views.py:1484
+#: ishtar_menu.py:39 models.py:1162 views.py:1530
msgid "Global variables"
msgstr "Variables globales"
@@ -559,20 +559,15 @@ msgstr "Fusion automatique"
msgid "Manual merge"
msgstr "Fusion manuelle"
-#: ishtar_menu.py:70 ishtar_menu.py:101 models.py:2133 widgets.py:110
-#: templates/ishtar/form_delete.html:11
-msgid "Delete"
-msgstr "Suppression"
-
-#: ishtar_menu.py:109 models.py:2107
+#: ishtar_menu.py:109 models.py:2172
msgid "Imports"
msgstr "Imports"
-#: ishtar_menu.py:112 views.py:1492
+#: ishtar_menu.py:112 views.py:1538
msgid "New import"
msgstr "Nouvel import"
-#: ishtar_menu.py:116 views.py:1506
+#: ishtar_menu.py:116 views.py:1552
msgid "Current imports"
msgstr "Imports en cours"
@@ -580,128 +575,131 @@ msgstr "Imports en cours"
msgid "Old imports"
msgstr "Anciens imports"
-#: models.py:178
+#: models.py:183
msgid "Not a valid item."
msgstr "Élément invalide."
-#: models.py:191
+#: models.py:196
msgid "A selected item is not a valid item."
msgstr "Un élément sélectionné n'est pas valide."
-#: models.py:202
+#: models.py:207
msgid "This item already exists."
msgstr "Cet élément existe déjà."
-#: models.py:313 models.py:576 models.py:1344 models.py:1356
+#: models.py:319 models.py:633 models.py:1401 models.py:1413 models.py:1827
msgid "Label"
msgstr "Libellé"
-#: models.py:315
+#: models.py:321
msgid "Textual ID"
msgstr "Identifiant textuel"
-#: models.py:318 models.py:579 models.py:1313
+#: models.py:324 models.py:636 models.py:1370
msgid "Available"
msgstr "Disponible"
-#: models.py:598 models.py:1883
+#: models.py:655 models.py:1944
msgid "Key"
msgstr "Clé"
-#: models.py:604
+#: models.py:661
msgid "Specific key to an import"
msgstr "Clé spécifique à un import"
-#: models.py:696
+#: models.py:753
msgid "Last editor"
msgstr "Dernier éditeur"
-#: models.py:699
+#: models.py:756
msgid "Creator"
msgstr "Créateur"
-#: models.py:841 models.py:2770
+#: models.py:898 models.py:2837
msgid "Order"
msgstr "Ordre"
-#: models.py:842
+#: models.py:899
msgid "Symmetrical"
msgstr "Symétrique"
-#: models.py:843
+#: models.py:900
msgid "Tiny label"
-msgstr "Petit libellé"
+msgstr "Libellé court"
-#: models.py:857
+#: models.py:914
msgid "Cannot have symmetrical and an inverse_relation"
msgstr "Ne peut pas être symétrique et avoir une relation inverse"
-#: models.py:971
+#: models.py:1028
msgid "Euro"
msgstr "Euro"
-#: models.py:972
+#: models.py:1029
msgid "US dollar"
msgstr "Dollars US"
-#: models.py:978 models.py:1594
+#: models.py:1035 models.py:1654
msgid "Slug"
msgstr "Identifiant texte"
-#: models.py:980
+#: models.py:1037
msgid "Files module"
msgstr "Module Dossiers"
-#: models.py:981
+#: models.py:1038
msgid "Context records module"
msgstr "Module Unités d'Enregistrement"
-#: models.py:983
+#: models.py:1040
msgid "Finds module"
msgstr "Module Mobilier"
-#: models.py:984
+#: models.py:1041
msgid "Need context records module"
msgstr "Nécessite le module Unités d'Enregistrement"
-#: models.py:986
+#: models.py:1043
msgid "Warehouses module"
msgstr "Module Dépôts"
-#: models.py:987
+#: models.py:1044
msgid "Need finds module"
msgstr "Nécessite le module mobilier"
-#: models.py:989
+#: models.py:1046
msgid "Home page"
msgstr "Page d'accueil"
-#: models.py:990
+#: models.py:1047
#, 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 ""
-"Page d'accueil d'Ishtar. Si elle n'est pas définie une page d'accueil par "
-"défaut va apparaître. Utiliser la syntaxe Markdown. {random_image} peut être "
+"Page d'accueil d'Ishtar. Si elle n'est pas définie, une page d'accueil par "
+"défaut apparaît. Utiliser la syntaxe Markdown. {random_image} peut être "
"utilisé pour afficher une image au hasard."
-#: models.py:994
+#: models.py:1051
msgid "File external id"
msgstr "Identifiant externe de fichier"
-#: models.py:996
+#: models.py:1053
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"
+msgstr ""
+"Formule pour gérer les identifiants externes de dossiers. À 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:1001
+#: models.py:1058
msgid "Parcel external id"
msgstr "Identifiant externe de parcelle"
-#: models.py:1004
+#: models.py:1061
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 "
@@ -711,11 +709,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:1009
+#: models.py:1066
msgid "Context record external id"
msgstr "Identifiant externe d'unité d'enregistrement"
-#: models.py:1011
+#: models.py:1068
msgid ""
"Formula to manage context record external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
@@ -725,11 +723,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:1016
+#: models.py:1073
msgid "Base find external id"
msgstr "Identifiant externe de mobilier de base"
-#: models.py:1018
+#: models.py:1075
msgid ""
"Formula to manage base find external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
@@ -739,11 +737,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:1023
+#: models.py:1080
msgid "Find external id"
msgstr "Identifiant externe de mobilier"
-#: models.py:1025
+#: models.py:1082
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 "
@@ -753,11 +751,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:1030
+#: models.py:1087
msgid "Raw name for person"
msgstr "Nom brut pour une personne"
-#: models.py:1032
+#: models.py:1089
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 "
@@ -767,43 +765,43 @@ msgstr ""
"Une formule incorrecte peut rendre l'application inutilisable et l'import de "
"données externes peut alors être destructif."
-#: models.py:1036
+#: models.py:1093
msgid "Current active"
msgstr "Actuellement utilisé"
-#: models.py:1037
+#: models.py:1094
msgid "Currency"
msgstr "Devise"
-#: models.py:1041
+#: models.py:1098
msgid "Ishtar site profile"
msgstr "Profil d'instance Ishtar"
-#: models.py:1042
+#: models.py:1099
msgid "Ishtar site profiles"
msgstr "Profils d'instance Ishtar"
-#: models.py:1098
+#: models.py:1155
msgid "Variable name"
msgstr "Nom de la variable"
-#: models.py:1099
+#: models.py:1156
msgid "Description of the variable"
msgstr "Description de la variable"
-#: models.py:1101 models.py:1884
+#: models.py:1158 models.py:1945
msgid "Value"
msgstr "Valeur"
-#: models.py:1104
+#: models.py:1161
msgid "Global variable"
msgstr "Variable globale"
-#: models.py:1214 models.py:1244
+#: models.py:1271 models.py:1301
msgid "Total"
msgstr "Total"
-#: models.py:1221 models.py:1345 models.py:1357
+#: models.py:1278 models.py:1402 models.py:1414
#: templates/ishtar/sheet_person.html:22
#: templates/ishtar/dashboards/dashboard_main_detail.html:141
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
@@ -811,723 +809,747 @@ msgstr "Total"
msgid "Number"
msgstr "Nombre"
-#: models.py:1308
+#: models.py:1365
msgid "Administrative Act"
msgstr "Acte administratif"
-#: models.py:1312
+#: models.py:1369
msgid "Associated object"
msgstr "Objet associé"
-#: models.py:1316
+#: models.py:1373
msgid "Document template"
msgstr "Patron de document"
-#: models.py:1317
+#: models.py:1374
msgid "Document templates"
-msgstr "Patrons de documents"
+msgstr "Patrons de document"
-#: models.py:1348 models.py:1358 models.py:2091
+#: models.py:1405 models.py:1415 models.py:2156
msgid "State"
msgstr "État"
-#: models.py:1362 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1419 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr "Département"
-#: models.py:1363
+#: models.py:1420
msgid "Departments"
msgstr "Départements"
-#: models.py:1400
+#: models.py:1457
msgid "Raw phone"
msgstr "Téléphone brut"
-#: models.py:1406
+#: models.py:1463
msgid "Alternative address is prefered"
msgstr "L'adresse alternative est préférée"
-#: models.py:1445
+#: models.py:1502
msgid "Tel: "
msgstr "Tél :"
-#: models.py:1449
+#: models.py:1506
msgid "Mobile: "
msgstr "Mobile :"
-#: models.py:1453
+#: models.py:1510
msgid "Email: "
msgstr "Courriel :"
-#: models.py:1458
+#: models.py:1515
msgid "Merge key"
msgstr "Clé de fusion"
-#: models.py:1532
+#: models.py:1589
msgid "Organization types"
msgstr "Types d'organisation"
-#: models.py:1548 views.py:234
+#: models.py:1608 views.py:237
msgid "Operation"
msgstr "Opération"
-#: models.py:1550
+#: models.py:1610
msgid "Archaeological site"
msgstr "Entité Archéologique"
-#: models.py:1551
+#: models.py:1611
msgid "Parcels"
msgstr "Parcelles"
-#: models.py:1553
+#: models.py:1613
msgid "Operation source"
msgstr "Documentation de l'opération"
-#: models.py:1556 views.py:1299 views.py:1350
+#: models.py:1616 views.py:1346 views.py:1396
msgid "Archaeological files"
-msgstr "Dossiers archéologiques"
+msgstr "Dossiers"
-#: models.py:1558 views.py:1302 views.py:1358
+#: models.py:1618 views.py:1349 views.py:1404
msgid "Context records"
msgstr "Unités d'Enregistrement"
-#: models.py:1560
+#: models.py:1620
msgid "Context record relations"
msgstr "Relations entre Unités d'Enregistrement"
-#: models.py:1562 views.py:1304 views.py:1361
-msgid "Finds"
-msgstr "Mobilier"
+#: models.py:1622
+msgid "Base finds"
+msgstr "Mobilier de base"
-#: models.py:1598 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1658 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr "Utilisateurs"
-#: models.py:1600
+#: models.py:1660
msgid "Associated model"
msgstr "Modèle associé"
-#: models.py:1603
+#: models.py:1663
msgid "Is template"
msgstr "Est un patron"
-#: models.py:1604
+#: models.py:1664
msgid "Unicity keys (separator \";\")"
msgstr "Clés d'unicité (séparateur « ; »)"
-#: models.py:1608
+#: models.py:1668
msgid "Importer - Type"
msgstr "Importeur - Type"
-#: models.py:1609
+#: models.py:1669
msgid "Importer - Types"
msgstr "Importeur - Types"
-#: models.py:1699
+#: models.py:1759
msgid "Importer - Default"
msgstr "Importeur - Par défaut"
-#: models.py:1700
+#: models.py:1760
msgid "Importer - Defaults"
msgstr "Importeur - Par défaut"
-#: models.py:1735
+#: models.py:1795
msgid "Importer - Default value"
msgstr "Importeur - Valeur par défaut"
-#: models.py:1736
+#: models.py:1796
msgid "Importer - Default values"
msgstr "Importeur - Valeurs par défaut"
-#: models.py:1768
+#: models.py:1829
msgid "Column number"
msgstr "Numéro de colonne"
-#: models.py:1771
+#: models.py:1832
msgid "Required"
msgstr "Requis"
-#: models.py:1774
+#: models.py:1835
msgid "Importer - Column"
msgstr "Importeur - Colonne"
-#: models.py:1775
+#: models.py:1836
msgid "Importer - Columns"
msgstr "Importeur - Colonnes"
-#: models.py:1795
+#: models.py:1856
msgid "Field name"
msgstr "Nom du champ"
-#: models.py:1797 models.py:1831
+#: models.py:1858 models.py:1892
msgid "Force creation of new items"
msgstr "Forcer la création de nouveaux éléments"
-#: models.py:1799 models.py:1833
+#: models.py:1860 models.py:1894
msgid "Concatenate with existing"
msgstr "Concaténer avec l'existant"
-#: models.py:1801 models.py:1835
+#: models.py:1862 models.py:1896
msgid "Concatenate character"
msgstr "Caractère de concaténation"
-#: models.py:1805
+#: models.py:1866
msgid "Importer - Duplicate field"
msgstr "Importeur - Champ dupliqué"
-#: models.py:1806
+#: models.py:1867
msgid "Importer - Duplicate fields"
msgstr "Importeur - Champs dupliqués"
-#: models.py:1813
+#: models.py:1874
msgid "Regular expression"
msgstr "Expression régulière"
-#: models.py:1816
+#: models.py:1877
msgid "Importer - Regular expression"
msgstr "Importeur - Expression régulière"
-#: models.py:1817
+#: models.py:1878
msgid "Importer - Regular expressions"
msgstr "Importeur - Expressions régulières"
-#: models.py:1840
+#: models.py:1901
msgid "Importer - Target"
msgstr "Importeur - Cible"
-#: models.py:1841
+#: models.py:1902
msgid "Importer - Targets"
msgstr "Importeur - Cibles"
-#: models.py:1865 views.py:518
+#: models.py:1926 views.py:536
msgid "True"
msgstr "Oui"
-#: models.py:1866 views.py:520
+#: models.py:1927 views.py:538
msgid "False"
msgstr "Non"
-#: models.py:1885
+#: models.py:1946
msgid "Is set"
msgstr "Est défini"
-#: models.py:1892
+#: models.py:1953
msgid "Importer - Target key"
-msgstr "Importeur - Rapprochement"
+msgstr "Importeur - Clé de rapprochement"
-#: models.py:1893
+#: models.py:1954
msgid "Importer - Targets keys"
-msgstr "Importeur - Rapprochements"
+msgstr "Importeur - Clés de rapprochement"
-#: models.py:1945 models.py:2669 models.py:2682
+#: models.py:2006 models.py:2736 models.py:2749
msgid "Format"
msgstr "Format"
-#: models.py:1946 models.py:2774
+#: models.py:2007 models.py:2841
msgid "Operation type"
msgstr "Type d'opération"
-#: models.py:1947
+#: models.py:2008
msgid "Period"
msgstr "Périodes"
-#: models.py:1948
+#: models.py:2009
msgid "Report state"
msgstr "État de rapport"
-#: models.py:1949
+#: models.py:2010
+msgid "Remain type"
+msgstr "Type de vestige"
+
+#: models.py:2011
msgid "Unit"
msgstr "Unité"
-#: models.py:1950
+#: models.py:2012
+msgid "Activity type"
+msgstr "Type d'activité"
+
+#: models.py:2013
msgid "Material"
msgstr "Matériau"
-#: models.py:1952
+#: models.py:2015
msgid "Conservatory state"
msgstr "État de conservation"
-#: models.py:1953
+#: models.py:2016
msgid "Preservation type"
msgstr "Type de conservation"
-#: models.py:1954
+#: models.py:2017
msgid "Object type"
msgstr "Type d'objet"
-#: models.py:1956
+#: models.py:2019
msgid "Identification type"
msgstr "Type d'identification"
-#: models.py:1958
+#: models.py:2021
msgid "Context record relation type"
msgstr "Type de relations entre Unités d'Enregistrement"
-#: models.py:1959 models.py:2661
+#: models.py:2022 models.py:2728
msgid "Support type"
msgstr "Type de support"
-#: models.py:1965
+#: models.py:2028
msgid "Integer"
msgstr "Entier"
-#: models.py:1966
+#: models.py:2029
msgid "Float"
msgstr "Nombre à virgule"
-#: models.py:1967
+#: models.py:2030
msgid "String"
msgstr "Chaîne de caractères"
-#: models.py:1968 templates/sheet_ope.html:86
+#: models.py:2031 templates/sheet_ope.html:86
msgid "Date"
msgstr "Date"
-#: models.py:1970 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: models.py:2033 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:1971
+#: models.py:2034
msgid "String to boolean"
msgstr "Chaîne de caractères vers booléen"
-#: models.py:1972
+#: models.py:2035
msgctxt "filesystem"
msgid "File"
msgstr "Fichier"
-#: models.py:1973
+#: models.py:2036
msgid "Unknow type"
msgstr "Type inconnu"
-#: models.py:1989
+#: models.py:2052
msgid "4 digit year. e.g.: \"2015\""
msgstr "Année sur 4 chiffres. Exemple : « 2015 »"
-#: models.py:1990
+#: models.py:2053
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:1991
+#: models.py:2054
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:2001
+#: models.py:2064
msgid "Options"
msgstr "Options"
-#: models.py:2003
+#: models.py:2066
msgid "Split character(s)"
msgstr "Caractère(s) de séparation"
-#: models.py:2007
+#: models.py:2070
msgid "Importer - Formater type"
msgstr "Importeur - Type de mise en forme"
-#: models.py:2008
+#: models.py:2071
msgid "Importer - Formater types"
msgstr "Importeur - Types de mise en forme"
-#: models.py:2055 templates/ishtar/dashboards/dashboard_main_detail.html:63
+#: models.py:2120 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr "Créé"
-#: models.py:2056
+#: models.py:2121
msgid "Analyse in progress"
msgstr "Analyse en cours"
-#: models.py:2057
+#: models.py:2122
msgid "Analysed"
msgstr "Analysé"
-#: models.py:2058
+#: models.py:2123
msgid "Import pending"
msgstr "Import en attente"
-#: models.py:2059
+#: models.py:2124
msgid "Import in progress"
msgstr "Import en cours"
-#: models.py:2060
+#: models.py:2125
msgid "Finished with errors"
msgstr "Terminé avec des erreurs"
-#: models.py:2061
+#: models.py:2126
msgid "Finished"
msgstr "Terminé"
-#: models.py:2062
+#: models.py:2127
msgid "Archived"
msgstr "Archivé"
-#: models.py:2074
+#: models.py:2139
msgid "Imported file"
msgstr "Fichier importé"
-#: models.py:2077
+#: models.py:2142
msgid "Associated images (zip file)"
msgstr "Images associées (fichier zip)"
-#: models.py:2079
+#: models.py:2144
msgid "Encoding"
msgstr "Codage"
-#: models.py:2081
+#: models.py:2146
msgid "Skip lines"
msgstr "Nombre de lignes d'entête"
-#: models.py:2082 templates/ishtar/import_list.html:47
+#: models.py:2147 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr "Fichier erreur"
-#: models.py:2085
+#: models.py:2150
msgid "Result file"
msgstr "Fichier résultant"
-#: models.py:2088 templates/ishtar/import_list.html:53
+#: models.py:2153 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr "Fichier de correspondance"
-#: models.py:2094
+#: models.py:2159
msgid "Conservative import"
msgstr "Import conservateur"
-#: models.py:2099
+#: models.py:2164
msgid "End date"
msgstr "Date de fin"
-#: models.py:2101
+#: models.py:2166
msgid "Remaining seconds"
msgstr "Secondes restantes"
-#: models.py:2106
+#: models.py:2171
msgid "Import"
msgstr "Import"
-#: models.py:2123
+#: models.py:2188
msgid "Analyse"
msgstr "Analyser"
-#: models.py:2125 models.py:2128
+#: models.py:2190 models.py:2193
msgid "Re-analyse"
msgstr "Analyser de nouveau "
-#: models.py:2126
+#: models.py:2191
msgid "Launch import"
msgstr "Lancer l'import"
-#: models.py:2129
+#: models.py:2194
msgid "Re-import"
msgstr "Ré-importer"
-#: models.py:2130
+#: models.py:2195
msgid "Archive"
msgstr "Archiver"
-#: models.py:2132
+#: models.py:2197
msgid "Unarchive"
msgstr "Désarchiver"
-#: models.py:2274
+#: models.py:2198 widgets.py:129 templates/ishtar/form_delete.html:11
+msgid "Delete"
+msgstr "Supprimer"
+
+#: models.py:2339
msgid "Organizations"
msgstr "Organisations"
-#: models.py:2276
+#: models.py:2341
msgid "Can view all Organizations"
msgstr "Peut voir toutes les Organisations"
-#: models.py:2277
+#: models.py:2342
msgid "Can view own Organization"
msgstr "Peut voir sa propre Organisation"
-#: models.py:2278
+#: models.py:2343
msgid "Can add own Organization"
msgstr "Peut ajouter sa propre Organisation"
-#: models.py:2280
+#: models.py:2345
msgid "Can change own Organization"
msgstr "Peut modifier sa propre Organisation"
-#: models.py:2282
+#: models.py:2347
msgid "Can delete own Organization"
msgstr "Peut supprimer sa propre Organisation"
-#: models.py:2317
+#: models.py:2382
msgid "Groups"
msgstr "Groupes"
-#: models.py:2322
+#: models.py:2387
msgid "Person types"
msgstr "Types de personne"
-#: models.py:2330
+#: models.py:2398
msgid "Title type"
msgstr "Type de titre"
-#: models.py:2331
+#: models.py:2399
msgid "Title types"
msgstr "Types de titre"
-#: models.py:2340
+#: models.py:2408
msgid "Mr"
msgstr "M."
-#: models.py:2341
+#: models.py:2409
msgid "Miss"
msgstr "Mlle"
-#: models.py:2342
+#: models.py:2410
msgid "Mr and Mrs"
msgstr "M. et Mme"
-#: models.py:2343
+#: models.py:2411
msgid "Mrs"
msgstr "Mme"
-#: models.py:2344
+#: models.py:2412
msgid "Doctor"
msgstr "Dr."
-#: models.py:2374
+#: models.py:2442
msgid "Contact type"
msgstr "Type de contact"
-#: models.py:2377 models.py:2441
+#: models.py:2445 models.py:2509
msgid "Types"
msgstr "Types"
-#: models.py:2380
+#: models.py:2448
msgid "Is attached to"
msgstr "Est rattaché à"
-#: models.py:2385
+#: models.py:2453
msgid "Persons"
msgstr "Personnes"
-#: models.py:2387
+#: models.py:2455
msgid "Can view all Persons"
msgstr "Peut voir toutes les Personnes"
-#: models.py:2388
+#: models.py:2456
msgid "Can view own Person"
msgstr "Peut voir sa propre Personne"
-#: models.py:2389
+#: models.py:2457
msgid "Can add own Person"
msgstr "Peut ajouter sa propre Personne"
-#: models.py:2390
+#: models.py:2458
msgid "Can change own Person"
msgstr "Peut modifier sa propre Personne"
-#: models.py:2391
+#: models.py:2459
msgid "Can delete own Person"
msgstr "Peut supprimer sa propre Personne"
-#: models.py:2569
+#: models.py:2637
msgid "Advanced shortcut menu"
msgstr "Menu de raccourci (avancé)"
-#: models.py:2572
+#: models.py:2640
msgid "Ishtar user"
msgstr "Utilisateur d'Ishtar"
-#: models.py:2573
+#: models.py:2641
msgid "Ishtar users"
msgstr "Utilisateurs d'Ishtar"
-#: models.py:2616
+#: models.py:2683
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:2622
+#: models.py:2689
msgid "Author types"
msgstr "Types d'auteur"
-#: models.py:2654
+#: models.py:2721
msgid "Source types"
msgstr "Types de document"
-#: models.py:2662
+#: models.py:2729
msgid "Support types"
msgstr "Types de support"
-#: models.py:2670
+#: models.py:2737
msgid "Formats"
msgstr "Formats"
-#: models.py:2677
+#: models.py:2744
msgid "External ID"
msgstr "Identifiant externe"
-#: models.py:2680
+#: models.py:2747
msgid "Support"
msgstr "Support"
-#: models.py:2684
+#: models.py:2751
msgid "Scale"
msgstr "Échelle"
-#: models.py:2698
+#: models.py:2765
msgid "Item number"
msgstr "Numéro d'élément"
-#: models.py:2699
+#: models.py:2766
msgid "Ref."
msgstr "Réf."
-#: models.py:2702
+#: models.py:2769
msgid "Internal ref."
msgstr "Réf. interne"
-#: models.py:2745
+#: models.py:2812
msgid "Surface (m2)"
msgstr "Surface (m2)"
-#: models.py:2746 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2813 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr "Localisation"
-#: models.py:2771
+#: models.py:2838
msgid "Is preventive"
msgstr "Est du préventif"
-#: models.py:2775
+#: models.py:2842
msgid "Operation types"
msgstr "Types d'opération"
-#: models.py:2804
+#: models.py:2871
msgid "Preventive"
msgstr "Préventif"
-#: models.py:2805
+#: models.py:2872
msgid "Research"
msgstr "Programmé"
-#: utils.py:74
+#: utils.py:81
msgid " (...)"
msgstr " (...)"
-#: utils.py:107
+#: utils.py:114
msgid "Load another random image?"
msgstr "Charger une autre image au hasard ?"
-#: views.py:111
+#: views.py:114
msgid "New person"
-msgstr "Nouvelle personne"
+msgstr "Ajouter une personne"
-#: views.py:119
+#: views.py:122
msgid "Person modification"
-msgstr "Modification d'une personne"
+msgstr "Modifier une personne"
-#: views.py:134
+#: views.py:137
msgid "Person deletion"
-msgstr "Suppression de personne"
+msgstr "Supprimer une personne"
-#: views.py:145
+#: views.py:148
msgid "New organization"
-msgstr "Nouvelle organisation"
+msgstr "Ajouter une organisation"
-#: views.py:152
+#: views.py:155
msgid "Organization modification"
-msgstr "Modification d'une organisation"
+msgstr "Modifier une organisation"
-#: views.py:168
+#: views.py:171
msgid "Organization deletion"
-msgstr "Suppression d'une organisation"
+msgstr "Supprimer une organisation"
-#: views.py:175
+#: views.py:178
msgid "Account management"
-msgstr "Gestion des comptes"
+msgstr "Gérer les comptes"
-#: views.py:181
+#: views.py:184
msgid "Account deletion"
-msgstr "Suppression de comptes"
+msgstr "Supprimer un compte"
-#: views.py:233
+#: views.py:236
msgid "Archaeological file"
msgstr "Dossier"
-#: views.py:236
+#: views.py:239
msgid "Context record"
msgstr "Unité d'Enregistrement"
-#: views.py:238
+#: views.py:241
msgid "Find"
msgstr "Mobilier"
-#: views.py:1238 views.py:1281
+#: views.py:243
+msgid "Treatment request"
+msgstr "Demande de traitement"
+
+#: views.py:244
+msgid "Treatment"
+msgstr "Traitement"
+
+#: views.py:1285 views.py:1328
msgid "Operation not permitted."
msgstr "Opération non permise."
-#: views.py:1240
+#: views.py:1287
#, python-format
msgid "New %s"
msgstr "Nouveau %s"
-#: views.py:1300 views.py:1354
+#: views.py:1347 views.py:1400
msgid "Operations"
msgstr "Opérations"
-#: views.py:1553 templates/ishtar/import_list.html:43
+#: views.py:1351 views.py:1407
+msgid "Finds"
+msgstr "Mobilier"
+
+#: views.py:1599 templates/ishtar/import_list.html:43
msgid "Link unmatched items"
msgstr "Associer les éléments non rapprochés"
-#: views.py:1568
+#: views.py:1614
msgid "Delete import"
-msgstr "Suppression de l'import"
+msgstr "Supprimer un import"
-#: views.py:1607
+#: views.py:1653
msgid "Merge persons"
msgstr "Fusionner des personnes"
-#: views.py:1631
+#: views.py:1677
msgid "Select the main person"
msgstr "Choisir la personne principale"
-#: views.py:1640
+#: views.py:1686
msgid "Merge organization"
msgstr "Fusionner des organisations"
-#: views.py:1650
+#: views.py:1696
msgid "Select the main organization"
msgstr "Sélectionner l'organisation principale"
-#: views.py:1690 views.py:1706
+#: views.py:1736 views.py:1752
msgid "Corporation manager"
msgstr "Représentant de la personne morale"
-#: widgets.py:239 widgets.py:347 widgets.py:463
+#: widgets.py:258 widgets.py:365 widgets.py:480
msgid "Search..."
msgstr "Recherche..."
-#: widgets.py:623 templatetags/window_tables.py:79
+#: widgets.py:670 templatetags/window_tables.py:91
msgid "No results"
msgstr "Pas de résultats"
-#: widgets.py:624 templatetags/window_tables.py:80
+#: widgets.py:671 templatetags/window_tables.py:92
msgid "Loading..."
msgstr "Chargement..."
-#: widgets.py:625
+#: widgets.py:672
msgid "Remove"
msgstr "Enlever"
-#: wizards.py:323 templates/ishtar/import_delete.html:20
+#: wizards.py:342 templates/ishtar/import_delete.html:20
msgid "Yes"
msgstr "Oui"
-#: wizards.py:325
+#: wizards.py:344
msgid "No"
msgstr "Non"
-#: wizards.py:1249
+#: wizards.py:1313
#, python-format
msgid "[%(app_name)s] Account creation/modification"
-msgstr "[%(app_name)s] Création /modification du compte"
+msgstr "[%(app_name)s] Création/modification du compte"
#: templates/404.html:14
msgid "Page not found"
@@ -1564,12 +1586,12 @@ msgid "The %(app_name)s team"
msgstr "L'équipe %(app_name)s"
#: templates/base.html:41
-msgid "Searches in the shortcut menu deals with all items."
+msgid "Searches in the shortcut menu deal with all items."
msgstr ""
"Les recherches dans le menu de raccourci concernent tous les éléments."
#: templates/base.html:42
-msgid "Searches in the shortcut menu deals with only your items."
+msgid "Searches in the shortcut menu deal with only your items."
msgstr ""
"Les recherches dans le menu de raccourci ne concernent que vos éléments."
@@ -1619,7 +1641,7 @@ msgstr "Cela peut être long."
#: templates/base.html:117
msgid "Time to take a coffee?"
-msgstr "Il est temps de prendre un café ?"
+msgstr "Il est peut-être temps de prendre un café ?"
#: templates/base.html:118
msgid "Time to take another coffee?"
@@ -1734,7 +1756,7 @@ msgid "Operator's reference code:"
msgstr "Référence de l'opérateur :"
#: templates/sheet_ope.html:36
-msgid "Town planning service:"
+msgid "Planning service:"
msgstr "Service instructeur :"
#: templates/sheet_ope.html:37
@@ -1827,7 +1849,7 @@ msgstr "Documents"
#: templates/sheet_ope.html:117
msgid "No document associated to this operation"
-msgstr "Pas d'opération associée à cette opération"
+msgstr "Pas de document associé à cette opération"
#: templates/sheet_ope.html:121 templates/sheet_ope.html.py:123
msgid "Context Records"
@@ -1871,7 +1893,7 @@ msgstr "Interface d'administration"
#: templates/welcome.html:9
msgid "for admin only."
-msgstr "Seulement pour les administrateurs."
+msgstr "seulement pour les administrateurs."
#: templates/welcome.html:10
msgid "Forum"
@@ -1898,9 +1920,9 @@ msgid "where the magic happens."
msgstr "c'est là que la magie opère."
#: templates/window.html:40 templates/blocks/JQueryJqGrid.html:28
-#: templates/ishtar/manage_basket.html:9
+#: templates/ishtar/manage_basket.html:12
msgid "Add"
-msgstr "Ajout"
+msgstr "Ajouter"
#: templates/admin/base_site.html:4 templates/admin/base_site.html.py:7
msgid "Ishtar administration"
@@ -1980,7 +2002,7 @@ msgstr "supprimer"
#: templates/ishtar/import_list.html:58 templates/ishtar/merge.html:31
#: templates/ishtar/simple_form.html:7
#: templates/ishtar/wizard/confirm_wizard.html:42
-#: templates/ishtar/wizard/default_wizard.html:30
+#: templates/ishtar/wizard/default_wizard.html:31
#: templates/ishtar/wizard/search.html:13
#: templates/ishtar/wizard/validation_bar.html:4
msgid "Validate"
@@ -2027,17 +2049,17 @@ msgstr "Fichier source"
msgid "Control file"
msgstr "Fichier de contrôle"
-#: templates/ishtar/manage_basket.html:7
-msgid "Checking \"Select all\" only select the current page."
-msgstr "Cocher « Tout sélectionner », sélectionne seulement la page courante."
+#: templates/ishtar/manage_basket.html:9
+msgid "Checking \"Select all\" only selects the current page."
+msgstr "Cocher « Tout sélectionner » sélectionne seulement la page courante."
-#: templates/ishtar/manage_basket.html:10
+#: templates/ishtar/manage_basket.html:13
msgid "Basket content"
msgstr "Contenu du panier"
#: templates/ishtar/merge.html:5
msgid "Merge"
-msgstr "Fusion"
+msgstr "Fusionner"
#: templates/ishtar/merge.html:7
msgid "Every operation on this form is irreversible"
@@ -2124,12 +2146,12 @@ msgid "No person in this organization"
msgstr "Pas de personne au sein de cette organisation"
#: templates/ishtar/sheet_organization.html:38
-msgid "General contractor organization of archaelogical files"
-msgstr "Aménageur (organisation) pour les dossiers archéologiques"
+msgid "General contractor organization of archaeological files"
+msgstr "Organisation de l'aménageur des dossiers"
#: templates/ishtar/sheet_organization.html:43
-msgid "Town planning service of archaelogical files"
-msgstr "Service instructeur pour les dossiers archéologiques"
+msgid "Planning service of archaeological files"
+msgstr "Service instructeur des dossiers"
#: templates/ishtar/sheet_person.html:21
#: templates/ishtar/wizard/wizard_person.html:19
@@ -2148,7 +2170,7 @@ msgstr "Autre adresse"
#: templates/ishtar/sheet_person.html:60
msgid "Associated organization"
-msgstr "Organisations associées"
+msgstr "Organisation associée"
#: templates/ishtar/sheet_person.html:71
msgid "Associated operations as scientist"
@@ -2159,16 +2181,19 @@ msgid "Associated operations as responsible"
msgstr "Opérations associées en tant que responsable"
#: templates/ishtar/sheet_person.html:80
-msgid "In charge of archaelogical files"
-msgstr "Responsable des dossiers archéologiques"
+#: templates/ishtar/wizard/wizard_person_deletion.html:6
+msgid "In charge of archaeological files"
+msgstr "Responsable des dossiers"
#: templates/ishtar/sheet_person.html:85
-msgid "General contractor of archaelogical files"
-msgstr "Aménageur des dossiers archéologiques"
+#: templates/ishtar/wizard/wizard_person_deletion.html:14
+msgid "General contractor of archaeological files"
+msgstr "Aménageur des dossiers"
#: templates/ishtar/sheet_person.html:90
-msgid "Responsible for town planning service of archaelogical files"
-msgstr "Responsable au service instructeur des dossiers"
+#: templates/ishtar/wizard/wizard_person_deletion.html:22
+msgid "Responsible for planning service of archaeological files"
+msgstr "Responsable pour le service instructeur des dossiers"
#: templates/ishtar/sheet_person.html:96
msgid "Documents associated to operations"
@@ -2214,8 +2239,8 @@ msgid ""
"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."
+"élément. Par défaut seuls vos propres éléments sont listés. Les nouveaux "
+"éléments et ceux modifiés sont auto-épinglés."
#: templates/ishtar/blocks/advanced_shortcut_menu.html:21
msgid "Search within my items"
@@ -2232,7 +2257,7 @@ msgstr "Rafraîchir le menu"
#: templates/ishtar/blocks/advanced_shortcut_menu.html:36
#: templates/ishtar/blocks/shortcut_menu.html:31
msgid "Unpin"
-msgstr "Détacher"
+msgstr "Désépingler"
#: templates/ishtar/blocks/window_nav.html:6
msgid "Previous version"
@@ -2244,11 +2269,11 @@ msgstr "Restaurer cette version"
#: templates/ishtar/blocks/window_nav.html:17
msgid ""
-"Are you sure to restore to this version? All changement made since this "
-"version will be lost."
+"Are you sure to restore to this version? All changes made since this version "
+"will be lost."
msgstr ""
-"Êtes-vous sûr de vouloir revenir à cette version ? Tous les changements "
-"réalisées depuis cette version seront perdus."
+"Êtes-vous certain de vouloir revenir à cette version ? Tous les changements "
+"réalisés depuis cette version seront perdus."
#: templates/ishtar/blocks/window_nav.html:22
msgid "Restore"
@@ -2276,7 +2301,7 @@ msgstr "Exporter en fichier PDF"
#: templates/ishtar/blocks/window_nav.html:56
msgid "Relation between items are not historized."
-msgstr "Les relations entre éléments ne sont pas historisés."
+msgstr "Les relations entre éléments ne sont pas historisées."
#: templates/ishtar/blocks/window_tables/documents.html:10
msgid "Related to"
@@ -2379,7 +2404,7 @@ msgstr "Vous avez entré les informations suivantes :"
msgid "Would you like to save them?"
msgstr "Voulez-vous sauvegarder ces informations ?"
-#: templates/ishtar/wizard/default_wizard.html:36
+#: templates/ishtar/wizard/default_wizard.html:37
#: templates/ishtar/wizard/parcels_wizard.html:24
#: templates/ishtar/wizard/relations_wizard.html:23
#: templates/ishtar/wizard/search.html:20
@@ -2387,9 +2412,10 @@ msgstr "Voulez-vous sauvegarder ces informations ?"
msgid "Add/Modify"
msgstr "Ajouter/Modifier"
-#: templates/ishtar/wizard/default_wizard.html:58
+#: templates/ishtar/wizard/default_wizard.html:59
msgid ""
-"The form has changed if you don't validate it all your changes will be lost."
+"The form has changed. If you don't validate it, all your changes will be "
+"lost."
msgstr ""
"Le formulaire a changé. Si vous ne le validez pas, tous vos changements "
"seront perdus."
@@ -2409,7 +2435,7 @@ msgstr "tout"
#: templates/ishtar/wizard/parcels_wizard.html:23
msgid "Add all parcels from the archaeological file"
-msgstr "Ajouter toutes les parcelles du dossier archéologique associé"
+msgstr "Ajouter toutes les parcelles du dossier associé"
#: templates/ishtar/wizard/towns_wizard.html:27
msgid "No town set in the associated file."
@@ -2452,18 +2478,6 @@ msgstr "Opérateur des opérations"
msgid "Adminact: operator of archaeological operations"
msgstr "Acte administratif : opérateur des opérations"
-#: templates/ishtar/wizard/wizard_person_deletion.html:6
-msgid "In charge of archaeological files"
-msgstr "Responsable des dossiers"
-
-#: templates/ishtar/wizard/wizard_person_deletion.html:14
-msgid "General contractor of archaeological files"
-msgstr "Aménageur des dossiers"
-
-#: templates/ishtar/wizard/wizard_person_deletion.html:22
-msgid "Responsible town planning service of archaeological files"
-msgstr "Responsable au service instructeur des dossiers"
-
#: templates/ishtar/wizard/wizard_person_deletion.html:30
msgid "Scientist in charge of archaeological files"
msgstr "Responsable scientifique des dossiers"
@@ -2574,7 +2588,7 @@ msgstr "Déconnecté"
#: templates/registration/password_change_done.html:6
msgid "Password changed"
-msgstr "Mot de passe changé"
+msgstr "Mot de passe modifié"
#: templates/registration/password_change_form.html:10
#: templates/registration/password_reset_confirm.html:11
diff --git a/version.py b/version.py
index 91309b62b..813919207 100644
--- a/version.py
+++ b/version.py
@@ -1,4 +1,4 @@
-VERSION = (0, 98, 10)
+VERSION = (0, 99, 0)
def get_version():