diff options
67 files changed, 5045 insertions, 1425 deletions
| diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py index df5a83539..59f683620 100644 --- a/archaeological_context_records/forms.py +++ b/archaeological_context_records/forms.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2010-2013  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2015  É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 @@ -36,7 +36,8 @@ from ishtar_common import widgets  from ishtar_common.forms import FinalForm, FormSet, \      reverse_lazy, get_form_selection, TableSelect  from ishtar_common.forms_common import get_town_field, SourceSelect -from archaeological_operations.forms import OperationSelect, ParcelField +from archaeological_operations.forms import OperationSelect, ParcelField,\ +    RecordRelationsForm as OpeRecordRelationsForm  class RecordSelect(TableSelect): @@ -181,6 +182,35 @@ DatingFormSet = formset_factory(DatingForm, can_delete=True,  DatingFormSet.form_label = _("Dating") +class RecordRelationsForm(OpeRecordRelationsForm): +    current_model = models.RelationType +    current_related_model = models.ContextRecord +    associated_models = {'right_record': models.ContextRecord, +                         'relation_type': models.RelationType} +    right_record = forms.ChoiceField( +        label=_(u"Context record"), choices=[], required=False) + +    def __init__(self, *args, **kwargs): +        crs = None +        if 'data' in kwargs and 'CONTEXT_RECORDS' in kwargs['data']: +            crs = kwargs['data']['CONTEXT_RECORDS'] +            # clean data if not "real" data +            prefix_value = kwargs['prefix'] + '-right_record' +            if not [k for k in kwargs['data'].keys() +                    if k.startswith(prefix_value) and kwargs['data'][k]]: +                kwargs['data'] = None +                if 'files' in kwargs: +                    kwargs.pop('files') +        super(RecordRelationsForm, self).__init__(*args, **kwargs) +        self.fields['relation_type'].choices = \ +            models.RelationType.get_types() +        if crs: +            self.fields['right_record'].choices = [('', '-' * 2)] + crs + +RecordRelationsFormSet = formset_factory(RecordRelationsForm, can_delete=True) +RecordRelationsFormSet.form_label = _(u"Relations") + +  class RecordFormInterpretation(forms.Form):      form_label = _("Interpretation")      associated_models = {'activity': models.ActivityType, diff --git a/archaeological_context_records/locale/django.pot b/archaeological_context_records/locale/django.pot index ca271337c..82298595c 100644 --- a/archaeological_context_records/locale/django.pot +++ b/archaeological_context_records/locale/django.pot @@ -6,380 +6,384 @@  msgid ""  msgstr "" -#: forms.py:43 forms.py:96 models.py:123 +#: forms.py:44 forms.py:97 models.py:124  #: templates/ishtar/sheet_contextrecord.html:72  msgid "ID"  msgstr "" -#: forms.py:47 +#: forms.py:48  msgid "Code PATRIARCHE"  msgstr "" -#: forms.py:48 +#: forms.py:49  msgid "Operation's year"  msgstr "" -#: forms.py:50 +#: forms.py:51  msgid "Operation's number (index by year)"  msgstr "" -#: forms.py:51 forms.py:162 models.py:47 +#: forms.py:52 forms.py:163 models.py:48  msgid "Period"  msgstr "" -#: forms.py:52 +#: forms.py:53  msgid "Unit type"  msgstr "" -#: forms.py:53 +#: forms.py:54  msgid "Parcel (section/number)"  msgstr "" -#: forms.py:71 forms.py:229 views.py:68 +#: forms.py:72 forms.py:259 views.py:68  msgid "Context record search"  msgstr "" -#: forms.py:85 +#: forms.py:86  msgid "You should at least select one context record."  msgstr "" -#: forms.py:91 +#: forms.py:92  msgid "General"  msgstr "" -#: forms.py:95 models.py:116 models.py:119 +#: forms.py:96 models.py:117 models.py:120  #: templates/ishtar/sheet_contextrecord.html:76  msgid "Parcel"  msgstr "" -#: forms.py:98 models.py:124 templates/ishtar/sheet_contextrecord.html:42 +#: forms.py:99 models.py:125 templates/ishtar/sheet_contextrecord.html:42  #: templates/ishtar/sheet_contextrecord.html:75  msgid "Description"  msgstr "" -#: forms.py:100 models.py:129 +#: forms.py:101 models.py:130  msgid "Length (cm)"  msgstr "" -#: forms.py:101 models.py:130 +#: forms.py:102 models.py:131  msgid "Width (cm)"  msgstr "" -#: forms.py:102 models.py:131 +#: forms.py:103 models.py:132  msgid "Thickness (cm)"  msgstr "" -#: forms.py:103 models.py:133 +#: forms.py:104 models.py:134  msgid "Depth (cm)"  msgstr "" -#: forms.py:104 models.py:139 +#: forms.py:105 models.py:140  msgid "Unit"  msgstr "" -#: forms.py:106 models.py:135 +#: forms.py:107 models.py:136  msgid "Location"  msgstr "" -#: forms.py:151 +#: forms.py:152  msgid "This ID already exist for this operation."  msgstr "" -#: forms.py:157 forms.py:181 models.py:58 +#: forms.py:158 forms.py:182 models.py:59  msgid "Dating"  msgstr "" -#: forms.py:163 models.py:48 +#: forms.py:164 models.py:49  msgid "Start date"  msgstr "" -#: forms.py:164 models.py:49 models.py:128 +#: forms.py:165 models.py:50 models.py:129  msgid "End date"  msgstr "" -#: forms.py:165 models.py:52 +#: forms.py:166 models.py:53  msgid "Quality"  msgstr "" -#: forms.py:166 models.py:34 models.py:50 +#: forms.py:167 models.py:35 models.py:51  msgid "Dating type"  msgstr "" -#: forms.py:185 forms.py:192 models.py:144 +#: forms.py:191 ishtar_menu.py:29 models.py:318 +msgid "Context record" +msgstr "" + +#: forms.py:211 +msgid "Relations" +msgstr "" + +#: forms.py:215 forms.py:222 models.py:145  #: templates/ishtar/sheet_contextrecord.html:52  msgid "Interpretation"  msgstr "" -#: forms.py:188 models.py:141 +#: forms.py:218 models.py:142  msgid "Has furniture?"  msgstr "" -#: forms.py:190 models.py:143 +#: forms.py:220 models.py:144  msgid "Filling"  msgstr "" -#: forms.py:194 models.py:164 +#: forms.py:224 models.py:165  msgid "Activity"  msgstr "" -#: forms.py:196 models.py:162 +#: forms.py:226 models.py:163  msgid "Identification"  msgstr "" -#: forms.py:198 models.py:147 +#: forms.py:228 models.py:148  msgid "TAQ"  msgstr "" -#: forms.py:199 models.py:151 +#: forms.py:229 models.py:152  msgid "Estimated TAQ"  msgstr "" -#: forms.py:201 models.py:154 +#: forms.py:231 models.py:155  msgid "TPQ"  msgstr "" -#: forms.py:202 models.py:158 +#: forms.py:232 models.py:159  msgid "Estimated TPQ"  msgstr "" -#: forms.py:215 +#: forms.py:245  msgid "Operation search"  msgstr "" -#: forms.py:217 +#: forms.py:247  msgid "You should select an operation."  msgstr "" -#: forms.py:222 +#: forms.py:252  msgid "Would you like to delete this context record?"  msgstr "" -#: forms.py:231 +#: forms.py:261  msgid "You should select a context record."  msgstr "" -#: forms.py:236 +#: forms.py:266  msgid "Town of the operation"  msgstr "" -#: forms.py:238 +#: forms.py:268  msgid "Year of the operation"  msgstr "" -#: forms.py:240 +#: forms.py:270  msgid "Period of the context record"  msgstr "" -#: forms.py:242 +#: forms.py:272  msgid "Unit type of the context record"  msgstr "" -#: forms.py:255 +#: forms.py:285  msgid "Documentation search"  msgstr "" -#: forms.py:257 +#: forms.py:287  msgid "You should select a document."  msgstr "" -#: ishtar_menu.py:27 models.py:310 -msgid "Context record" -msgstr "" - -#: ishtar_menu.py:28 +#: ishtar_menu.py:30  msgid "Search"  msgstr "" -#: ishtar_menu.py:32 +#: ishtar_menu.py:34  msgid "Creation"  msgstr "" -#: ishtar_menu.py:36 ishtar_menu.py:53 +#: ishtar_menu.py:38 ishtar_menu.py:55  msgid "Modification"  msgstr "" -#: ishtar_menu.py:40 ishtar_menu.py:59 +#: ishtar_menu.py:42 ishtar_menu.py:61  msgid "Deletion"  msgstr "" -#: ishtar_menu.py:44 +#: ishtar_menu.py:46  msgid "Documentation"  msgstr "" -#: ishtar_menu.py:47 +#: ishtar_menu.py:49  msgid "Add"  msgstr "" -#: models.py:35 +#: models.py:36  msgid "Dating types"  msgstr "" -#: models.py:41 +#: models.py:42  msgid "Dating quality"  msgstr "" -#: models.py:42 +#: models.py:43  msgid "Dating qualities"  msgstr "" -#: models.py:54 +#: models.py:55  msgid "Precise dating"  msgstr "" -#: models.py:59 +#: models.py:60  msgid "Datings"  msgstr "" -#: models.py:70 models.py:84 models.py:96 +#: models.py:71 models.py:85 models.py:97  msgid "Order"  msgstr "" -#: models.py:71 +#: models.py:72  msgid "Parent unit"  msgstr "" -#: models.py:75 +#: models.py:76  msgid "Type Unit"  msgstr "" -#: models.py:76 +#: models.py:77  msgid "Types Unit"  msgstr "" -#: models.py:87 +#: models.py:88  msgid "Type Activity"  msgstr "" -#: models.py:88 +#: models.py:89  msgid "Types Activity"  msgstr "" -#: models.py:99 +#: models.py:100  msgid "Type Identification"  msgstr "" -#: models.py:100 +#: models.py:101  msgid "Types Identification"  msgstr "" -#: models.py:117 +#: models.py:118  msgid "External ID"  msgstr "" -#: models.py:121 wizards.py:60 +#: models.py:122 wizards.py:68  msgid "Operation"  msgstr "" -#: models.py:125 +#: models.py:126  msgid "Comment"  msgstr "" -#: models.py:126 +#: models.py:127  msgid "Date d'ouverture"  msgstr "" -#: models.py:136 +#: models.py:137  msgid "A short description of the location of the context record"  msgstr "" -#: models.py:148 +#: models.py:149  msgid ""  "\"Terminus Ante Quem\" the context record can't have been created after this "  "date"  msgstr "" -#: models.py:152 +#: models.py:153  msgid "Estimation of a \"Terminus Ante Quem\""  msgstr "" -#: models.py:155 +#: models.py:156  msgid ""  "\"Terminus Post Quem\" the context record can't have been created before "  "this date"  msgstr "" -#: models.py:159 +#: models.py:160  msgid "Estimation of a \"Terminus Post Quem\""  msgstr "" -#: models.py:170 models.py:171 templates/ishtar/sheet_contextrecord.html:6 +#: models.py:171 models.py:172 templates/ishtar/sheet_contextrecord.html:6  msgid "Context Record"  msgstr "" -#: models.py:173 +#: models.py:174  msgid "Can view all Context Record"  msgstr "" -#: models.py:175 +#: models.py:176  msgid "Can view own Context Record"  msgstr "" -#: models.py:177 +#: models.py:178  msgid "Can add own Context Record"  msgstr "" -#: models.py:179 +#: models.py:180  msgid "Can change own Context Record"  msgstr "" -#: models.py:181 +#: models.py:182  msgid "Can delete own Context Record"  msgstr "" -#: models.py:190 +#: models.py:191  msgctxt "short"  msgid "Context record"  msgstr "" -#: models.py:282 +#: models.py:289  msgid "Inverse relation"  msgstr "" -#: models.py:286 templates/ishtar/sheet_contextrecord.html:71 +#: models.py:293 templates/ishtar/sheet_contextrecord.html:71  msgid "Relation type"  msgstr "" -#: models.py:287 +#: models.py:294  msgid "Relation types"  msgstr "" -#: models.py:299 +#: models.py:307  msgid "Record relation"  msgstr "" -#: models.py:300 +#: models.py:308  msgid "Record relations"  msgstr "" -#: models.py:307 +#: models.py:315  msgid "Context record documentation"  msgstr "" -#: models.py:308 +#: models.py:316  msgid "Context record documentations"  msgstr "" -#: views.py:77 +#: views.py:78  msgid "New context record"  msgstr "" -#: views.py:86 +#: views.py:88  msgid "Context record modification"  msgstr "" -#: views.py:100 +#: views.py:102  msgid "Context record deletion"  msgstr "" -#: views.py:108 +#: views.py:110  msgid "Context record: new source"  msgstr "" -#: views.py:116 +#: views.py:118  msgid "Context record: source modification"  msgstr "" -#: views.py:122 +#: views.py:124  msgid "Context record: source deletion"  msgstr "" diff --git a/archaeological_context_records/migrations/0013_auto__add_field_contextrecordsource_duplicate__chg_field_contextrecord.py b/archaeological_context_records/migrations/0013_auto__add_field_contextrecordsource_duplicate__chg_field_contextrecord.py new file mode 100644 index 000000000..2bed4037f --- /dev/null +++ b/archaeological_context_records/migrations/0013_auto__add_field_contextrecordsource_duplicate__chg_field_contextrecord.py @@ -0,0 +1,586 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + +    def forwards(self, orm): +        # Adding field 'ContextRecordSource.duplicate' +        db.add_column('archaeological_context_records_contextrecordsource', 'duplicate', +                      self.gf('django.db.models.fields.BooleanField')(default=False), +                      keep_default=False) + + +        # Changing field 'ContextRecordSource.internal_reference' +        db.alter_column('archaeological_context_records_contextrecordsource', 'internal_reference', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) + +        # Changing field 'ContextRecordSource.reference' +        db.alter_column('archaeological_context_records_contextrecordsource', 'reference', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) + +    def backwards(self, orm): +        # Deleting field 'ContextRecordSource.duplicate' +        db.delete_column('archaeological_context_records_contextrecordsource', 'duplicate') + + +        # Changing field 'ContextRecordSource.internal_reference' +        db.alter_column('archaeological_context_records_contextrecordsource', 'internal_reference', self.gf('django.db.models.fields.CharField')(max_length=25, null=True)) + +        # Changing field 'ContextRecordSource.reference' +        db.alter_column('archaeological_context_records_contextrecordsource', 'reference', self.gf('django.db.models.fields.CharField')(max_length=25, 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': {'object_name': 'ContextRecord'}, +            'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.ActivityType']", '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'}), +            'depth': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', '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'}), +            '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.IntegerField', [], {'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']"}), +            '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.IntegerField', [], {'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.IntegerField', [], {'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'}), +            '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'}), +            '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'}), +            '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'}), +            'closing_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'depth': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', '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'}), +            'interpretation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '200'}), +            'length': ('django.db.models.fields.IntegerField', [], {'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'}), +            '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.IntegerField', [], {'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.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_context_records.identificationtype': { +            'Meta': {'ordering': "('order',)", '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',)", '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'}), +            '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'}), +            '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'}), +            '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.CharField', [], {'max_length': '60', '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'}), +            'reference_number': ('django.db.models.fields.CharField', [], {'max_length': '200', '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.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'total_surface': ('django.db.models.fields.IntegerField', [], {'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': '2015'}) +        }, +        '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'}, +            '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_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            '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'}), +            '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'}), +            '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'}), +            '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'}), +            'negative_result': ('django.db.models.fields.NullBooleanField', [], {'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'}), +            'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}), +            'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}), +            'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'report_processing': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ReportState']", 'null': 'True', 'blank': 'True'}), +            'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}), +            'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.parcel': { +            'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}), +            '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'}), +            'section': ('django.db.models.fields.CharField', [], {'max_length': '4'}), +            'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.period': { +            'Meta': {'ordering': "('order',)", 'object_name': 'Period'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'end_date': ('django.db.models.fields.IntegerField', [], {}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {}), +            'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}), +            'start_date': ('django.db.models.fields.IntegerField', [], {}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.remaintype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.reportstate': { +            'Meta': {'ordering': "('order',)", 'object_name': 'ReportState'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'auth.group': { +            'Meta': {'object_name': 'Group'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), +            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) +        }, +        'auth.permission': { +            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, +            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) +        }, +        'auth.user': { +            'Meta': {'object_name': 'User'}, +            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), +            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), +            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), +            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), +            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) +        }, +        'contenttypes.contenttype': { +            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, +            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) +        }, +        'ishtar_common.arrondissement': { +            'Meta': {'object_name': 'Arrondissement'}, +            'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) +        }, +        'ishtar_common.author': { +            'Meta': {'object_name': 'Author'}, +            'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) +        }, +        'ishtar_common.authortype': { +            'Meta': {'object_name': 'AuthorType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.canton': { +            'Meta': {'object_name': 'Canton'}, +            'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) +        }, +        'ishtar_common.department': { +            'Meta': {'ordering': "['number']", 'object_name': 'Department'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), +            'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), +            'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.format': { +            'Meta': {'object_name': 'Format'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.import': { +            'Meta': {'object_name': 'Import'}, +            'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), +            'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), +            'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), +            'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), +            'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), +            'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), +            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) +        }, +        'ishtar_common.importertype': { +            'Meta': {'object_name': 'ImporterType'}, +            'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), +            'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), +            'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.ishtaruser': { +            'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), +            'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) +        }, +        'ishtar_common.operationtype': { +            'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.organization': { +            'Meta': {'object_name': 'Organization'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', '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.CharField', [], {'max_length': '300', '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': '300'}), +            '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'}), +            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', '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'}), +            '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']"}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', '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.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), +            'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            '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'}), +            'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), +            'title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.persontype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.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.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'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        } +    } + +    complete_apps = ['archaeological_context_records']
\ No newline at end of file diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 85f7582f3..52d976cfd 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -106,6 +106,7 @@ class IdentificationType(GeneralType):  class ContextRecord(BaseHistorizedItem, OwnPerms, ShortMenuItem): +    SHOW_URL = 'show-contextrecord'      TABLE_COLS = ['parcel.town', 'operation.year',                    'operation.operation_code',                    'label', 'unit'] @@ -296,6 +297,7 @@ class RelationType(GeneralRelationType):  class RecordRelations(GeneralRecordRelations, models.Model): +    MAIN_ATTR = 'left_record'      left_record = models.ForeignKey(ContextRecord,                                      related_name='right_relations')      right_record = models.ForeignKey(ContextRecord, @@ -310,6 +312,8 @@ post_delete.connect(post_delete_record_relation, sender=RecordRelations)  class ContextRecordSource(Source): +    SHOW_URL = 'show-contextrecordsource' +      class Meta:          verbose_name = _(u"Context record documentation")          verbose_name_plural = _(u"Context record documentations") diff --git a/archaeological_context_records/templates/ishtar/sheet_contextrecordsource.html b/archaeological_context_records/templates/ishtar/sheet_contextrecordsource.html new file mode 100644 index 000000000..17d09d843 --- /dev/null +++ b/archaeological_context_records/templates/ishtar/sheet_contextrecordsource.html @@ -0,0 +1,11 @@ +{% extends "ishtar/sheet_source.html" %} +{% load i18n window_field link_to_window %} + +{% block head_sheet %} +{{block.super}} +<h1>{% trans "Context record source"%}</h1> +{% endblock %} + +{% block related %} +{% field "Related context record" item.owner '' item.owner|link_to_window %} +{% endblock %} diff --git a/archaeological_context_records/templates/ishtar/sheet_contextrecordsource_pdf.html b/archaeological_context_records/templates/ishtar/sheet_contextrecordsource_pdf.html new file mode 100644 index 000000000..8e6b9bb85 --- /dev/null +++ b/archaeological_context_records/templates/ishtar/sheet_contextrecordsource_pdf.html @@ -0,0 +1,18 @@ +{% extends "ishtar/sheet_contextrecordsource.html" %} +{% block header %} +<link rel="stylesheet" href="{{STATIC_URL}}/media/style_basic.css" /> +{% endblock %} +{% block main_head %} +{{ block.super }} +<div id="pdfheader"> +Ishtar – {{APP_NAME}} – {{item}} +</div> +{% endblock %} +{%block head_sheet%}{%endblock%} +{%block main_foot%} +<div id="pdffooter"> +– <pdf:pagenumber/> – +</div> +</body> +</html> +{%endblock%} diff --git a/archaeological_context_records/templates/ishtar/sheet_contextrecordsource_window.html b/archaeological_context_records/templates/ishtar/sheet_contextrecordsource_window.html new file mode 100644 index 000000000..21dd20758 --- /dev/null +++ b/archaeological_context_records/templates/ishtar/sheet_contextrecordsource_window.html @@ -0,0 +1,3 @@ +{% extends "ishtar/sheet_contextrecordsource.html" %} +{% block main_head %}{%endblock%} +{% block main_foot %}{%endblock%} diff --git a/archaeological_context_records/urls.py b/archaeological_context_records/urls.py index 6ffc2f194..da6d80a98 100644 --- a/archaeological_context_records/urls.py +++ b/archaeological_context_records/urls.py @@ -19,6 +19,7 @@  from django.conf.urls.defaults import * +from archaeological_context_records import models  from ishtar_common.wizards import check_rights  import views @@ -59,7 +60,7 @@ urlpatterns = patterns(  urlpatterns += patterns(      'archaeological_context_records.views',      url(r'show-contextrecord(?:/(?P<pk>.+))?/(?P<type>.+)?$', -        'show_contextrecord', name='show-contextrecord'), +        'show_contextrecord', name=models.ContextRecord.SHOW_URL),      url(r'show-historized-contextrecord/(?P<pk>.+)?/(?P<date>.+)?$',          'show_contextrecord', name='show-historized-contextrecord'),      url(r'revert-contextrecord/(?P<pk>.+)/(?P<date>.+)$', @@ -80,6 +81,8 @@ urlpatterns += patterns(      url(r'get-contextrecord-full/(?P<type>.+)?$',          'get_contextrecord', name='get-contextrecord-full',          kwargs={'full': True}), +    url(r'show-contextrecordsource(?:/(?P<pk>.+))?/(?P<type>.+)?$', +        'show_contextrecordsource', name=models.ContextRecordSource.SHOW_URL),      url(r'get-contexrecordsource/(?P<type>.+)?$',          'get_contextrecordsource', name='get-contextrecordsource'),  ) diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py index cbf34ee07..13375f866 100644 --- a/archaeological_context_records/views.py +++ b/archaeological_context_records/views.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2010-2013  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2015  É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 @@ -51,9 +51,14 @@ get_contextrecord_for_ope = get_item(      'get_contextrecord', 'contextrecord',      extra_request_keys=contextrecord_extra_keys,      own_table_cols=models.ContextRecord.TABLE_COLS_FOR_OPE) + +show_contextrecordsource = show_item(models.ContextRecordSource, +                                     'contextrecordsource') +  get_contextrecordsource = get_item(      models.ContextRecordSource,      'get_contextrecordsource', 'contextrecordsource', +    bool_fields=['duplicate'],      extra_request_keys={          'context_record__parcel__town': 'context_record__parcel__town__pk',          'context_record__operation__year': 'context_record__operation__year', @@ -73,6 +78,7 @@ record_creation_wizard = RecordWizard.as_view([      ('general-record_creation', RecordFormGeneral),      ('datings-record_creation', DatingFormSet),      ('interpretation-record_creation', RecordFormInterpretation), +    ('relations-record_creation', RecordRelationsFormSet),      ('final-record_creation', FinalForm)],      label=_(u"New context record"),      url_name='record_creation',) @@ -82,6 +88,7 @@ record_modification_wizard = RecordModifWizard.as_view([      ('general-record_modification', RecordFormGeneral),      ('datings-record_modification', DatingFormSet),      ('interpretation-record_modification', RecordFormInterpretation), +    ('relations-record_creation', RecordRelationsFormSet),      ('final-record_modification', FinalForm)],      label=_(u"Context record modification"),      url_name='record_modification',) diff --git a/archaeological_context_records/wizards.py b/archaeological_context_records/wizards.py index 99c666e89..2449b400e 100644 --- a/archaeological_context_records/wizards.py +++ b/archaeological_context_records/wizards.py @@ -29,6 +29,14 @@ class RecordWizard(Wizard):      model = models.ContextRecord      edit = False      wizard_done_window = reverse_lazy('show-contextrecord') +    relations_step_key = 'relations' + +    def get_template_names(self): +        templates = super(RecordWizard, self).get_template_names() +        current_step = self.steps.current +        if current_step.startswith(self.relations_step_key): +            templates = ['ishtar/wizard/relations_wizard.html'] + templates +        return templates      def get_current_operation(self):          step = self.steps.current @@ -87,9 +95,21 @@ class RecordWizard(Wizard):              else:                  current_object = self.get_current_object()                  data['context_record'] = current_object +        elif step.startswith('relations') and hasattr(form, 'management_form'): +            data['CONTEXT_RECORDS'] = self.get_other_context_records()          form = super(RecordWizard, self).get_form(step, data, files)          return form +    def get_other_context_records(self): +        operation = self.get_current_operation() +        if not operation: +            return [] +        q = models.ContextRecord.objects.filter(operation=operation) +        obj = self.get_current_object() +        if obj and obj.pk: +            q = q.exclude(pk=obj.pk) +        return [(cr.pk, unicode(cr)) for cr in q.all()] +  class RecordModifWizard(RecordWizard):      modification = True diff --git a/archaeological_files/data_importer.py b/archaeological_files/data_importer.py index 7e3c0c118..ba92c63ab 100644 --- a/archaeological_files/data_importer.py +++ b/archaeological_files/data_importer.py @@ -61,7 +61,8 @@ class FilePostProcessing(object):      def post_processing(self, item, data):          if not item.end_date:  # auto-close              open_date = item.reception_date or item.creation_date -            item.end_date = open_date + datetime.timedelta(30) +            if open_date: +                item.end_date = open_date + datetime.timedelta(30)          item.save()          return item diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index a8dd99135..8c360e364 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -379,6 +379,8 @@ class AdministrativeActFileModifySelect(TableSelect):          ref_sra = forms.CharField(label=u"Référence SRA",                                    max_length=15)      act_type = forms.ChoiceField(label=_("Act type"), choices=[]) +    act_object = forms.CharField(label=_(u"Object (full text search)"), +                                 max_length=300)      operation__towns = get_town_field()      if settings.ISHTAR_DPTS:          operation__towns__numero_insee__startswith = forms.ChoiceField( @@ -442,6 +444,8 @@ class AdministrativeActFileSelect(TableSelect):      if settings.ISHTAR_DPTS:          operation__towns__numero_insee__startswith = forms.ChoiceField(              label=_(u"Department"), choices=[]) +    act_object = forms.CharField(label=_(u"Object (full text search)"), +                                 max_length=300)      history_creator = forms.IntegerField(          label=_(u"Created by"),          widget=widgets.JQueryAutoComplete( diff --git a/archaeological_files/locale/django.pot b/archaeological_files/locale/django.pot index 3c3a4ef24..b480fa0fd 100644 --- a/archaeological_files/locale/django.pot +++ b/archaeological_files/locale/django.pot @@ -6,20 +6,20 @@  msgid ""  msgstr "" -#: forms.py:51 forms.py:191 forms.py:235 forms.py:376 forms.py:429 +#: forms.py:51 forms.py:191 forms.py:235 forms.py:376 forms.py:431  #: models.py:75 templates/ishtar/sheet_file.html:137  msgid "Year"  msgstr "" -#: forms.py:52 forms.py:196 forms.py:237 forms.py:428 models.py:78 +#: forms.py:52 forms.py:196 forms.py:237 forms.py:430 models.py:78  msgid "Numeric reference"  msgstr "" -#: forms.py:54 forms.py:198 forms.py:431 +#: forms.py:54 forms.py:198 forms.py:433  msgid "Other reference"  msgstr "" -#: forms.py:56 forms.py:409 +#: forms.py:56 forms.py:411  msgid "File name"  msgstr "" @@ -39,23 +39,23 @@ msgstr ""  msgid "Is active?"  msgstr "" -#: forms.py:62 forms.py:267 forms.py:411 models.py:91 +#: forms.py:62 forms.py:267 forms.py:413 models.py:91  msgid "General contractor"  msgstr "" -#: forms.py:69 forms.py:420 +#: forms.py:69 forms.py:422  msgid "Organization of general contractor"  msgstr "" -#: forms.py:76 forms.py:433 templates/ishtar/sheet_file.html:114 +#: forms.py:76 forms.py:435 templates/ishtar/sheet_file.html:114  msgid "In charge"  msgstr "" -#: forms.py:83 forms.py:446 +#: forms.py:83 forms.py:450  msgid "Created by"  msgstr "" -#: forms.py:90 forms.py:292 forms.py:441 models.py:117 +#: forms.py:90 forms.py:292 forms.py:443 models.py:117  msgid "Permit reference"  msgstr "" @@ -193,67 +193,71 @@ msgstr ""  msgid "Index"  msgstr "" -#: forms.py:381 forms.py:403 forms.py:489 +#: forms.py:381 forms.py:405 forms.py:493  msgid "Act type"  msgstr "" -#: forms.py:385 forms.py:444 models.py:514 +#: forms.py:382 forms.py:447 +msgid "Object (full text search)" +msgstr "" + +#: forms.py:387 forms.py:446 models.py:514  msgid "Department"  msgstr "" -#: forms.py:405 +#: forms.py:407  msgid "Signature date after"  msgstr "" -#: forms.py:407 +#: forms.py:409  msgid "Signature date before"  msgstr "" -#: ishtar_menu.py:30 models.py:186 templates/ishtar/sheet_file.html:6 +#: ishtar_menu.py:33 models.py:186 templates/ishtar/sheet_file.html:6  msgid "Archaeological file"  msgstr "" -#: ishtar_menu.py:32 ishtar_menu.py:50 +#: ishtar_menu.py:36 ishtar_menu.py:59  msgid "Search"  msgstr "" -#: ishtar_menu.py:35 +#: ishtar_menu.py:40  msgid "Creation"  msgstr "" -#: ishtar_menu.py:38 ishtar_menu.py:58 +#: ishtar_menu.py:44 ishtar_menu.py:67  msgid "Modification"  msgstr "" -#: ishtar_menu.py:41 +#: ishtar_menu.py:48  msgid "Closing"  msgstr "" -#: ishtar_menu.py:44 ishtar_menu.py:62 +#: ishtar_menu.py:52 ishtar_menu.py:71  msgid "Deletion"  msgstr "" -#: ishtar_menu.py:47 +#: ishtar_menu.py:56  msgid "Administrative act"  msgstr "" -#: ishtar_menu.py:54 +#: ishtar_menu.py:63  msgid "Add"  msgstr "" -#: ishtar_menu.py:66 +#: ishtar_menu.py:75  msgid "Documents"  msgstr "" -#: ishtar_menu.py:72 +#: ishtar_menu.py:81  msgid "Dashboard"  msgstr "" -#: ishtar_menu.py:74 +#: ishtar_menu.py:82  msgid "General informations"  msgstr "" -#: ishtar_menu.py:77 models.py:187 +#: ishtar_menu.py:85 models.py:187  #: templates/ishtar/dashboards/dashboard_file.html:8  msgid "Archaeological files"  msgstr "" @@ -382,39 +386,39 @@ msgstr ""  msgid "File"  msgstr "" -#: views.py:141 +#: views.py:142  msgid "File search"  msgstr "" -#: views.py:150 +#: views.py:151  msgid "New file"  msgstr "" -#: views.py:169 +#: views.py:170  msgid "File modification"  msgstr "" -#: views.py:192 +#: views.py:193  msgid "File closing"  msgstr "" -#: views.py:197 +#: views.py:198  msgid "File deletion"  msgstr "" -#: views.py:204 +#: views.py:205  msgid "File: search administrative act"  msgstr "" -#: views.py:213 +#: views.py:214  msgid "File: new administrative act"  msgstr "" -#: views.py:223 +#: views.py:224  msgid "File: administrative act modification"  msgstr "" -#: views.py:232 +#: views.py:233  msgid "File: administrative act deletion"  msgstr "" diff --git a/archaeological_files/migrations/0029_auto__chg_field_file_creation_date__chg_field_historicalfile_creation_.py b/archaeological_files/migrations/0029_auto__chg_field_file_creation_date__chg_field_historicalfile_creation_.py new file mode 100644 index 000000000..52a9f70e4 --- /dev/null +++ b/archaeological_files/migrations/0029_auto__chg_field_file_creation_date__chg_field_historicalfile_creation_.py @@ -0,0 +1,335 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + +    def forwards(self, orm): + +        # Changing field 'File.creation_date' +        db.alter_column('archaeological_files_file', 'creation_date', self.gf('django.db.models.fields.DateField')(null=True)) + +        # Changing field 'HistoricalFile.creation_date' +        db.alter_column('archaeological_files_historicalfile', 'creation_date', self.gf('django.db.models.fields.DateField')(null=True)) + +    def backwards(self, orm): + +        # Changing field 'File.creation_date' +        db.alter_column('archaeological_files_file', 'creation_date', self.gf('django.db.models.fields.DateField')()) + +        # Changing field 'HistoricalFile.creation_date' +        db.alter_column('archaeological_files_historicalfile', 'creation_date', self.gf('django.db.models.fields.DateField')()) + +    models = { +        'archaeological_files.file': { +            'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            '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.CharField', [], {'max_length': '60', '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'}), +            'reference_number': ('django.db.models.fields.CharField', [], {'max_length': '200', '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.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'total_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'file'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}), +            'year': ('django.db.models.fields.IntegerField', [], {'default': '2016'}) +        }, +        'archaeological_files.filebydepartment': { +            'Meta': {'object_name': 'FileByDepartment', 'db_table': "'file_department'", 'managed': 'False'}, +            'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), +            'file': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.File']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) +        }, +        '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.historicalfile': { +            'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalFile'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            '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_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', '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': '120', 'null': 'True', 'blank': 'True'}), +            'file_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'general_contractor_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', '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'}), +            'imported_line': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            '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_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            '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_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'permit_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}), +            'permit_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'planning_service_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            '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'}), +            'reference_number': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'related_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'requested_operation_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'research_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'responsible_town_planning_service_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'saisine_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'total_developed_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'total_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'year': ('django.db.models.fields.IntegerField', [], {'default': '2016'}) +        }, +        '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'}) +        }, +        '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.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.import': { +            'Meta': {'object_name': 'Import'}, +            'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), +            'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), +            'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), +            'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), +            'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), +            'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), +            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) +        }, +        'ishtar_common.importertype': { +            'Meta': {'object_name': 'ImporterType'}, +            'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), +            'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), +            'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.ishtaruser': { +            'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), +            'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) +        }, +        'ishtar_common.operationtype': { +            'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.organization': { +            'Meta': {'object_name': 'Organization'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', '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.CharField', [], {'max_length': '300', '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': '300'}), +            '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'}), +            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', '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'}), +            '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']"}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', '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.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), +            'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            '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'}), +            'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), +            'title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.persontype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.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.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'}), +            '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_files']
\ No newline at end of file diff --git a/archaeological_files/models.py b/archaeological_files/models.py index 16cd6df65..d64d20a02 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -120,8 +120,9 @@ class File(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem,                                    blank=True, related_name='file_main')      towns = models.ManyToManyField(Town, verbose_name=_(u"Towns"),                                     related_name='file') -    creation_date = models.DateField(_(u"Creation date"), -                                     default=datetime.date.today) +    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)      related_file = models.ForeignKey("File", verbose_name=_(u"Related file"), diff --git a/archaeological_files/views.py b/archaeological_files/views.py index ad6eff854..9b2044ecc 100644 --- a/archaeological_files/views.py +++ b/archaeological_files/views.py @@ -116,6 +116,7 @@ get_administrativeactfile = get_item(          'history_creator': 'history_creator__ishtaruser__person__pk',          'operation__towns': 'operation__towns__pk',          'act_type__intented_to': 'act_type__intented_to', +        'act_object': 'act_object__icontains',          'signature_date_before': 'signature_date__lte',          'signature_date_after': 'signature_date__gte',          'associated_file__general_contractor__attached_to': diff --git a/archaeological_files_pdl/migrations/__init__.py b/archaeological_files_pdl/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/archaeological_files_pdl/migrations/__init__.py diff --git a/archaeological_finds/data_importer.py b/archaeological_finds/data_importer.py index dec9b7cf1..57b4e3927 100644 --- a/archaeological_finds/data_importer.py +++ b/archaeological_finds/data_importer.py @@ -73,7 +73,7 @@ class FindsImporterBibracte(Importer):          ImportFormater('find__conservatory_state',                         TypeFormater(models.ConservatoryState), required=False),          # preservation_to_consider -        ImportFormater('find__preservation_to_consider', +        ImportFormater('find__preservation_to_considers',                         TypeFormater(models.PreservationType), required=False),          # comment          ImportFormater('comment', UnicodeFormater(1000), required=False), diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot index dad1db351..b6108730c 100644 --- a/archaeological_finds/locale/django.pot +++ b/archaeological_finds/locale/django.pot @@ -6,21 +6,21 @@  msgid ""  msgstr "" -#: forms.py:45 ishtar_menu.py:27 models.py:344 models.py:530 models.py:600 +#: forms.py:45 ishtar_menu.py:31 models.py:345 models.py:539 models.py:609  #: templates/ishtar/sheet_find.html:6  msgid "Find"  msgstr "" -#: forms.py:54 forms.py:289 models.py:108 models.py:286 +#: forms.py:54 forms.py:289 models.py:108 models.py:287  msgid "Free-ID"  msgstr "" -#: forms.py:56 models.py:328 +#: forms.py:56 models.py:329  msgid "Previous ID"  msgstr "" -#: forms.py:57 forms.py:165 forms.py:229 models.py:111 models.py:287 -#: models.py:553 templates/ishtar/sheet_find.html:87 +#: forms.py:57 forms.py:165 forms.py:229 models.py:111 models.py:288 +#: models.py:562 templates/ishtar/sheet_find.html:87  msgid "Description"  msgstr "" @@ -28,7 +28,7 @@ msgstr ""  msgid "Batch/object"  msgstr "" -#: forms.py:62 models.py:314 +#: forms.py:62 models.py:315  msgid "Is complete?"  msgstr "" @@ -36,11 +36,11 @@ msgstr ""  msgid "Material type"  msgstr "" -#: forms.py:66 forms.py:162 models.py:60 models.py:291 +#: forms.py:66 forms.py:162 models.py:60 models.py:292  msgid "Conservatory state"  msgstr "" -#: forms.py:69 models.py:85 models.py:317 +#: forms.py:69 models.py:85 models.py:318  msgid "Object types"  msgstr "" @@ -48,55 +48,55 @@ msgstr ""  msgid "Preservation type"  msgstr "" -#: forms.py:74 forms.py:164 models.py:319 +#: forms.py:74 forms.py:164 models.py:320  msgid "Integrity"  msgstr "" -#: forms.py:76 models.py:320 +#: forms.py:76 models.py:321  msgid "Length (cm)"  msgstr "" -#: forms.py:77 models.py:321 +#: forms.py:77 models.py:322  msgid "Width (cm)"  msgstr "" -#: forms.py:78 models.py:322 +#: forms.py:78 models.py:323  msgid "Height (cm)"  msgstr "" -#: forms.py:79 models.py:323 +#: forms.py:79 models.py:324  msgid "Diameter (cm)"  msgstr "" -#: forms.py:80 forms.py:294 models.py:296 +#: forms.py:80 forms.py:294 models.py:297  msgid "Volume (l)"  msgstr "" -#: forms.py:81 forms.py:295 models.py:297 +#: forms.py:81 forms.py:295 models.py:298  msgid "Weight (g)"  msgstr "" -#: forms.py:82 forms.py:296 models.py:300 +#: forms.py:82 forms.py:296 models.py:301  msgid "Find number"  msgstr "" -#: forms.py:83 models.py:324 +#: forms.py:83 models.py:325  msgid "Mark"  msgstr "" -#: forms.py:84 forms.py:169 models.py:330 +#: forms.py:84 forms.py:169 models.py:331  msgid "Check"  msgstr "" -#: forms.py:86 models.py:332 +#: forms.py:86 models.py:333  msgid "Check date"  msgstr "" -#: forms.py:87 models.py:112 models.py:325 models.py:554 +#: forms.py:87 models.py:112 models.py:326 models.py:563  msgid "Comment"  msgstr "" -#: forms.py:90 models.py:326 +#: forms.py:90 models.py:327  msgid "Comment on dating"  msgstr "" @@ -111,7 +111,7 @@ msgid ""  "p>"  msgstr "" -#: forms.py:119 forms.py:147 models.py:308 +#: forms.py:119 forms.py:147 models.py:309  msgid "Dating"  msgstr "" @@ -119,11 +119,11 @@ msgstr ""  msgid "Period"  msgstr "" -#: forms.py:125 forms.py:231 models.py:565 models.py:606 +#: forms.py:125 forms.py:231 models.py:574 models.py:615  msgid "Start date"  msgstr "" -#: forms.py:127 forms.py:233 models.py:566 models.py:607 +#: forms.py:127 forms.py:233 models.py:575 models.py:616  msgid "End date"  msgstr "" @@ -163,15 +163,15 @@ msgstr ""  msgid "Base treatment"  msgstr "" -#: forms.py:216 models.py:542 models.py:556 +#: forms.py:216 models.py:551 models.py:565  msgid "Treatment type"  msgstr "" -#: forms.py:218 models.py:563 models.py:604 +#: forms.py:218 models.py:572 models.py:613  msgid "Person"  msgstr "" -#: forms.py:224 models.py:558 +#: forms.py:224 models.py:567  msgid "Location"  msgstr "" @@ -179,7 +179,7 @@ msgstr ""  msgid "Upstream finds"  msgstr "" -#: forms.py:247 models.py:345 +#: forms.py:247 models.py:346  msgid "Finds"  msgstr "" @@ -235,23 +235,23 @@ msgstr ""  msgid "You should select a document."  msgstr "" -#: ishtar_menu.py:29 +#: ishtar_menu.py:34  msgid "Search"  msgstr "" -#: ishtar_menu.py:33 ishtar_menu.py:48 +#: ishtar_menu.py:39 ishtar_menu.py:56  msgid "Creation"  msgstr "" -#: ishtar_menu.py:37 ishtar_menu.py:53 +#: ishtar_menu.py:44 ishtar_menu.py:61  msgid "Modification"  msgstr "" -#: ishtar_menu.py:45 +#: ishtar_menu.py:53  msgid "Documentation"  msgstr "" -#: ishtar_menu.py:58 +#: ishtar_menu.py:66  msgid "Deletion"  msgstr "" @@ -267,7 +267,7 @@ msgstr ""  msgid "Parent material"  msgstr "" -#: models.py:51 models.py:289 +#: models.py:51 models.py:290  msgid "Material types"  msgstr "" @@ -303,7 +303,7 @@ msgstr ""  msgid "Batch"  msgstr "" -#: models.py:109 models.py:283 models.py:548 +#: models.py:109 models.py:284 models.py:557  msgid "External ID"  msgstr "" @@ -335,7 +335,7 @@ msgstr ""  msgid "Complete ID"  msgstr "" -#: models.py:136 models.py:281 +#: models.py:136 models.py:282  msgid "Base find"  msgstr "" @@ -411,123 +411,123 @@ msgstr ""  msgid "Base find - Discovery date"  msgstr "" -#: models.py:285 +#: models.py:286  msgid "Order"  msgstr "" -#: models.py:294 +#: models.py:295  msgid "Type of preservation to consider"  msgstr "" -#: models.py:298 +#: models.py:299  msgid "Weight unit"  msgstr "" -#: models.py:304 templates/ishtar/sheet_find.html:61 +#: models.py:305 templates/ishtar/sheet_find.html:61  msgid "Upstream treatment"  msgstr "" -#: models.py:307 templates/ishtar/sheet_find.html:63 +#: models.py:308 templates/ishtar/sheet_find.html:63  msgid "Downstream treatment"  msgstr "" -#: models.py:312 models.py:551 templates/ishtar/sheet_find.html:65 +#: models.py:313 models.py:560 templates/ishtar/sheet_find.html:65  msgid "Container"  msgstr "" -#: models.py:347 +#: models.py:348  msgid "Can view all Find"  msgstr "" -#: models.py:348 +#: models.py:349  msgid "Can view own Find"  msgstr "" -#: models.py:349 +#: models.py:350  msgid "Can add own Find"  msgstr "" -#: models.py:350 +#: models.py:351  msgid "Can change own Find"  msgstr "" -#: models.py:351 +#: models.py:352  msgid "Can delete own Find"  msgstr "" -#: models.py:356 +#: models.py:357  msgid "FIND"  msgstr "" -#: models.py:528 +#: models.py:537  msgid "Find documentation"  msgstr "" -#: models.py:529 +#: models.py:538  msgid "Find documentations"  msgstr "" -#: models.py:539 +#: models.py:548  msgid "Virtual"  msgstr "" -#: models.py:543 +#: models.py:552  msgid "Treatment types"  msgstr "" -#: models.py:560 +#: models.py:569  msgid "Other location"  msgstr "" -#: models.py:570 models.py:592 +#: models.py:579 models.py:601  msgid "Treatment"  msgstr "" -#: models.py:571 +#: models.py:580  msgid "Treatments"  msgstr "" -#: models.py:573 +#: models.py:582  msgid "Can view all Treatment"  msgstr "" -#: models.py:574 +#: models.py:583  msgid "Can view own Treatment"  msgstr "" -#: models.py:575 +#: models.py:584  msgid "Can add own Treatment"  msgstr "" -#: models.py:576 +#: models.py:585  msgid "Can change own Treatment"  msgstr "" -#: models.py:577 +#: models.py:586  msgid "Can delete own Treatment"  msgstr "" -#: models.py:583 +#: models.py:592  msgid "by"  msgstr "" -#: models.py:589 +#: models.py:598  msgid "Treatment documentation"  msgstr "" -#: models.py:590 +#: models.py:599  msgid "Treament documentations"  msgstr "" -#: models.py:603 +#: models.py:612  msgid "Administrative act"  msgstr "" -#: models.py:610 +#: models.py:619  msgid "Property"  msgstr "" -#: models.py:611 +#: models.py:620  msgid "Properties"  msgstr "" @@ -551,11 +551,11 @@ msgstr ""  msgid "Find: source deletion"  msgstr "" -#: wizards.py:63 +#: wizards.py:61  msgid "Operation"  msgstr "" -#: wizards.py:64 +#: wizards.py:62  msgid "Context record"  msgstr "" diff --git a/archaeological_finds/migrations/0043_auto__add_field_findsource_duplicate__chg_field_findsource_internal_re.py b/archaeological_finds/migrations/0043_auto__add_field_findsource_duplicate__chg_field_findsource_internal_re.py new file mode 100644 index 000000000..3e288d58d --- /dev/null +++ b/archaeological_finds/migrations/0043_auto__add_field_findsource_duplicate__chg_field_findsource_internal_re.py @@ -0,0 +1,910 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + +    def forwards(self, orm): +        # Adding field 'FindSource.duplicate' +        db.add_column('archaeological_finds_findsource', 'duplicate', +                      self.gf('django.db.models.fields.BooleanField')(default=False), +                      keep_default=False) + + +        # Changing field 'FindSource.internal_reference' +        db.alter_column('archaeological_finds_findsource', 'internal_reference', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) + +        # Changing field 'FindSource.reference' +        db.alter_column('archaeological_finds_findsource', 'reference', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) +        # Adding field 'TreatmentSource.duplicate' +        db.add_column('archaeological_finds_treatmentsource', 'duplicate', +                      self.gf('django.db.models.fields.BooleanField')(default=False), +                      keep_default=False) + + +        # Changing field 'TreatmentSource.internal_reference' +        db.alter_column('archaeological_finds_treatmentsource', 'internal_reference', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) + +        # Changing field 'TreatmentSource.reference' +        db.alter_column('archaeological_finds_treatmentsource', 'reference', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) + +    def backwards(self, orm): +        # Deleting field 'FindSource.duplicate' +        db.delete_column('archaeological_finds_findsource', 'duplicate') + + +        # Changing field 'FindSource.internal_reference' +        db.alter_column('archaeological_finds_findsource', 'internal_reference', self.gf('django.db.models.fields.CharField')(max_length=25, null=True)) + +        # Changing field 'FindSource.reference' +        db.alter_column('archaeological_finds_findsource', 'reference', self.gf('django.db.models.fields.CharField')(max_length=25, null=True)) +        # Deleting field 'TreatmentSource.duplicate' +        db.delete_column('archaeological_finds_treatmentsource', 'duplicate') + + +        # Changing field 'TreatmentSource.internal_reference' +        db.alter_column('archaeological_finds_treatmentsource', 'internal_reference', self.gf('django.db.models.fields.CharField')(max_length=25, null=True)) + +        # Changing field 'TreatmentSource.reference' +        db.alter_column('archaeological_finds_treatmentsource', 'reference', self.gf('django.db.models.fields.CharField')(max_length=25, 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': {'object_name': 'ContextRecord'}, +            'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_context_records.ActivityType']", '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'}), +            'depth': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', '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'}), +            '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.IntegerField', [], {'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']"}), +            '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.IntegerField', [], {'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.IntegerField', [], {'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',)", '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',)", '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'}), +            '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'}), +            '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'}), +            '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.CharField', [], {'max_length': '60', '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'}), +            'reference_number': ('django.db.models.fields.CharField', [], {'max_length': '200', '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.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'total_surface': ('django.db.models.fields.IntegerField', [], {'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': '2015'}) +        }, +        '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'}, +            '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.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_finds_basefind'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}), +            'label': ('django.db.models.fields.TextField', [], {}), +            'material_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}), +            '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': {'object_name': 'Find'}, +            'base_finds': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.BaseFind']"}), +            'check_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}), +            'checked': ('django.db.models.fields.CharField', [], {'default': "'NC'", 'max_length': '2'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'conservatory_state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.ConservatoryState']", 'null': 'True', 'blank': 'True'}), +            'container': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'finds'", 'null': 'True', 'to': "orm['archaeological_warehouse.Container']"}), +            'dating_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'datings': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_context_records.Dating']"}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'diameter': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'downstream_treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'upstream_treatment'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}), +            'find_number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'height': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_finds_find'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}), +            'integrities': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.IntegrityType']"}), +            'is_complete': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'label': ('django.db.models.fields.TextField', [], {}), +            'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'mark': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'material_types': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'finds'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.MaterialType']"}), +            'object_types': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'find'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.ObjectType']"}), +            'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'preservation_to_considers': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'finds'", 'symmetrical': 'False', 'to': "orm['archaeological_finds.PreservationType']"}), +            'previous_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'upstream_treatment': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'downstream_treatment'", 'null': 'True', 'to': "orm['archaeological_finds.Treatment']"}), +            'volume': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'weight': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'weight_unit': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}), +            'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_finds.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'}), +            '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'}), +            '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'}), +            'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}) +        }, +        'archaeological_finds.historicalbasefind': { +            'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalBaseFind'}, +            '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.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}), +            'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), +            'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), +            'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), +            'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), +            'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}), +            'label': ('django.db.models.fields.TextField', [], {}), +            'material_index': ('django.db.models.fields.IntegerField', [], {'default': '0'}), +            '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'}, +            'check_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}), +            'checked': ('django.db.models.fields.CharField', [], {'default': "'NC'", 'max_length': '2'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'conservatory_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'}), +            'downstream_treatment_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}), +            'find_number': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'height': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), +            'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), +            'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), +            'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), +            'image': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'index': ('django.db.models.fields.IntegerField', [], {'default': '0'}), +            'is_complete': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'label': ('django.db.models.fields.TextField', [], {}), +            'length': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'mark': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'previous_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'thumbnail': ('django.db.models.fields.files.ImageField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'upstream_treatment_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'volume': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'weight': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'weight_unit': ('django.db.models.fields.CharField', [], {'max_length': '4', 'null': 'True', 'blank': 'True'}), +            'width': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_finds.historicaltreatment': { +            'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalTreatment'}, +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'container_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}), +            'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), +            'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), +            'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), +            'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), +            'location_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'other_location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'person_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'treatment_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_finds.integritytype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'IntegrityType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_finds.materialtype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'MaterialType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.MaterialType']", 'null': 'True', 'blank': 'True'}), +            'recommendation': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_finds.objecttype': { +            'Meta': {'ordering': "('parent__label', 'label')", 'object_name': 'ObjectType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.ObjectType']", 'null': 'True', 'blank': 'True'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_finds.preservationtype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'PreservationType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_finds.property': { +            'Meta': {'object_name': 'Property'}, +            'administrative_act': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.AdministrativeAct']"}), +            'end_date': ('django.db.models.fields.DateField', [], {}), +            'find': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.Find']"}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_finds_property'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'properties'", 'to': "orm['ishtar_common.Person']"}), +            'start_date': ('django.db.models.fields.DateField', [], {}) +        }, +        'archaeological_finds.treatment': { +            'Meta': {'object_name': 'Treatment'}, +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'container': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Container']", 'null': 'True', 'blank': 'True'}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_finds_treatment'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']", 'null': 'True', 'blank': 'True'}), +            'other_location': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'person': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'treatments'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'treatment_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_finds.TreatmentType']"}) +        }, +        'archaeological_finds.treatmentsource': { +            'Meta': {'object_name': 'TreatmentSource'}, +            'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'treatmentsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'duplicate': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '12', 'null': 'True', 'blank': 'True'}), +            'format_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Format']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            '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'}), +            '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'}), +            'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}), +            'treatment': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_finds.Treatment']"}) +        }, +        'archaeological_finds.treatmenttype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'TreatmentType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            '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'}), +            'virtual': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) +        }, +        'archaeological_operations.acttype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'ActType'}, +            'associated_template': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'acttypes'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.DocumentTemplate']"}), +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'indexed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'intented_to': ('django.db.models.fields.CharField', [], {'max_length': '1'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.administrativeact': { +            'Meta': {'ordering': "('year', 'signature_date', 'index', 'act_type')", 'object_name': 'AdministrativeAct'}, +            'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'act_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ActType']"}), +            'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_files.File']"}), +            'departments_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_administrativeact'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operation_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}), +            'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), +            'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}), +            'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'signatory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'signatory'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.archaeologicalsite': { +            'Meta': {'object_name': 'ArchaeologicalSite'}, +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_archaeologicalsite'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}), +            'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'}), +            'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.operation': { +            'Meta': {'ordering': "('cached_label',)", 'object_name': 'Operation'}, +            '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_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            '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'}), +            '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'}), +            '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'}), +            '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'}), +            'negative_result': ('django.db.models.fields.NullBooleanField', [], {'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'}), +            'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}), +            'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}), +            'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'report_processing': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ReportState']", 'null': 'True', 'blank': 'True'}), +            'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}), +            'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.parcel': { +            'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}), +            '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'}), +            'section': ('django.db.models.fields.CharField', [], {'max_length': '4'}), +            'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.period': { +            'Meta': {'ordering': "('order',)", 'object_name': 'Period'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'end_date': ('django.db.models.fields.IntegerField', [], {}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {}), +            'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}), +            'start_date': ('django.db.models.fields.IntegerField', [], {}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.remaintype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.reportstate': { +            'Meta': {'ordering': "('order',)", 'object_name': 'ReportState'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_warehouse.container': { +            'Meta': {'object_name': 'Container'}, +            'comment': ('django.db.models.fields.TextField', [], {}), +            'container_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.ContainerType']"}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_warehouse_container'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']"}), +            'reference': ('django.db.models.fields.CharField', [], {'max_length': '40'}) +        }, +        'archaeological_warehouse.containertype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'ContainerType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'length': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'reference': ('django.db.models.fields.CharField', [], {'max_length': '30'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}), +            'volume': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_warehouse.warehouse': { +            'Meta': {'object_name': 'Warehouse'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            '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': '75', 'null': 'True', 'blank': 'True'}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_warehouse_warehouse'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '40'}), +            'person_in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'warehouse_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), +            'warehouse_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseType']"}) +        }, +        'archaeological_warehouse.warehousetype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'WarehouseType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'auth.group': { +            'Meta': {'object_name': 'Group'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), +            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) +        }, +        'auth.permission': { +            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, +            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) +        }, +        'auth.user': { +            'Meta': {'object_name': 'User'}, +            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), +            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), +            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), +            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), +            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) +        }, +        'contenttypes.contenttype': { +            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, +            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) +        }, +        'ishtar_common.arrondissement': { +            'Meta': {'object_name': 'Arrondissement'}, +            'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) +        }, +        'ishtar_common.author': { +            'Meta': {'object_name': 'Author'}, +            'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) +        }, +        'ishtar_common.authortype': { +            'Meta': {'object_name': 'AuthorType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.canton': { +            'Meta': {'object_name': 'Canton'}, +            'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) +        }, +        'ishtar_common.department': { +            'Meta': {'ordering': "['number']", 'object_name': 'Department'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), +            'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), +            'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.documenttemplate': { +            'Meta': {'ordering': "['associated_object_name', 'name']", 'object_name': 'DocumentTemplate'}, +            'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) +        }, +        'ishtar_common.format': { +            'Meta': {'object_name': 'Format'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.import': { +            'Meta': {'object_name': 'Import'}, +            'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), +            'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), +            'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), +            'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), +            'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), +            'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), +            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) +        }, +        'ishtar_common.importertype': { +            'Meta': {'object_name': 'ImporterType'}, +            'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), +            'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), +            'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.ishtaruser': { +            'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), +            'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) +        }, +        'ishtar_common.operationtype': { +            'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.organization': { +            'Meta': {'object_name': 'Organization'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', '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.CharField', [], {'max_length': '300', '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': '300'}), +            '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'}), +            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', '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'}), +            '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']"}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', '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.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), +            'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            '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'}), +            'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), +            'title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.persontype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.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.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'}), +            '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 32b4334ff..f677b1297 100644 --- a/archaeological_finds/models.py +++ b/archaeological_finds/models.py @@ -246,6 +246,7 @@ CHECK_CHOICES = (('NC', _(u"Not checked")),  class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):      CHECK_DICT = dict(CHECK_CHOICES) +    SHOW_URL = 'show-find'      TABLE_COLS = ['label', 'material_types', 'datings.period',                    'base_finds.context_record.parcel.town',                    'base_finds.context_record.operation.year', @@ -533,6 +534,8 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):  class FindSource(Source): +    SHOW_URL = 'show-findsource' +      class Meta:          verbose_name = _(u"Find documentation")          verbose_name_plural = _(u"Find documentations") diff --git a/archaeological_finds/templates/ishtar/sheet_findsource.html b/archaeological_finds/templates/ishtar/sheet_findsource.html new file mode 100644 index 000000000..04db0336c --- /dev/null +++ b/archaeological_finds/templates/ishtar/sheet_findsource.html @@ -0,0 +1,11 @@ +{% extends "ishtar/sheet_source.html" %} +{% load i18n window_field link_to_window %} + +{% block head_sheet %} +{{block.super}} +<h1>{% trans "Find source"%}</h1> +{% endblock %} + +{% block related %} +{% field "Related find" item.owner '' item.owner|link_to_window %} +{% endblock %} diff --git a/archaeological_finds/templates/ishtar/sheet_findsource_pdf.html b/archaeological_finds/templates/ishtar/sheet_findsource_pdf.html new file mode 100644 index 000000000..b7f8ec473 --- /dev/null +++ b/archaeological_finds/templates/ishtar/sheet_findsource_pdf.html @@ -0,0 +1,18 @@ +{% extends "ishtar/sheet_findsource.html" %} +{% block header %} +<link rel="stylesheet" href="{{STATIC_URL}}/media/style_basic.css" /> +{% endblock %} +{% block main_head %} +{{ block.super }} +<div id="pdfheader"> +Ishtar – {{APP_NAME}} – {{item}} +</div> +{% endblock %} +{%block head_sheet%}{%endblock%} +{%block main_foot%} +<div id="pdffooter"> +– <pdf:pagenumber/> – +</div> +</body> +</html> +{%endblock%} diff --git a/archaeological_finds/templates/ishtar/sheet_findsource_window.html b/archaeological_finds/templates/ishtar/sheet_findsource_window.html new file mode 100644 index 000000000..b2a2974bf --- /dev/null +++ b/archaeological_finds/templates/ishtar/sheet_findsource_window.html @@ -0,0 +1,3 @@ +{% extends "ishtar/sheet_findsource.html" %} +{% block main_head %}{%endblock%} +{% block main_foot %}{%endblock%} diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index 7a01f952b..e38520329 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -22,6 +22,8 @@ from django.conf.urls.defaults import *  from ishtar_common.wizards import check_rights  import views +from archaeological_finds import models +  # be carreful: each check_rights must be relevant with ishtar_menu  # forms @@ -76,8 +78,10 @@ urlpatterns += patterns(          name='get-find-full', kwargs={'full': True}),      url(r'get-findsource/(?P<type>.+)?$',          'get_findsource', name='get-findsource'), +    url(r'show-findsource(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_findsource', +        name=models.FindSource.SHOW_URL),      url(r'show-find(?:/(?P<pk>.+))?/(?P<type>.+)?$', 'show_find', -        name='show-find'), +        name=models.Find.SHOW_URL),      url(r'show-historized-find/(?P<pk>.+)?/(?P<date>.+)?$',          'show_find', name='show-historized-find'),      url(r'revert-find/(?P<pk>.+)/(?P<date>.+)$', diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 40c241cb1..36388d85b 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -64,8 +64,11 @@ get_find_for_ope = get_item(      extra_request_keys=find_extra_keys,      own_table_cols=models.Find.TABLE_COLS_FOR_OPE) +show_findsource = show_item(models.FindSource, 'findsource') +  get_findsource = get_item(      models.FindSource, 'get_findsource', 'findsource', +    bool_fields=['duplicate'],      extra_request_keys={          'find__context_record__operation__year':              'find__context_record__operation__year', diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py index a8a9147b7..2a0ec652c 100644 --- a/archaeological_operations/admin.py +++ b/archaeological_operations/admin.py @@ -100,7 +100,7 @@ class RelationTypeAdmin(admin.ModelAdmin):  admin.site.register(models.RelationType, RelationTypeAdmin) -general_models = [models.RemainType, models.ActType] +general_models = [models.RemainType, models.ActType, 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 3d679d555..90977416b 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -335,6 +335,74 @@ ParcelFormSet = formset_factory(ParcelForm, can_delete=True,                                  formset=ParcelFormSet)  ParcelFormSet.form_label = _(u"Parcels") + +class RecordRelationsForm(forms.Form): +    base_model = 'right_relation' +    current_model = models.RelationType +    current_related_model = models.Operation +    associated_models = {'right_record': models.Operation, +                         'relation_type': models.RelationType} +    relation_type = forms.ChoiceField(label=_(u"Relation type"), +                                      choices=[], required=False) +    right_record = forms.IntegerField( +        label=_(u"Operation"), +        widget=widgets.JQueryAutoComplete( +            reverse_lazy('autocomplete-operation'), +            associated_model=models.Operation), +        validators=[valid_id(models.Operation)], required=False) + +    def __init__(self, *args, **kwargs): +        super(RecordRelationsForm, self).__init__(*args, **kwargs) +        self.fields['relation_type'].choices = \ +            models.RelationType.get_types() + +    @classmethod +    def _format_lst(cls, current): +        nc = [] +        for rel, ope in sorted(current): +            if not nc or nc[-1][0] != rel: +                nc.append([rel, []]) +            nc[-1][1].append(ope) +        rendered = u";".join( +            [u"{}{} {}".format(rel, _(u":"), u" ; ".join(opes)) +             for rel, opes in nc]) +        return rendered + +    @classmethod +    def get_formated_datas(cls, cleaned_datas): +        result, current, deleted = [], [], [] +        for data in cleaned_datas: +            if not data: +                continue +            try: +                relation_type = cls.current_model.objects.get( +                    pk=data.get('relation_type')) +            except cls.current_model.DoesNotExist: +                continue +            try: +                right_record = cls.current_related_model.objects.get( +                    pk=data.get('right_record')) +            except cls.current_related_model.DoesNotExist: +                continue +            values = [unicode(relation_type), right_record.reference] +            if data.get('DELETE'): +                deleted.append(values) +            else: +                current.append(values) +        if current: +            nc = [] +            for rel, ope in sorted(current): +                if not nc or nc[-1][0] != rel: +                    nc.append([rel, []]) +                nc[-1][1].append(ope) +            result.append((_("Current relations"), cls._format_lst(current))) +        if deleted: +            result.append((_("Deleted relations"), u" ; ".join(deleted))) +        return result + +RecordRelationsFormSet = formset_factory(RecordRelationsForm, can_delete=True) +RecordRelationsFormSet.form_label = _(u"Relations") +  SRA_AGENT, created = PersonType.objects.get_or_create(txt_idx='sra_agent')  HEAD_SCIENTIST, created = PersonType.objects.get_or_create(      txt_idx='head_scientist') @@ -393,6 +461,8 @@ class OperationSelect(TableSelect):              associated_model=Person),          validators=[valid_id(Person)])      record_quality = forms.ChoiceField(label=_(u"Record quality")) +    report_processing = forms.ChoiceField(label=_(u"Report processing"), +                                          choices=[])      virtual_operation = forms.NullBooleanField(label=_(u"Virtual operation"))      def __init__(self, *args, **kwargs): @@ -401,6 +471,10 @@ class OperationSelect(TableSelect):              models.OperationType.get_types()          self.fields['operation_type'].help_text = \              models.OperationType.get_help() +        self.fields['report_processing'].choices = \ +            models.ReportState.get_types() +        self.fields['report_processing'].help_text = \ +            models.ReportState.get_help()          self.fields['remains'].choices = models.RemainType.get_types()          self.fields['remains'].help_text = models.RemainType.get_help()          self.fields['periods'].choices = models.Period.get_types() @@ -558,6 +632,7 @@ class OperationFormGeneral(forms.Form):                           'cira_rapporteur': Person,                           'operator': Organization,                           'operation_type': models.OperationType, +                         'report_processing': models.ReportState,                           'archaeological_site': models.ArchaeologicalSite}      pk = forms.IntegerField(required=False, widget=forms.HiddenInput)      scientist = forms.IntegerField( @@ -595,6 +670,8 @@ class OperationFormGeneral(forms.Form):      report_delivery_date = forms.DateField(          label=_(u"Report delivery date"), required=False,          widget=widgets.JQueryDate) +    report_processing = forms.ChoiceField(label=_(u"Report processing"), +                                          choices=[], required=False)      surface = forms.IntegerField(          required=False, widget=widgets.AreaWidget,          label=_(u"Total surface (m2)"), @@ -650,6 +727,10 @@ class OperationFormGeneral(forms.Form):              models.OperationType.get_types()          self.fields['operation_type'].help_text = \              models.OperationType.get_help() +        self.fields['report_processing'].choices = \ +            models.ReportState.get_types() +        self.fields['report_processing'].help_text = \ +            models.ReportState.get_help()          self.fields['record_quality'].choices = \              [('', '--')] + list(models.QUALITY)          # data POSTED @@ -693,7 +774,8 @@ class OperationFormGeneral(forms.Form):  class OperationFormModifGeneral(OperationFormGeneral): -    operation_code = forms.IntegerField(label=_(u"Operation code")) +    operation_code = forms.IntegerField(label=_(u"Operation code"), +                                        required=False)      if FILES_AVAILABLE:          currents = {'associated_file': File}          associated_file = forms.IntegerField( @@ -971,6 +1053,8 @@ class AdministrativeActOpeSelect(TableSelect):      if settings.ISHTAR_DPTS:          operation__towns__numero_insee__startswith = forms.ChoiceField(              label=_(u"Department"), choices=[]) +    act_object = forms.CharField(label=_(u"Object (full text search)"), +                                 max_length=300)      history_creator = forms.IntegerField(          label=_(u"Created by"),          widget=widgets.JQueryAutoComplete( diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot index 548ffdf34..3c6dc4c47 100644 --- a/archaeological_operations/locale/django.pot +++ b/archaeological_operations/locale/django.pot @@ -6,12 +6,12 @@  msgid ""  msgstr "" -#: forms.py:69 forms.py:336 forms.py:775 forms.py:797 forms.py:801 -#: models.py:774 templates/ishtar/blocks/window_tables/parcels.html:8 +#: forms.py:69 forms.py:336 forms.py:856 forms.py:878 forms.py:882 +#: models.py:788 templates/ishtar/blocks/window_tables/parcels.html:8  msgid "Parcels"  msgstr "" -#: forms.py:72 forms.py:188 forms.py:751 models.py:764 +#: forms.py:72 forms.py:188 forms.py:832 models.py:778  #: templates/ishtar/blocks/window_tables/parcels.html:5  #: templates/ishtar/dashboards/dashboard_operation.html:302  #: templates/ishtar/dashboards/dashboard_operation.html:315 @@ -20,18 +20,18 @@ msgstr ""  msgid "Town"  msgstr "" -#: forms.py:74 forms.py:346 forms.py:603 forms.py:982 models.py:148 -#: models.py:580 models.py:762 +#: forms.py:74 forms.py:414 forms.py:680 forms.py:1045 models.py:160 +#: models.py:594 models.py:776  #: templates/ishtar/blocks/window_tables/parcels.html:6  msgid "Year"  msgstr "" -#: forms.py:77 models.py:765 +#: forms.py:77 models.py:779  #: templates/ishtar/blocks/window_tables/parcels.html:7  msgid "Section"  msgstr "" -#: forms.py:80 models.py:766 +#: forms.py:80 models.py:780  msgid "Parcel number"  msgstr "" @@ -59,341 +59,362 @@ msgstr ""  msgid "There are identical parcels."  msgstr "" -#: forms.py:347 +#: forms.py:345 +msgid "Relation type" +msgstr "" + +#: forms.py:348 ishtar_menu.py:33 models.py:239 models.py:494 models.py:519 +#: models.py:533 models.py:585 models.py:775 wizards.py:341 wizards.py:352 +#: templates/ishtar/sheet_operation.html:6 +msgid "Operation" +msgstr "" + +#: forms.py:367 +msgid ":" +msgstr "" + +#: forms.py:398 +msgid "Current relations" +msgstr "" + +#: forms.py:400 +msgid "Deleted relations" +msgstr "" + +#: forms.py:404 templates/ishtar/sheet_operation.html:100 +msgid "Relations" +msgstr "" + +#: forms.py:415  msgid "Numeric reference"  msgstr "" -#: forms.py:348 +#: forms.py:416  msgid "Name (full text search)"  msgstr "" -#: forms.py:353 forms.py:493 forms.py:588 forms.py:959 models.py:157 +#: forms.py:421 forms.py:567 forms.py:663 forms.py:1022 models.py:169  msgid "Operation type"  msgstr "" -#: forms.py:361 models.py:565 +#: forms.py:429 models.py:579  msgid "Scientist in charge"  msgstr "" -#: forms.py:370 forms.py:581 models.py:145 +#: forms.py:438 forms.py:656 models.py:157  msgid "In charge"  msgstr "" -#: forms.py:372 forms.py:495 forms.py:574 models.py:143 +#: forms.py:440 forms.py:569 forms.py:649 models.py:155  msgid "Operator"  msgstr "" -#: forms.py:377 forms.py:859 models.py:71 models.py:159 +#: forms.py:445 forms.py:922 models.py:83 models.py:171  msgid "Remains"  msgstr "" -#: forms.py:378 forms.py:829 forms.py:849 forms.py:856 models.py:69 -#: models.py:164 +#: forms.py:446 forms.py:901 forms.py:919 models.py:81 models.py:176  msgid "Periods"  msgstr "" -#: forms.py:379 +#: forms.py:447  msgid "Started before"  msgstr "" -#: forms.py:381 +#: forms.py:449  msgid "Started after"  msgstr "" -#: forms.py:383 +#: forms.py:451  msgid "Ended before"  msgstr "" -#: forms.py:385 +#: forms.py:453  msgid "Ended after"  msgstr "" -#: forms.py:387 +#: forms.py:455  msgid "Parcel (section/number)"  msgstr "" -#: forms.py:388 +#: forms.py:456  msgid "Is open?"  msgstr "" -#: forms.py:390 forms.py:993 +#: forms.py:458 forms.py:1058  msgid "Created by"  msgstr "" -#: forms.py:395 forms.py:642 models.py:219 +#: forms.py:463 forms.py:719 models.py:234  msgid "Record quality"  msgstr "" -#: forms.py:396 forms.py:645 models.py:214 +#: forms.py:464 forms.py:673 models.py:188 +msgid "Report processing" +msgstr "" + +#: forms.py:466 forms.py:722 models.py:229  msgid "Virtual operation"  msgstr "" -#: forms.py:420 forms.py:952 views.py:201 +#: forms.py:494 forms.py:1015 views.py:203  msgid "Operation search"  msgstr "" -#: forms.py:433 forms.py:954 +#: forms.py:507 forms.py:1017  msgid "You should select an operation."  msgstr "" -#: forms.py:464 +#: forms.py:538  msgid "Associated file"  msgstr "" -#: forms.py:468 forms.py:700 models.py:577 wizards.py:75 +#: forms.py:542 forms.py:781 models.py:591 wizards.py:78  msgid "Archaelogical file"  msgstr "" -#: forms.py:473 +#: forms.py:547  msgid "months"  msgstr "" -#: forms.py:473 +#: forms.py:547  msgid "years"  msgstr "" -#: forms.py:475 models.py:129 +#: forms.py:549 models.py:141  msgid "Creation date"  msgstr "" -#: forms.py:476 +#: forms.py:550  msgid "Start of field work"  msgstr "" -#: forms.py:478 +#: forms.py:552  msgid "All"  msgstr "" -#: forms.py:479 +#: forms.py:553  msgid "Preventive"  msgstr "" -#: forms.py:480 +#: forms.py:554  msgid "Research"  msgstr "" -#: forms.py:484 +#: forms.py:558  msgid "Slicing"  msgstr "" -#: forms.py:487 +#: forms.py:561  msgid "Department detail"  msgstr "" -#: forms.py:489 +#: forms.py:563  msgid "Date get from"  msgstr "" -#: forms.py:491 +#: forms.py:565  msgid "Preventive/Research"  msgstr "" -#: forms.py:497 +#: forms.py:571  msgid "Date after"  msgstr "" -#: forms.py:499 +#: forms.py:573  msgid "Date before"  msgstr "" -#: forms.py:501 +#: forms.py:575  msgid "With reports"  msgstr "" -#: forms.py:502 +#: forms.py:576  msgid "With finds"  msgstr "" -#: forms.py:554 forms.py:1033 templates/ishtar/sheet_administrativeact.html:11 +#: forms.py:628 forms.py:1098 templates/ishtar/sheet_administrativeact.html:11  #: templates/ishtar/sheet_operation.html:32  msgid "General"  msgstr "" -#: forms.py:564 +#: forms.py:639  msgid "Head scientist"  msgstr "" -#: forms.py:591 models.py:51 models.py:132 models.py:934 +#: forms.py:666 models.py:51 models.py:144 models.py:948  msgid "Start date"  msgstr "" -#: forms.py:593 models.py:134 +#: forms.py:668 models.py:146  msgid "Excavation end date"  msgstr "" -#: forms.py:596 models.py:135 +#: forms.py:671 models.py:147  msgid "Report delivery date"  msgstr "" -#: forms.py:600 +#: forms.py:677  msgid "Total surface (m2)"  msgstr "" -#: forms.py:608 forms.py:696 models.py:149 models.py:358 +#: forms.py:685 forms.py:777 models.py:161 models.py:373  msgid "Operation code"  msgstr "" -#: forms.py:611 models.py:206 +#: forms.py:688 models.py:221  msgid "Generic name"  msgstr "" -#: forms.py:613 models.py:205 +#: forms.py:690 models.py:220  msgid "Operator reference"  msgstr "" -#: forms.py:617 +#: forms.py:694  msgid "Associated archaeological sites"  msgstr "" -#: forms.py:640 models.py:207 +#: forms.py:717 models.py:222  msgid "Comment"  msgstr "" -#: forms.py:666 +#: forms.py:747  msgid ""  "If you want to set an excavation end date you have to provide a start date."  msgstr "" -#: forms.py:671 +#: forms.py:752  msgid "The excavation end date cannot be before the start date."  msgstr "" -#: forms.py:686 +#: forms.py:767  #, python-format  msgid ""  "Operation code already exist for year: %(year)d - use a value bigger than "  "%(last_val)d"  msgstr "" -#: forms.py:690 +#: forms.py:771  msgid "Bad operation code"  msgstr "" -#: forms.py:721 +#: forms.py:802  msgid "Preventive informations - excavation"  msgstr "" -#: forms.py:722 models.py:162 +#: forms.py:803 models.py:174  #: templates/ishtar/dashboards/dashboard_operation.html:495  msgid "Cost (euros)"  msgstr "" -#: forms.py:723 models.py:167 +#: forms.py:804 models.py:179  msgid "Scheduled man-days"  msgstr "" -#: forms.py:725 models.py:170 +#: forms.py:806 models.py:182  msgid "Optional man-days"  msgstr "" -#: forms.py:727 models.py:173 +#: forms.py:808 models.py:185  msgid "Effective man-days"  msgstr "" -#: forms.py:737 +#: forms.py:818  msgid "Preventive informations - diagnostic"  msgstr "" -#: forms.py:740 models.py:189 +#: forms.py:821 models.py:204  msgid "Prescription on zoning"  msgstr "" -#: forms.py:742 models.py:192 +#: forms.py:823 models.py:207  msgid "Prescription on large area"  msgstr "" -#: forms.py:745 models.py:194 +#: forms.py:826 models.py:209  msgid "Prescription on geoarchaeological context"  msgstr "" -#: forms.py:749 forms.py:771 models.py:161 models.py:590 +#: forms.py:830 forms.py:852 models.py:173 models.py:604  msgid "Towns"  msgstr "" -#: forms.py:778 models.py:773 models.py:932 +#: forms.py:859 models.py:787 models.py:946  msgid "Parcel"  msgstr "" -#: forms.py:805 forms.py:825 models.py:45 +#: forms.py:886 models.py:45  msgid "Remain types"  msgstr "" -#: forms.py:808 models.py:44 +#: forms.py:890 models.py:44  msgid "Remain type"  msgstr "" -#: forms.py:821 -msgid "There are identical remain types" -msgstr "" - -#: forms.py:832 +#: forms.py:905  msgid "Period"  msgstr "" -#: forms.py:845 -msgid "There are identical periods" -msgstr "" - -#: forms.py:853 models.py:66 +#: forms.py:916 models.py:78  msgid "Reference"  msgstr "" -#: forms.py:854 models.py:67 +#: forms.py:917 models.py:79  msgid "Name"  msgstr "" -#: forms.py:878 +#: forms.py:941  msgid "This reference already exists."  msgstr "" -#: forms.py:895 +#: forms.py:958  msgid "Associated archaelogical sites"  msgstr "" -#: forms.py:901 ishtar_menu.py:34 ishtar_menu.py:61 ishtar_menu.py:123 +#: forms.py:964 ishtar_menu.py:36 ishtar_menu.py:63 ishtar_menu.py:125  msgid "Search"  msgstr "" -#: forms.py:906 +#: forms.py:969  msgid "Would you like to close this operation?"  msgstr "" -#: forms.py:911 +#: forms.py:974  msgid "Would you like to delete this operation?"  msgstr "" -#: forms.py:920 forms.py:983 models.py:507 models.py:556 +#: forms.py:983 forms.py:1046 models.py:521 models.py:570  msgid "Index"  msgstr "" -#: forms.py:946 +#: forms.py:1009  #, python-format  msgid ""  "Index already exists for operation: %(operation)s - use a value bigger than "  "%(last_val)d"  msgstr "" -#: forms.py:958 +#: forms.py:1021  msgid "Operation's town"  msgstr "" -#: forms.py:961 +#: forms.py:1024  msgid "Operation's year"  msgstr "" -#: forms.py:972 +#: forms.py:1035  msgid "Documentation search"  msgstr "" -#: forms.py:974 +#: forms.py:1037  msgid "You should select a document."  msgstr "" -#: forms.py:987 forms.py:1036 models.py:530 models.py:550 +#: forms.py:1050 forms.py:1101 models.py:544 models.py:564  msgid "Act type"  msgstr "" -#: forms.py:991 models.py:481 +#: forms.py:1054 models.py:495  #: templates/ishtar/dashboards/dashboard_operation.html:273  #: templates/ishtar/dashboards/dashboard_operation.html:286  #: templates/ishtar/dashboards/dashboard_operation.html:453 @@ -401,112 +422,111 @@ msgstr ""  msgid "Department"  msgstr "" -#: forms.py:1013 views.py:331 +#: forms.py:1055 +msgid "Object (full text search)" +msgstr "" + +#: forms.py:1078 views.py:337  msgid "Administrative act search"  msgstr "" -#: forms.py:1028 forms.py:1082 forms.py:1149 +#: forms.py:1093 forms.py:1147 forms.py:1214  msgid "You should select an administrative act."  msgstr "" -#: forms.py:1041 models.py:581 +#: forms.py:1106 models.py:595 +#: templates/ishtar/blocks/window_tables/administrativacts.html:8  msgid "Object"  msgstr "" -#: forms.py:1044 models.py:578 +#: forms.py:1109 models.py:592  msgid "Signature date"  msgstr "" -#: forms.py:1059 +#: forms.py:1124  msgid "Would you like to delete this administrative act?"  msgstr "" -#: forms.py:1064 +#: forms.py:1129  msgid "Template"  msgstr "" -#: forms.py:1088 forms.py:1092 +#: forms.py:1153 forms.py:1157  msgid "This document is not intended for this type of act."  msgstr "" -#: forms.py:1110 +#: forms.py:1175  msgid "Doc generation"  msgstr "" -#: forms.py:1112 +#: forms.py:1177  msgid "Generate the associated doc?"  msgstr "" -#: forms.py:1124 +#: forms.py:1189  msgid "Indexed?"  msgstr "" -#: forms.py:1133 ishtar_menu.py:108 views.py:365 +#: forms.py:1198 ishtar_menu.py:110 views.py:371  msgctxt "admin act register"  msgid "Register"  msgstr "" -#: ishtar_menu.py:31 models.py:224 models.py:480 models.py:505 models.py:519 -#: models.py:571 models.py:761 wizards.py:336 wizards.py:347 -#: templates/ishtar/sheet_operation.html:6 -msgid "Operation" -msgstr "" - -#: ishtar_menu.py:39 +#: ishtar_menu.py:41  msgid "Creation"  msgstr "" -#: ishtar_menu.py:44 ishtar_menu.py:71 ishtar_menu.py:135 +#: ishtar_menu.py:46 ishtar_menu.py:73 ishtar_menu.py:136  msgid "Modification"  msgstr "" -#: ishtar_menu.py:49 +#: ishtar_menu.py:51  msgid "Closing"  msgstr "" -#: ishtar_menu.py:53 ishtar_menu.py:76 ishtar_menu.py:141 +#: ishtar_menu.py:55 ishtar_menu.py:78 ishtar_menu.py:141  msgid "Deletion"  msgstr "" -#: ishtar_menu.py:58 +#: ishtar_menu.py:60  msgid "Documentation"  msgstr "" -#: ishtar_menu.py:66 ishtar_menu.py:129 widgets.py:52 +#: ishtar_menu.py:68 ishtar_menu.py:131 widgets.py:52  msgid "Add"  msgstr "" -#: ishtar_menu.py:85 +#: ishtar_menu.py:87  msgid "Dashboard"  msgstr "" -#: ishtar_menu.py:88 +#: ishtar_menu.py:90  msgid "General informations"  msgstr "" -#: ishtar_menu.py:92 models.py:225 +#: ishtar_menu.py:94 models.py:240  #: templates/ishtar/dashboards/dashboard_operation.html:9  msgid "Operations"  msgstr "" -#: ishtar_menu.py:104 +#: ishtar_menu.py:106  msgid "Administrative Act"  msgstr "" -#: ishtar_menu.py:119 models.py:597 +#: ishtar_menu.py:121 models.py:611  #: templates/ishtar/sheet_administrativeact.html:6  msgid "Administrative act"  msgstr "" -#: ishtar_menu.py:147 +#: ishtar_menu.py:146  msgid "Documents"  msgstr "" -#: models.py:50 models.py:1396 +#: models.py:50 models.py:66 models.py:1410  msgid "Order"  msgstr "" -#: models.py:52 models.py:935 +#: models.py:52 models.py:949  msgid "End date"  msgstr "" @@ -522,345 +542,353 @@ msgstr ""  msgid "Types Period"  msgstr "" -#: models.py:75 +#: models.py:69 +msgid "Report state" +msgstr "" + +#: models.py:70 +msgid "Report states" +msgstr "" + +#: models.py:87  msgid "Archaeological site"  msgstr "" -#: models.py:76 models.py:211 +#: models.py:88 models.py:226  msgid "Archaeological sites"  msgstr "" -#: models.py:79 +#: models.py:91  msgid "Can view all Archaeological site"  msgstr "" -#: models.py:81 +#: models.py:93  msgid "Can view own Archaeological site"  msgstr "" -#: models.py:83 +#: models.py:95  msgid "Can add own Archaeological site"  msgstr "" -#: models.py:85 +#: models.py:97  msgid "Can change own Archaeological site"  msgstr "" -#: models.py:87 +#: models.py:99  msgid "Can delete own Archaeological site"  msgstr "" -#: models.py:117 +#: models.py:129  msgid "Not documented"  msgstr "" -#: models.py:118 +#: models.py:130  msgid "Arbitrary"  msgstr "" -#: models.py:119 +#: models.py:131  msgid "Reliable"  msgstr "" -#: models.py:131 +#: models.py:143  msgid "Closing date"  msgstr "" -#: models.py:138 +#: models.py:150  msgid "In charge scientist"  msgstr "" -#: models.py:154 models.py:757 +#: models.py:166 models.py:771  msgid "File"  msgstr "" -#: models.py:158 +#: models.py:170  msgid "Surface (m2)"  msgstr "" -#: models.py:208 +#: models.py:223  msgid "Cached name"  msgstr "" -#: models.py:216 +#: models.py:231  msgid ""  "If checked, it means that this operation have not been officialy registered."  msgstr "" -#: models.py:227 +#: models.py:242  msgid "Can view all Operation"  msgstr "" -#: models.py:228 +#: models.py:243  msgid "Can view own Operation"  msgstr "" -#: models.py:229 +#: models.py:244  msgid "Can add own Operation"  msgstr "" -#: models.py:230 +#: models.py:245  msgid "Can change own Operation"  msgstr "" -#: models.py:231 +#: models.py:246  msgid "Can delete own Operation"  msgstr "" -#: models.py:232 +#: models.py:247  msgid "Can close Operation"  msgstr "" -#: models.py:255 +#: models.py:270  msgid "OPE"  msgstr "" -#: models.py:315 +#: models.py:330  msgid "Intercommunal"  msgstr "" -#: models.py:341 models.py:518 +#: models.py:356 models.py:532  msgid "Archaeological file"  msgstr "" -#: models.py:342 +#: models.py:357  msgid "Code patriarche"  msgstr "" -#: models.py:384 +#: models.py:399  msgid "This operation code already exists for this year"  msgstr "" -#: models.py:453 +#: models.py:465  msgid "Inverse relation"  msgstr "" -#: models.py:457 +#: models.py:469  msgid "Operation relation type"  msgstr "" -#: models.py:458 +#: models.py:470  msgid "Operation relation types"  msgstr "" -#: models.py:470 +#: models.py:483  msgid "Operation record relation"  msgstr "" -#: models.py:471 +#: models.py:484  msgid "Operation record relations"  msgstr "" -#: models.py:491 +#: models.py:505  msgid "Operation documentation"  msgstr "" -#: models.py:492 +#: models.py:506  msgid "Operation documentations"  msgstr "" -#: models.py:495 +#: models.py:509  msgid "Can view all Operation source"  msgstr "" -#: models.py:497 +#: models.py:511  msgid "Can view own Operation source"  msgstr "" -#: models.py:499 +#: models.py:513  msgid "Can add own Operation source"  msgstr "" -#: models.py:501 +#: models.py:515  msgid "Can change own Operation source"  msgstr "" -#: models.py:503 +#: models.py:517  msgid "Can delete own Operation source"  msgstr "" -#: models.py:521 +#: models.py:535  msgid "Intended to"  msgstr "" -#: models.py:523 +#: models.py:537  msgid "Code"  msgstr "" -#: models.py:526 +#: models.py:540  msgid "Associated template"  msgstr "" -#: models.py:527 +#: models.py:541  msgid "Indexed"  msgstr "" -#: models.py:531 +#: models.py:545  msgid "Act types"  msgstr "" -#: models.py:554 +#: models.py:568  msgid "Person in charge of the operation"  msgstr "" -#: models.py:560 +#: models.py:574  msgid "Archaeological preventive operator"  msgstr "" -#: models.py:568 +#: models.py:582  msgid "Signatory"  msgstr "" -#: models.py:587 +#: models.py:601  msgid "Departments"  msgstr "" -#: models.py:588 +#: models.py:602  msgid "Cached values get from associated departments"  msgstr "" -#: models.py:591 +#: models.py:605  msgid "Cached values get from associated towns"  msgstr "" -#: models.py:598 +#: models.py:612  msgid "Administrative acts"  msgstr "" -#: models.py:601 +#: models.py:615  msgid "Can view all Administrative act"  msgstr "" -#: models.py:603 +#: models.py:617  msgid "Can view own Administrative act"  msgstr "" -#: models.py:605 +#: models.py:619  msgid "Can add own Administrative act"  msgstr "" -#: models.py:607 +#: models.py:621  msgid "Can change own Administrative act"  msgstr "" -#: models.py:609 +#: models.py:623  msgid "Can delete own Administrative act"  msgstr "" -#: models.py:618 +#: models.py:632  #: templates/ishtar/blocks/window_tables/administrativacts.html:5  msgid "Ref."  msgstr "" -#: models.py:701 +#: models.py:715  msgid "This index already exists for this year"  msgstr "" -#: models.py:768 +#: models.py:782  msgid "External ID"  msgstr "" -#: models.py:770 +#: models.py:784  msgid "Address - Locality"  msgstr "" -#: models.py:930 +#: models.py:944  msgid "Owner"  msgstr "" -#: models.py:938 +#: models.py:952  msgid "Parcel owner"  msgstr "" -#: models.py:939 +#: models.py:953  msgid "Parcel owners"  msgstr "" -#: models.py:965 +#: models.py:979  msgid "Recorded"  msgstr "" -#: models.py:966 +#: models.py:980  msgid "Effective"  msgstr "" -#: models.py:967 +#: models.py:981  msgid "Active"  msgstr "" -#: models.py:968 +#: models.py:982  msgid "Field completed"  msgstr "" -#: models.py:969 +#: models.py:983  msgid "Associated report"  msgstr "" -#: models.py:970 +#: models.py:984  msgid "Closed"  msgstr "" -#: models.py:971 +#: models.py:985  msgid "Documented and closed"  msgstr "" -#: models.py:1397 +#: models.py:1411  msgid "Is preventive"  msgstr "" -#: models.py:1400 +#: models.py:1414  msgid "Operation type old"  msgstr "" -#: models.py:1401 +#: models.py:1415  msgid "Operation types old"  msgstr "" -#: views.py:221 +#: views.py:224  msgid "New operation"  msgstr "" -#: views.py:252 +#: views.py:258  msgid "Operation modification"  msgstr "" -#: views.py:292 +#: views.py:298  msgid "Operation closing"  msgstr "" -#: views.py:298 +#: views.py:304  msgid "Operation deletion"  msgstr "" -#: views.py:303 +#: views.py:309  msgid "Operation: source search"  msgstr "" -#: views.py:311 +#: views.py:317  msgid "Operation: source creation"  msgstr "" -#: views.py:319 +#: views.py:325  msgid "Operation: source modification"  msgstr "" -#: views.py:325 +#: views.py:331  msgid "Operation: source deletion"  msgstr "" -#: views.py:340 +#: views.py:346  msgid "Operation: new administrative act"  msgstr "" -#: views.py:350 +#: views.py:356  msgid "Operation: administrative act modification"  msgstr "" -#: views.py:359 +#: views.py:365  msgid "Operation: administrative act deletion"  msgstr "" -#: wizards.py:200 +#: wizards.py:203  msgid ""  "Warning: No Archaelogical File is provided. If you have forget it return to "  "the first step." @@ -896,7 +924,7 @@ msgid "Internal reference:"  msgstr ""  #: templates/ishtar/sheet_administrativeact.html:15 -#: templates/ishtar/sheet_operation.html:53 +#: templates/ishtar/sheet_operation.html:55  msgid "Type:"  msgstr "" @@ -918,7 +946,7 @@ msgid "Archaeological preventive operator:"  msgstr ""  #: templates/ishtar/sheet_administrativeact.html:21 -#: templates/ishtar/sheet_operation.html:70 +#: templates/ishtar/sheet_operation.html:73  msgid "Associated file:"  msgstr "" @@ -927,7 +955,7 @@ msgid "Associated operation:"  msgstr ""  #: templates/ishtar/sheet_administrativeact.html:24 -#: templates/ishtar/sheet_operation.html:54 +#: templates/ishtar/sheet_operation.html:56  msgid "Surface:"  msgstr "" @@ -1008,87 +1036,91 @@ msgstr ""  msgid "by"  msgstr "" -#: templates/ishtar/sheet_operation.html:55 +#: templates/ishtar/sheet_operation.html:57  msgid "Cost:"  msgstr "" -#: templates/ishtar/sheet_operation.html:56 +#: templates/ishtar/sheet_operation.html:58  msgid "Duration:"  msgstr "" -#: templates/ishtar/sheet_operation.html:56 +#: templates/ishtar/sheet_operation.html:58  msgid "Day"  msgstr "" -#: templates/ishtar/sheet_operation.html:58 +#: templates/ishtar/sheet_operation.html:61  msgid "Remains:"  msgstr "" -#: templates/ishtar/sheet_operation.html:59 +#: templates/ishtar/sheet_operation.html:62  msgid "Periods:"  msgstr "" -#: templates/ishtar/sheet_operation.html:73 +#: templates/ishtar/sheet_operation.html:76  msgid "Town planning service:"  msgstr "" -#: templates/ishtar/sheet_operation.html:74 +#: templates/ishtar/sheet_operation.html:77  msgid "Permit type:"  msgstr "" -#: templates/ishtar/sheet_operation.html:75 +#: templates/ishtar/sheet_operation.html:78  msgid "Permit reference:"  msgstr "" -#: templates/ishtar/sheet_operation.html:76 +#: templates/ishtar/sheet_operation.html:79  msgid "General contractor organisation:"  msgstr "" -#: templates/ishtar/sheet_operation.html:77 +#: templates/ishtar/sheet_operation.html:80  msgid "General contractor:"  msgstr "" -#: templates/ishtar/sheet_operation.html:81 +#: templates/ishtar/sheet_operation.html:84  msgid "Comment:"  msgstr "" -#: templates/ishtar/sheet_operation.html:83 +#: templates/ishtar/sheet_operation.html:86  msgid "Localisation"  msgstr "" -#: templates/ishtar/sheet_operation.html:84 +#: templates/ishtar/sheet_operation.html:87  msgid "Towns:"  msgstr "" -#: templates/ishtar/sheet_operation.html:86 +#: templates/ishtar/sheet_operation.html:89  msgid "Main address:"  msgstr "" -#: templates/ishtar/sheet_operation.html:87 +#: templates/ishtar/sheet_operation.html:90  msgid "Complement:"  msgstr "" -#: templates/ishtar/sheet_operation.html:88 +#: templates/ishtar/sheet_operation.html:91  msgid "Postal code:"  msgstr "" -#: templates/ishtar/sheet_operation.html:96 +#: templates/ishtar/sheet_operation.html:105 +msgid "Details" +msgstr "" + +#: templates/ishtar/sheet_operation.html:110  msgid "Associated parcels"  msgstr "" -#: templates/ishtar/sheet_operation.html:100 +#: templates/ishtar/sheet_operation.html:114  msgid "Administrativ acts"  msgstr "" -#: templates/ishtar/sheet_operation.html:104 +#: templates/ishtar/sheet_operation.html:118  msgid "Document from this operation"  msgstr "" -#: templates/ishtar/sheet_operation.html:109 +#: templates/ishtar/sheet_operation.html:123  msgid "Context records"  msgstr "" -#: templates/ishtar/sheet_operation.html:121 +#: templates/ishtar/sheet_operation.html:135  msgid "Finds"  msgstr "" @@ -1101,7 +1133,7 @@ msgstr ""  msgid "Date"  msgstr "" -#: templates/ishtar/blocks/window_tables/administrativacts.html:16 +#: templates/ishtar/blocks/window_tables/administrativacts.html:18  msgid "No administrative act associated"  msgstr "" diff --git a/archaeological_operations/migrations/0046_auto__add_reportstate__add_field_historicaloperation_report_processing.py b/archaeological_operations/migrations/0046_auto__add_reportstate__add_field_historicaloperation_report_processing.py new file mode 100644 index 000000000..dc45a5485 --- /dev/null +++ b/archaeological_operations/migrations/0046_auto__add_reportstate__add_field_historicaloperation_report_processing.py @@ -0,0 +1,615 @@ +# -*- 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 'ReportState' +        db.create_table('archaeological_operations_reportstate', ( +            ('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)), +            ('order', self.gf('django.db.models.fields.IntegerField')()), +        )) +        db.send_create_signal('archaeological_operations', ['ReportState']) + +        # Adding field 'HistoricalOperation.report_processing_id' +        db.add_column('archaeological_operations_historicaloperation', 'report_processing_id', +                      self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Operation.report_processing' +        db.add_column('archaeological_operations_operation', 'report_processing', +                      self.gf('django.db.models.fields.related.ForeignKey')(to=orm['archaeological_operations.ReportState'], null=True, blank=True), +                      keep_default=False) + + +    def backwards(self, orm): +        # Deleting model 'ReportState' +        db.delete_table('archaeological_operations_reportstate') + +        # Deleting field 'HistoricalOperation.report_processing_id' +        db.delete_column('archaeological_operations_historicaloperation', 'report_processing_id') + +        # Deleting field 'Operation.report_processing' +        db.delete_column('archaeological_operations_operation', 'report_processing_id') + + +    models = { +        'archaeological_files.file': { +            'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            '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'}), +            '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.CharField', [], {'max_length': '60', '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'}), +            'reference_number': ('django.db.models.fields.CharField', [], {'max_length': '200', '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.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'total_surface': ('django.db.models.fields.IntegerField', [], {'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': '2015'}) +        }, +        'archaeological_files.filetype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'FileType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_files.permittype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_files.saisinetype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'delay': ('django.db.models.fields.IntegerField', [], {'default': '30'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.acttype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'ActType'}, +            'associated_template': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'acttypes'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.DocumentTemplate']"}), +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'indexed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'intented_to': ('django.db.models.fields.CharField', [], {'max_length': '1'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.administrativeact': { +            'Meta': {'ordering': "('year', 'signature_date', 'index', 'act_type')", 'object_name': 'AdministrativeAct'}, +            'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'act_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ActType']"}), +            'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_files.File']"}), +            'departments_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_administrativeact'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operation_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}), +            'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), +            'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}), +            'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'signatory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'signatory'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.archaeologicalsite': { +            'Meta': {'object_name': 'ArchaeologicalSite'}, +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_archaeologicalsite'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}), +            'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'}), +            'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.historicaladministrativeact': { +            'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalAdministrativeAct'}, +            'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'act_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'departments_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), +            'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), +            'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), +            'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), +            'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'operation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}), +            'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'signatory_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.historicaloperation': { +            'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOperation'}, +            '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_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', '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'}), +            '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'}), +            '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'}), +            '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'}), +            'negative_result': ('django.db.models.fields.NullBooleanField', [], {'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'}), +            'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}), +            'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'report_processing_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            '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'}, +            '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_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            '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'}), +            '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'}), +            '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'}), +            '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'}), +            'negative_result': ('django.db.models.fields.NullBooleanField', [], {'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'}), +            'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}), +            'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}), +            'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'report_processing': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ReportState']", 'null': 'True', 'blank': 'True'}), +            'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}), +            'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.operationbydepartment': { +            'Meta': {'object_name': 'OperationByDepartment', 'db_table': "'operation_department'", 'managed': 'False'}, +            'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'operation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Operation']"}) +        }, +        'archaeological_operations.operationsource': { +            'Meta': {'object_name': 'OperationSource'}, +            'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operationsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            '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'}), +            'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '25', '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'}), +            'reference': ('django.db.models.fields.CharField', [], {'max_length': '25', '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'}), +            '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']"}), +            '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'}), +            'section': ('django.db.models.fields.CharField', [], {'max_length': '4'}), +            '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',)", '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'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.remaintype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.reportstate': { +            'Meta': {'ordering': "('order',)", 'object_name': 'ReportState'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'auth.group': { +            'Meta': {'object_name': 'Group'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), +            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) +        }, +        'auth.permission': { +            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, +            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) +        }, +        'auth.user': { +            'Meta': {'object_name': 'User'}, +            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), +            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), +            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), +            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), +            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) +        }, +        'contenttypes.contenttype': { +            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, +            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) +        }, +        'ishtar_common.arrondissement': { +            'Meta': {'object_name': 'Arrondissement'}, +            'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) +        }, +        'ishtar_common.author': { +            'Meta': {'object_name': 'Author'}, +            'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) +        }, +        'ishtar_common.authortype': { +            'Meta': {'object_name': 'AuthorType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.canton': { +            'Meta': {'object_name': 'Canton'}, +            'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) +        }, +        'ishtar_common.department': { +            'Meta': {'ordering': "['number']", 'object_name': 'Department'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), +            'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), +            'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.documenttemplate': { +            'Meta': {'ordering': "['associated_object_name', 'name']", 'object_name': 'DocumentTemplate'}, +            'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) +        }, +        'ishtar_common.format': { +            'Meta': {'object_name': 'Format'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.import': { +            'Meta': {'object_name': 'Import'}, +            'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), +            'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), +            'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), +            'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), +            'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), +            'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), +            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) +        }, +        'ishtar_common.importertype': { +            'Meta': {'object_name': 'ImporterType'}, +            'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), +            'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), +            'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.ishtaruser': { +            'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), +            'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) +        }, +        'ishtar_common.operationtype': { +            'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.organization': { +            'Meta': {'object_name': 'Organization'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', '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.CharField', [], {'max_length': '300', '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': '300'}), +            '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'}), +            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', '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'}), +            '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']"}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', '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.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), +            'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            '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'}), +            'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), +            'title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.persontype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.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.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'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        } +    } + +    complete_apps = ['archaeological_operations']
\ No newline at end of file diff --git a/archaeological_operations/migrations/0047_auto__add_field_operationsource_duplicate__chg_field_operationsource_i.py b/archaeological_operations/migrations/0047_auto__add_field_operationsource_duplicate__chg_field_operationsource_i.py new file mode 100644 index 000000000..c31f53436 --- /dev/null +++ b/archaeological_operations/migrations/0047_auto__add_field_operationsource_duplicate__chg_field_operationsource_i.py @@ -0,0 +1,606 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + +    def forwards(self, orm): +        # Adding field 'OperationSource.duplicate' +        db.add_column('archaeological_operations_operationsource', 'duplicate', +                      self.gf('django.db.models.fields.BooleanField')(default=False), +                      keep_default=False) + + +        # Changing field 'OperationSource.internal_reference' +        db.alter_column('archaeological_operations_operationsource', 'internal_reference', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) + +        # Changing field 'OperationSource.reference' +        db.alter_column('archaeological_operations_operationsource', 'reference', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)) + +    def backwards(self, orm): +        # Deleting field 'OperationSource.duplicate' +        db.delete_column('archaeological_operations_operationsource', 'duplicate') + + +        # Changing field 'OperationSource.internal_reference' +        db.alter_column('archaeological_operations_operationsource', 'internal_reference', self.gf('django.db.models.fields.CharField')(max_length=25, null=True)) + +        # Changing field 'OperationSource.reference' +        db.alter_column('archaeological_operations_operationsource', 'reference', self.gf('django.db.models.fields.CharField')(max_length=25, null=True)) + +    models = { +        'archaeological_files.file': { +            'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            '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'}), +            '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.CharField', [], {'max_length': '60', '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'}), +            'reference_number': ('django.db.models.fields.CharField', [], {'max_length': '200', '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.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'total_surface': ('django.db.models.fields.IntegerField', [], {'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': '2015'}) +        }, +        'archaeological_files.filetype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'FileType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_files.permittype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_files.saisinetype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'delay': ('django.db.models.fields.IntegerField', [], {'default': '30'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.acttype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'ActType'}, +            'associated_template': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'acttypes'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.DocumentTemplate']"}), +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'indexed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'intented_to': ('django.db.models.fields.CharField', [], {'max_length': '1'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.administrativeact': { +            'Meta': {'ordering': "('year', 'signature_date', 'index', 'act_type')", 'object_name': 'AdministrativeAct'}, +            'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'act_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ActType']"}), +            'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_files.File']"}), +            'departments_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_administrativeact'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operation_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}), +            'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), +            'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}), +            'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'signatory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'signatory'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.archaeologicalsite': { +            'Meta': {'object_name': 'ArchaeologicalSite'}, +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_operations_archaeologicalsite'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}), +            'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'}), +            'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.historicaladministrativeact': { +            'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalAdministrativeAct'}, +            'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'act_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'departments_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), +            'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), +            'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), +            'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), +            'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'operation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}), +            'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'signatory_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.historicaloperation': { +            'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOperation'}, +            '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_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', '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'}), +            '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'}), +            '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'}), +            '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'}), +            'negative_result': ('django.db.models.fields.NullBooleanField', [], {'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'}), +            'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}), +            'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'report_processing_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            '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'}, +            '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_dracar': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            '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'}), +            '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'}), +            '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'}), +            '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'}), +            'negative_result': ('django.db.models.fields.NullBooleanField', [], {'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'}), +            'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}), +            'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}), +            'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'report_processing': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ReportState']", 'null': 'True', 'blank': 'True'}), +            'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}), +            'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.operationbydepartment': { +            'Meta': {'object_name': 'OperationByDepartment', 'db_table': "'operation_department'", 'managed': 'False'}, +            'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'operation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Operation']"}) +        }, +        'archaeological_operations.operationsource': { +            'Meta': {'object_name': 'OperationSource'}, +            'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operationsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'duplicate': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '12', 'null': 'True', 'blank': 'True'}), +            'format_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Format']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            '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'}), +            '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'}), +            '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']"}), +            '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'}), +            'section': ('django.db.models.fields.CharField', [], {'max_length': '4'}), +            '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',)", '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'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.remaintype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.reportstate': { +            'Meta': {'ordering': "('order',)", 'object_name': 'ReportState'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'auth.group': { +            'Meta': {'object_name': 'Group'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), +            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) +        }, +        'auth.permission': { +            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, +            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) +        }, +        'auth.user': { +            'Meta': {'object_name': 'User'}, +            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), +            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), +            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), +            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), +            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) +        }, +        'contenttypes.contenttype': { +            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, +            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) +        }, +        'ishtar_common.arrondissement': { +            'Meta': {'object_name': 'Arrondissement'}, +            'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) +        }, +        'ishtar_common.author': { +            'Meta': {'object_name': 'Author'}, +            'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) +        }, +        'ishtar_common.authortype': { +            'Meta': {'object_name': 'AuthorType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.canton': { +            'Meta': {'object_name': 'Canton'}, +            'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) +        }, +        'ishtar_common.department': { +            'Meta': {'ordering': "['number']", 'object_name': 'Department'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), +            'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), +            'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.documenttemplate': { +            'Meta': {'ordering': "['associated_object_name', 'name']", 'object_name': 'DocumentTemplate'}, +            'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) +        }, +        'ishtar_common.format': { +            'Meta': {'object_name': 'Format'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.import': { +            'Meta': {'object_name': 'Import'}, +            'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), +            'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), +            'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), +            'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), +            'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), +            'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), +            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) +        }, +        'ishtar_common.importertype': { +            'Meta': {'object_name': 'ImporterType'}, +            'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}), +            'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), +            'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.ishtaruser': { +            'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, +            'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), +            'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) +        }, +        'ishtar_common.operationtype': { +            'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.organization': { +            'Meta': {'object_name': 'Organization'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', '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.CharField', [], {'max_length': '300', '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': '300'}), +            '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'}), +            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', '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'}), +            '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']"}), +            'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', '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.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), +            'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            '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'}), +            'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), +            'title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) +        }, +        'ishtar_common.persontype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'ishtar_common.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.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'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        } +    } + +    complete_apps = ['archaeological_operations']
\ No newline at end of file diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index a1cd43b58..795c1a805 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -62,6 +62,18 @@ class Period(GeneralType):          return self.label +class ReportState(GeneralType): +    order = models.IntegerField(_(u"Order")) + +    class Meta: +        verbose_name = _(u"Report state") +        verbose_name_plural = _(u"Report states") +        ordering = ('order',) + +    def __unicode__(self): +        return self.label + +  class ArchaeologicalSite(BaseHistorizedItem):      reference = models.CharField(_(u"Reference"), max_length=20, unique=True)      name = models.CharField(_(u"Name"), max_length=200, @@ -122,6 +134,7 @@ QUALITY = (('ND', _(u"Not documented")),  class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem,                  DashboardFormItem):      QUALITY_DICT = dict(QUALITY) +    SHOW_URL = 'show-operation'      TABLE_COLS = ['year_index', 'operation_type', 'remains', 'towns',                    'start_date', 'excavation_end_date']      if FILES_AVAILABLE: @@ -172,6 +185,9 @@ class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem,      # preventive      effective_man_days = models.IntegerField(_(u"Effective man-days"),                                               blank=True, null=True) +    report_processing = models.ForeignKey( +        ReportState, verbose_name=_(u"Report processing"), +        blank=True, null=True)      if settings.COUNTRY == 'fr':          code_patriarche = models.IntegerField(u"Code PATRIARCHE", null=True,                                                blank=True, unique=True) @@ -257,7 +273,7 @@ class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem,      @property      def short_label(self):          if settings.COUNTRY == 'fr': -            return self.code_patriarche +            return self.reference          return unicode(self)      @property @@ -457,6 +473,7 @@ class RelationType(GeneralRelationType):  class RecordRelations(GeneralRecordRelations, models.Model): +    MAIN_ATTR = 'left_record'      left_record = models.ForeignKey(Operation,                                      related_name='right_relations')      right_record = models.ForeignKey(Operation, @@ -466,6 +483,7 @@ class RecordRelations(GeneralRecordRelations, models.Model):      class Meta:          verbose_name = _(u"Operation record relation")          verbose_name_plural = _(u"Operation record relations") +        ordering = ('left_record', 'relation_type')  post_delete.connect(post_delete_record_relation, sender=RecordRelations) @@ -505,6 +523,7 @@ class OperationSource(Source):                                  null=True)      TABLE_COLS = ['operation.year', 'operation.operation_code'] + \          Source.TABLE_COLS +    SHOW_URL = 'show-operationsource'      @property      def owner(self): diff --git a/archaeological_operations/templates/ishtar/blocks/window_tables/administrativacts.html b/archaeological_operations/templates/ishtar/blocks/window_tables/administrativacts.html index 0be468b59..426669cca 100644 --- a/archaeological_operations/templates/ishtar/blocks/window_tables/administrativacts.html +++ b/archaeological_operations/templates/ishtar/blocks/window_tables/administrativacts.html @@ -5,12 +5,14 @@      <th>{% trans "Ref." %}</th>      <th>{% trans "Type" %}</th>      <th>{% trans "Date" %}</th> +    <th>{% trans "Object" %}</th>    </tr>    {% for act in data %}    <tr>      <td>{{act.full_ref}}</td>      <td class='string'>{{act.act_type}}</td>      <td>{{act.signature_date}}</td> +    <td>{{act.act_object}}</td>    </tr>    {% empty %}    <tr><td colspan="4" class='no_items'>{% trans "No administrative act associated" %}</td></tr> diff --git a/archaeological_operations/templates/ishtar/sheet_operation.html b/archaeological_operations/templates/ishtar/sheet_operation.html index 545b1c143..e3a53e5fa 100644 --- a/archaeological_operations/templates/ishtar/sheet_operation.html +++ b/archaeological_operations/templates/ishtar/sheet_operation.html @@ -48,13 +48,16 @@  {% if item.operator %}<p><label>{%trans "Operator:"%}</label> <span class='value'>{{ item.operator }}</span></p>{% endif %}  <p><label>{%trans "State:"%}</label> <span class='value'>{% if item.is_active %}{%trans "Active file"%}</span></p>  {% else %}{%trans "Closed operation"%}</span></p> -<p><label>{%trans "Closing date:"%}</label> <span class='value'>{{ item.closing.date }} <strong>{%trans "by" %}</strong> {{ item.closing.user }}</span></p> +{% if item.closing.date %}<p><label>{%trans "Closing date:"%}</label> <span class='value'>{{ item.closing.date }} <strong>{%trans "by" %}</strong> {{ item.closing.user }}</span></p>{% endif %}  {% endif %} +{% field "Report delivery date" item.report_delivery_date %} +{% field "Report processing" item.report_processing %}  <p><label>{%trans "Type:"%}</label> <span class='value'>{{ item.operation_type }}</span></p>  {% if item.surface  %}<p><label>{%trans "Surface:"%}</label> <span class='value'>{{ item.surface }} m<sup>2</sup> ({{ item.surface_ha }} ha)</span></p>{% endif %}  {% if item.cost %}<p><label>{%trans "Cost:"%}</label> <span class='value'>{{ item.cost }} €{% if item.cost_by_m2 %}, ({{ item.cost_by_m2 }} €/m<sup>2</sup>){%endif%}</span></p>{%endif%}  {% if item.duration %}<p><label>{%trans "Duration:"%}</label> <span class='value'>{{ item.duration }} {%trans "Day"%}s</span></p>{%endif%} +  <p><label>{%trans "Remains:"%}</label> <span class='value'>{{ item.remains.all|join:", " }}</span></p>  <p><label>{%trans "Periods:"%}</label> <span class='value'>{{ item.periods.all|join:", " }}</span></p> @@ -78,7 +81,7 @@  {% endif %}  {% endif %} -{% if item.comment %}<p><label>{%trans "Comment:"%}</label> <span class='value'>{{ item.comment }}</span></p>{%endif%} +{% field "Comment" item.comment "<pre>" "</pre>" %}  <h3>{% trans "Localisation"%}</h3>  <p><label>{%trans "Towns:"%}</label> <span class='value'>{{ item.towns.all|join:", " }}</span></p> @@ -93,6 +96,17 @@  <p><label>{%trans "Altitude (m NGF):"%}</label> <span class='value'>{{ item.altitude }}</span></p>  {% endcomment %} +{% if item.right_relations.count %} +<h3>{% trans "Relations"%}</h3> +{% for rel in item.right_relations.all %} +{% ifchanged rel.relation_type %} +{% if forloop.counter0 %}</ul>{% endif %} +<h4>{{rel.relation_type}}</h4><ul>{% endifchanged %} +<li><a href="#" onclick="load_window('/show-operation/{{rel.right_record.pk}}/');" class="display_details">{% trans "Details" %}</a> {{rel.right_record}}</li> +{% if forloop.last %}</ul>{% endif %} +{% endfor %} +{% endif %} +  {% trans "Associated parcels" as parcels_label %}  {% include "ishtar/blocks/window_tables/parcels.html" %} diff --git a/archaeological_operations/templates/ishtar/sheet_operationsource.html b/archaeological_operations/templates/ishtar/sheet_operationsource.html new file mode 100644 index 000000000..5bb8518a5 --- /dev/null +++ b/archaeological_operations/templates/ishtar/sheet_operationsource.html @@ -0,0 +1,11 @@ +{% extends "ishtar/sheet_source.html" %} +{% load i18n window_field link_to_window %} + +{% block head_sheet %} +{{block.super}} +<h1>{% trans "Operation source"%}</h1> +{% endblock %} + +{% block related %} +{% field "Related operation" item.owner '' item.owner|link_to_window %} +{% endblock %} diff --git a/archaeological_operations/templates/ishtar/sheet_operationsource_pdf.html b/archaeological_operations/templates/ishtar/sheet_operationsource_pdf.html new file mode 100644 index 000000000..32362d4c2 --- /dev/null +++ b/archaeological_operations/templates/ishtar/sheet_operationsource_pdf.html @@ -0,0 +1,18 @@ +{% extends "ishtar/sheet_operationsource.html" %} +{% block header %} +<link rel="stylesheet" href="{{STATIC_URL}}/media/style_basic.css" /> +{% endblock %} +{% block main_head %} +{{ block.super }} +<div id="pdfheader"> +Ishtar – {{APP_NAME}} – {{item}} +</div> +{% endblock %} +{%block head_sheet%}{%endblock%} +{%block main_foot%} +<div id="pdffooter"> +– <pdf:pagenumber/> – +</div> +</body> +</html> +{%endblock%} diff --git a/archaeological_operations/templates/ishtar/sheet_operationsource_window.html b/archaeological_operations/templates/ishtar/sheet_operationsource_window.html new file mode 100644 index 000000000..8cd2c7fa1 --- /dev/null +++ b/archaeological_operations/templates/ishtar/sheet_operationsource_window.html @@ -0,0 +1,3 @@ +{% extends "ishtar/sheet_operationsource.html" %} +{% block main_head %}{%endblock%} +{% block main_foot %}{%endblock%} diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py index 68ac0bad0..76723deab 100644 --- a/archaeological_operations/urls.py +++ b/archaeological_operations/urls.py @@ -21,6 +21,7 @@ from django.conf.urls.defaults import *  from ishtar_common.wizards import check_rights  import views +import models  # be carreful: each check_rights must be relevant with ishtar_menu @@ -104,7 +105,7 @@ urlpatterns += patterns(      url(r'revert-operation/(?P<pk>.+)/(?P<date>.+)$',          'revert_operation', name='revert-operation'),      url(r'show-operation(?:/(?P<pk>.+))?/(?P<type>.+)?$', -        'show_operation', name='show-operation'), +        'show_operation', name=models.Operation.SHOW_URL),      url(r'show-historized-operation/(?P<pk>.+)?/(?P<date>.+)?$',          'show_operation', name='show-historized-operation'),      url(r'get-administrativeactop/(?P<type>.+)?$', @@ -125,6 +126,8 @@ urlpatterns += patterns(      url(r'generatedoc-administrativeactop/(?P<pk>.+)?/(?P<template_pk>.+)?$',          'generatedoc_administrativeactop',          name='generatedoc-administrativeactop'), +    url(r'show-operationsource(?:/(?P<pk>.+))?/(?P<type>.+)?$', +        'show_operationsource', name=models.OperationSource.SHOW_URL),      url(r'get-operationsource/(?P<type>.+)?$',          'get_operationsource', name='get-operationsource'),      url(r'dashboard_operation/$', 'dashboard_operation', diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index d3d50d791..256985f50 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -151,9 +151,11 @@ get_operation = get_item(  show_operation = show_item(models.Operation, 'operation')  revert_operation = revert_item(models.Operation) +show_operationsource = show_item(models.OperationSource, 'operationsource')  get_operationsource = get_item(      models.OperationSource,      'get_operationsource', 'operationsource', +    bool_fields=['duplicate'],      extra_request_keys={          'operation__towns': 'operation__towns__pk',          'operation__operation_type': 'operation__operation_type__pk', @@ -166,6 +168,7 @@ get_administrativeactop = get_item(                          'operation__towns': 'operation__towns__pk',                          'act_type__intented_to': 'act_type__intented_to',                          'year': 'signature_date__year', +                        'act_object': 'act_object__icontains',                          'history_creator':                          'history_creator__ishtaruser__person__pk',                          'operation__towns__numero_insee__startswith': @@ -180,6 +183,7 @@ get_administrativeact = get_item(                          'indexed': 'index__isnull',                          'history_creator':                          'history_creator__ishtaruser__person__pk', +                        'act_object': 'act_object__icontains',                          'operation__towns__numero_insee__startswith':                          'operation__towns__numero_insee__startswith',                          'operation__towns': 'operation__towns__pk'}, @@ -211,6 +215,7 @@ wizard_steps = [      ('parcels-operation_creation', SelectedParcelFormSet),      ('remains-operation_creation', RemainForm),      ('periods-operation_creation', PeriodForm), +    ('relations-operation_creation', RecordRelationsFormSet),      ('final-operation_creation', FinalForm)]  if FILES_AVAILABLE:      wizard_steps.insert(0, ('filechoice-operation_creation', @@ -250,6 +255,7 @@ operation_modification_wizard = OperationModificationWizard.as_view([      ('parcelsgeneral-operation_modification', SelectedParcelGeneralFormSet),      ('remains-operation_modification', RemainForm),      ('periods-operation_modification', PeriodForm), +    ('relations-operation_modification', RecordRelationsFormSet),      ('final-operation_modification', FinalForm)],      label=_(u"Operation modification"),      condition_dict={ diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index 78a5c3350..2e7b3c4b4 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -40,6 +40,7 @@ class OperationWizard(Wizard):      model = models.Operation      object_parcel_type = 'operation'      parcel_step_key = 'parcels' +    relations_step_key = 'relations'      # step contening the current(s) town(s)      town_step_keys = ['towns-', 'townsgeneral-']      town_input_id = 'town'  # input id of the current(s) town(s) @@ -52,6 +53,8 @@ class OperationWizard(Wizard):          current_step = self.steps.current          if current_step.startswith(self.parcel_step_key):              templates = ['ishtar/wizard/parcels_wizard.html'] + templates +        elif current_step.startswith(self.relations_step_key): +            templates = ['ishtar/wizard/relations_wizard.html'] + templates          return templates      def get_current_file(self): diff --git a/archaeological_warehouse/locale/django.pot b/archaeological_warehouse/locale/django.pot index b236bd19e..3eae70393 100644 --- a/archaeological_warehouse/locale/django.pot +++ b/archaeological_warehouse/locale/django.pot @@ -74,7 +74,7 @@ msgstr ""  msgid "Add a new container"  msgstr "" -#: forms.py:132 ishtar_menu.py:31 views.py:94 +#: forms.py:132 ishtar_menu.py:32 views.py:94  msgid "Packaging"  msgstr "" @@ -90,7 +90,7 @@ msgstr ""  msgid "Packaged finds"  msgstr "" -#: ishtar_menu.py:29 +#: ishtar_menu.py:30  msgid "Find"  msgstr "" diff --git a/example_project/settings.py b/example_project/settings.py index 6a0bf4079..e124198aa 100644 --- a/example_project/settings.py +++ b/example_project/settings.py @@ -10,6 +10,9 @@ DEBUG_TOOLBAR = False  TEMPLATE_DEBUG = DEBUG  SQL_DEBUG = False +if "test" in sys.argv: +    sys.path.insert(0, '..') +  IMAGE_MAX_SIZE = (1024, 768)  THUMB_MAX_SIZE = (300, 300) @@ -17,13 +20,17 @@ CACHE_SMALLTIMEOUT = 120  CACHE_TIMEOUT = 3600  CACHE_BACKEND = 'memcached://127.0.0.1:11211/' -ROOT_PATH = os.path.abspath(os.path.curdir) + os.path.sep +SEP = os.path.sep +ROOT_PATH = SEP.join( +    os.path.abspath(__file__).split(SEP)[:-1]) + SEP  STATIC_URL = '/static/'  STATIC_ROOT = ROOT_PATH + 'static/'  BASE_URL = "/" -  URL_PATH = "" +# prefix for archaeological files code +FILE_PREFIX = "SRA" +  ODT_TEMPLATE = ROOT_PATH + "../ishtar_common/static/template.odt"  LOGIN_REDIRECT_URL = "/" + URL_PATH diff --git a/ishtar_common/__init__.py b/ishtar_common/__init__.py index 7b8a90c36..84ec7c204 100644 --- a/ishtar_common/__init__.py +++ b/ishtar_common/__init__.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2014  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2014-2015  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet>  from django.utils.translation import ugettext as _ @@ -10,8 +10,10 @@ _(u"email address")  VERSION = (0, 9) +_(u"Related item") + +  def get_version():      return u'.'.join((unicode(num) for num in VERSION))  __version__ = get_version() - diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index 34f8ebec8..09ef64c26 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -1180,6 +1180,15 @@ class Importer(object):                      # contruct many dict for each values                      default_dict = {} + +                    # # get default values +                    p = [attribute] +                    if c_path: +                        p = list(c_path) + p +                    p = tuple(p) +                    if p in self._defaults: +                        for k in self._defaults[p]: +                            default_dict[k] = self._defaults[p][k]                      # # init with simple values that will be duplicated                      for key in val.keys():                          if type(val[key]) not in (list, tuple): diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 93f6b9ec6..f194caffa 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -574,12 +574,24 @@ class SourceForm(forms.Form):      title = forms.CharField(label=_(u"Title"),                              validators=[validators.MaxLengthValidator(200)])      source_type = forms.ChoiceField(label=_(u"Source type"), choices=[]) +    reference = forms.CharField( +        label=_(u"Reference"), +        validators=[validators.MaxLengthValidator(100)], required=False) +    internal_reference = forms.CharField( +        label=_(u"Internal reference"), +        validators=[validators.MaxLengthValidator(100)], required=False)      associated_url = forms.URLField(          required=False, label=_(u"Numerical ressource (web address)"))      receipt_date = forms.DateField(label=_(u"Receipt date"), required=False,                                     widget=widgets.JQueryDate)      creation_date = forms.DateField(label=_(u"Creation date"), required=False,                                      widget=widgets.JQueryDate) +    comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea, +                              required=False) +    description = forms.CharField(label=_(u"Description"), +                                  widget=forms.Textarea, required=False) +    duplicate = forms.BooleanField(label=_(u"Has a duplicate"), +                                   required=False)      def __init__(self, *args, **kwargs):          super(SourceForm, self).__init__(*args, **kwargs) @@ -595,6 +607,9 @@ class SourceSelect(TableSelect):          required=False)      source_type = forms.ChoiceField(label=_("Source type"), choices=[]) +    reference = forms.CharField(label=_(u"Reference")) +    internal_reference = forms.CharField(label=_(u"Internal reference")) +    duplicate = forms.NullBooleanField(label=_(u"Has a duplicate"))      def __init__(self, *args, **kwargs):          super(SourceSelect, self).__init__(*args, **kwargs) diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot index f4deb1cbf..338719184 100644 --- a/ishtar_common/locale/django.pot +++ b/ishtar_common/locale/django.pot @@ -18,7 +18,7 @@ msgstr ""  msgid "Archaeological file"  msgstr "" -#: context_processors.py:34 models.py:1110 +#: context_processors.py:34 models.py:1133  msgid "Operation"  msgstr "" @@ -141,7 +141,7 @@ msgstr ""  msgid "Enter a valid name consisting of letters, spaces and hyphens."  msgstr "" -#: forms.py:71 forms_common.py:419 +#: forms.py:71 forms_common.py:420  msgid "Confirm"  msgstr "" @@ -165,15 +165,14 @@ msgstr ""  msgid "Add a new item"  msgstr "" -#: forms.py:171 models.py:970 +#: forms.py:171 models.py:993  msgid "Template"  msgstr ""  #: forms_common.py:39 forms_common.py:57 forms_common.py:169 -#: forms_common.py:268 forms_common.py:273 models.py:1036 models.py:2168 +#: forms_common.py:269 forms_common.py:274 models.py:1059 models.py:2202  #: templates/blocks/JQueryAdvancedTown.html:19  #: templates/ishtar/sheet_organization.html:17 -#: templates/ishtar/sheet_person.html:30  msgid "Town"  msgstr "" @@ -187,70 +186,64 @@ msgid ""  "french town Saint-Denis in the Seine-Saint-Denis department.</p>"  msgstr "" -#: forms_common.py:66 forms_common.py:621 ishtar_menu.py:40 models.py:1895 -#: models.py:2007 models.py:2061 templates/ishtar/sheet_person.html:6 +#: forms_common.py:66 forms_common.py:622 ishtar_menu.py:42 models.py:1918 +#: models.py:2041 models.py:2095 templates/ishtar/sheet_person.html:6  msgid "Person"  msgstr "" -#: forms_common.py:157 forms_common.py:231 ishtar_menu.py:58 models.py:1824 +#: forms_common.py:157 forms_common.py:231 ishtar_menu.py:66 models.py:1847  #: templates/ishtar/sheet_organization.html:6  msgid "Organization"  msgstr ""  #: forms_common.py:160 forms_common.py:196 forms_common.py:226 -#: forms_common.py:259 models.py:969 models.py:1158 models.py:1375 -#: models.py:1818 models.py:1885 models.py:2154 +#: forms_common.py:259 models.py:992 models.py:1181 models.py:1398 +#: models.py:1841 models.py:1908 models.py:2188  #: templates/ishtar/sheet_organization.html:12  #: templates/ishtar/sheet_organization.html:25 -#: templates/ishtar/sheet_person.html:26  msgid "Name"  msgstr "" -#: forms_common.py:161 models.py:1105 models.py:1506 +#: forms_common.py:161 models.py:1128 models.py:1529  msgid "Organization type"  msgstr "" -#: forms_common.py:163 forms_common.py:262 models.py:1031 +#: forms_common.py:163 forms_common.py:263 models.py:1054  #: templates/ishtar/sheet_organization.html:14 -#: templates/ishtar/sheet_person.html:27  msgid "Address"  msgstr "" -#: forms_common.py:165 forms_common.py:264 models.py:1032 +#: forms_common.py:165 forms_common.py:265 models.py:1055  #: templates/ishtar/sheet_organization.html:15 -#: templates/ishtar/sheet_person.html:28  msgid "Address complement"  msgstr "" -#: forms_common.py:167 forms_common.py:266 models.py:1034 +#: forms_common.py:167 forms_common.py:267 models.py:1057  #: templates/ishtar/sheet_organization.html:16 -#: templates/ishtar/sheet_person.html:29  msgid "Postal code"  msgstr "" -#: forms_common.py:170 forms_common.py:269 models.py:1037 +#: forms_common.py:170 forms_common.py:270 models.py:1060  msgid "Country"  msgstr "" -#: forms_common.py:172 forms_common.py:228 forms_common.py:271 -#: forms_common.py:375 models.py:1043 +#: forms_common.py:172 forms_common.py:228 forms_common.py:272 +#: forms_common.py:376 models.py:1066  msgid "Email"  msgstr "" -#: forms_common.py:173 forms_common.py:272 models.py:1039 +#: forms_common.py:173 forms_common.py:273 models.py:1062  #: templates/ishtar/sheet_organization.html:18 -#: templates/ishtar/sheet_person.html:31  msgid "Phone"  msgstr "" -#: forms_common.py:174 models.py:1040 +#: forms_common.py:174 models.py:1063  #: templates/ishtar/sheet_organization.html:19 -#: templates/ishtar/sheet_person.html:32  msgid "Mobile phone"  msgstr "" -#: forms_common.py:197 forms_common.py:229 models.py:1529 models.py:1820 -#: models.py:2102 templates/sheet_ope.html:85 templates/sheet_ope.html.py:105 +#: forms_common.py:197 forms_common.py:229 models.py:1552 models.py:1843 +#: models.py:2136 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:27  #: templates/ishtar/sheet_person.html:56 @@ -262,7 +255,7 @@ msgstr ""  msgid "Organization search"  msgstr "" -#: forms_common.py:227 forms_common.py:257 models.py:1883 +#: forms_common.py:227 forms_common.py:257 models.py:1906  #: templates/ishtar/sheet_organization.html:26  msgid "Surname"  msgstr "" @@ -275,160 +268,160 @@ msgstr ""  msgid "Identity"  msgstr "" -#: forms_common.py:256 forms_common.py:573 models.py:1881 models.py:2099 +#: forms_common.py:256 forms_common.py:574 models.py:1904 models.py:2133  #: templates/sheet_ope.html:104 templates/ishtar/sheet_person.html:55  #: templates/ishtar/blocks/window_tables/documents.html:5  msgid "Title"  msgstr "" -#: forms_common.py:261 models.py:1887 +#: forms_common.py:261 models.py:1910  msgid "Raw name"  msgstr "" -#: forms_common.py:276 +#: forms_common.py:277  msgid "Current organization"  msgstr "" -#: forms_common.py:324 forms_common.py:354 forms_common.py:358 models.py:1865 +#: forms_common.py:325 forms_common.py:355 forms_common.py:359 models.py:1888  msgid "Person type"  msgstr "" -#: forms_common.py:369 forms_common.py:374 +#: forms_common.py:370 forms_common.py:375  msgid "Account"  msgstr "" -#: forms_common.py:378 wizards.py:1029 +#: forms_common.py:379 wizards.py:1141  msgid "New password"  msgstr "" -#: forms_common.py:381 +#: forms_common.py:382  msgid "New password (confirmation)"  msgstr "" -#: forms_common.py:400 +#: forms_common.py:401  msgid "Your password and confirmation password do not match."  msgstr "" -#: forms_common.py:405 +#: forms_common.py:406  msgid "You must provide a correct password."  msgstr "" -#: forms_common.py:413 +#: forms_common.py:414  msgid "This username already exists."  msgstr "" -#: forms_common.py:420 +#: forms_common.py:421  msgid "Send the new password by email?"  msgstr "" -#: forms_common.py:429 forms_common.py:442 models.py:2169 +#: forms_common.py:430 forms_common.py:443 models.py:2203  msgid "Towns"  msgstr "" -#: forms_common.py:439 +#: forms_common.py:440  msgid "There are identical towns."  msgstr "" -#: forms_common.py:523 +#: forms_common.py:524  msgid "Only one choice can be checked."  msgstr "" -#: forms_common.py:571 +#: forms_common.py:572  msgid "Documentation informations"  msgstr "" -#: forms_common.py:575 forms_common.py:596 models.py:1507 models.py:2082 +#: forms_common.py:576 forms_common.py:597 models.py:1530 models.py:2116  msgid "Source type"  msgstr "" -#: forms_common.py:577 models.py:2113 +#: forms_common.py:578 models.py:2147  msgid "Numerical ressource (web address)"  msgstr "" -#: forms_common.py:578 models.py:2115 +#: forms_common.py:579 models.py:2149  msgid "Receipt date"  msgstr "" -#: forms_common.py:580 models.py:1656 models.py:2117 +#: forms_common.py:581 models.py:1679 models.py:2151  msgid "Creation date"  msgstr "" -#: forms_common.py:593 forms_common.py:614 forms_common.py:647 models.py:2066 +#: forms_common.py:594 forms_common.py:615 forms_common.py:648 models.py:2100  #: templates/ishtar/wizard/wizard_person_deletion.html:124  msgid "Author"  msgstr "" -#: forms_common.py:606 +#: forms_common.py:607  msgid "Would you like to delete this documentation?"  msgstr "" -#: forms_common.py:622 models.py:1508 models.py:2056 models.py:2063 +#: forms_common.py:623 models.py:1531 models.py:2090 models.py:2097  msgid "Author type"  msgstr "" -#: forms_common.py:640 +#: forms_common.py:641  msgid "Author selection"  msgstr "" -#: forms_common.py:654 +#: forms_common.py:655  msgid "There are identical authors."  msgstr "" -#: forms_common.py:658 models.py:2067 models.py:2109 +#: forms_common.py:659 models.py:2101 models.py:2143  #: templates/sheet_ope.html:106  #: templates/ishtar/blocks/window_tables/documents.html:7  msgid "Authors"  msgstr "" -#: ishtar_menu.py:28 +#: ishtar_menu.py:29  msgid "Administration"  msgstr "" -#: ishtar_menu.py:30 views.py:135 +#: ishtar_menu.py:31 views.py:135  msgid "Account management"  msgstr "" -#: ishtar_menu.py:33 models.py:753 views.py:1075 +#: ishtar_menu.py:34 models.py:776 views.py:1077  msgid "Global variables"  msgstr "" -#: ishtar_menu.py:38 +#: ishtar_menu.py:39  msgid "Directory"  msgstr "" -#: ishtar_menu.py:42 ishtar_menu.py:60 templates/blocks/JQueryJqGrid.html:4 +#: ishtar_menu.py:45 ishtar_menu.py:69 templates/blocks/JQueryJqGrid.html:4  msgid "Search"  msgstr "" -#: ishtar_menu.py:45 ishtar_menu.py:64 templates/ishtar/import_list.html:15 +#: ishtar_menu.py:49 ishtar_menu.py:74 templates/ishtar/import_list.html:15  msgid "Creation"  msgstr "" -#: ishtar_menu.py:48 ishtar_menu.py:68 +#: ishtar_menu.py:53 ishtar_menu.py:79  msgid "Modification"  msgstr "" -#: ishtar_menu.py:51 ishtar_menu.py:72 templates/ishtar/merge.html:5 +#: ishtar_menu.py:57 ishtar_menu.py:84 templates/ishtar/merge.html:5  msgid "Merge"  msgstr "" -#: ishtar_menu.py:54 ishtar_menu.py:75 models.py:1693 widgets.py:110 +#: ishtar_menu.py:61 ishtar_menu.py:88 models.py:1716 widgets.py:110  msgid "Delete"  msgstr "" -#: ishtar_menu.py:82 models.py:1667 +#: ishtar_menu.py:96 models.py:1690  msgid "Imports"  msgstr "" -#: ishtar_menu.py:84 views.py:1083 +#: ishtar_menu.py:99 views.py:1085  msgid "New import"  msgstr "" -#: ishtar_menu.py:87 views.py:1097 +#: ishtar_menu.py:103 views.py:1099  msgid "Current imports"  msgstr "" -#: ishtar_menu.py:90 +#: ishtar_menu.py:107  msgid "Old imports"  msgstr "" @@ -444,7 +437,7 @@ msgstr ""  msgid "This item already exist."  msgstr "" -#: models.py:256 models.py:1004 models.py:1016 +#: models.py:256 models.py:1027 models.py:1039  msgid "Label"  msgstr "" @@ -452,613 +445,613 @@ msgstr ""  msgid "Textual ID"  msgstr "" -#: models.py:260 models.py:1402 models.py:2124 +#: models.py:260 models.py:1425 models.py:2158  msgid "Comment"  msgstr "" -#: models.py:261 models.py:973 +#: models.py:261 models.py:996  msgid "Available"  msgstr "" -#: models.py:451 models.py:1448 +#: models.py:474 models.py:1471  msgid "Key"  msgstr "" -#: models.py:457 +#: models.py:480  msgid "Key specific to an import"  msgstr "" -#: models.py:528 +#: models.py:551  msgid "Last editor"  msgstr "" -#: models.py:531 +#: models.py:554  msgid "Creator"  msgstr "" -#: models.py:664 models.py:2180 +#: models.py:687 models.py:2214  msgid "Order"  msgstr "" -#: models.py:665 +#: models.py:688  msgid "Symmetrical"  msgstr "" -#: models.py:678 +#: models.py:701  msgid "Cannot have symmetrical and an inverse_relation"  msgstr "" -#: models.py:746 +#: models.py:769  msgid "Variable name"  msgstr "" -#: models.py:747 +#: models.py:770  msgid "Description of the variable"  msgstr "" -#: models.py:749 models.py:1449 +#: models.py:772 models.py:1472  msgid "Value"  msgstr "" -#: models.py:752 +#: models.py:775  msgid "Global variable"  msgstr "" -#: models.py:874 models.py:904 +#: models.py:897 models.py:927  msgid "Total"  msgstr "" -#: models.py:881 models.py:1005 models.py:1017 +#: models.py:904 models.py:1028 models.py:1040  #: templates/ishtar/dashboards/dashboard_main_detail.html:135  #: templates/ishtar/dashboards/dashboard_main_detail_users.html:26  msgid "Number"  msgstr "" -#: models.py:968 +#: models.py:991  msgid "Administrative Act"  msgstr "" -#: models.py:972 +#: models.py:995  msgid "Associated object"  msgstr "" -#: models.py:976 +#: models.py:999  msgid "Document template"  msgstr "" -#: models.py:977 +#: models.py:1000  msgid "Document templates"  msgstr "" -#: models.py:1008 models.py:1018 models.py:1651 +#: models.py:1031 models.py:1041 models.py:1674  msgid "State"  msgstr "" -#: models.py:1022 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:1045 templates/blocks/JQueryAdvancedTown.html:12  msgid "Department"  msgstr "" -#: models.py:1023 +#: models.py:1046  msgid "Departments"  msgstr "" -#: models.py:1051 +#: models.py:1074  msgid "Merge key"  msgstr "" -#: models.py:1106 +#: models.py:1129  msgid "Organization types"  msgstr "" -#: models.py:1111 +#: models.py:1134  msgid "Parcels"  msgstr "" -#: models.py:1113 +#: models.py:1136  msgid "Operation source"  msgstr "" -#: models.py:1119 views.py:890 views.py:947 +#: models.py:1142 views.py:892 views.py:949  msgid "Archaeological files"  msgstr "" -#: models.py:1126 views.py:893 views.py:957 +#: models.py:1149 views.py:895 views.py:959  msgid "Context records"  msgstr "" -#: models.py:1129 views.py:895 views.py:962 +#: models.py:1152 views.py:897 views.py:964  msgid "Finds"  msgstr "" -#: models.py:1160 +#: models.py:1183  msgid "Slug"  msgstr "" -#: models.py:1162 models.py:1334 models.py:1376 models.py:2123 +#: models.py:1185 models.py:1357 models.py:1399 models.py:2157  #: templates/sheet_ope.html:128  msgid "Description"  msgstr "" -#: models.py:1164 templates/ishtar/dashboards/dashboard_main.html:26 +#: models.py:1187 templates/ishtar/dashboards/dashboard_main.html:26  msgid "Users"  msgstr "" -#: models.py:1166 +#: models.py:1189  msgid "Associated model"  msgstr "" -#: models.py:1168 +#: models.py:1191  msgid "Is template"  msgstr "" -#: models.py:1169 +#: models.py:1192  msgid "Unicity keys (separator \";\")"  msgstr "" -#: models.py:1173 +#: models.py:1196  msgid "Importer - Type"  msgstr "" -#: models.py:1174 +#: models.py:1197  msgid "Importer - Types"  msgstr "" -#: models.py:1264 +#: models.py:1287  msgid "Importer - Default"  msgstr "" -#: models.py:1265 +#: models.py:1288  msgid "Importer - Defaults"  msgstr "" -#: models.py:1300 +#: models.py:1323  msgid "Importer - Default value"  msgstr "" -#: models.py:1301 +#: models.py:1324  msgid "Importer - Default values"  msgstr "" -#: models.py:1333 +#: models.py:1356  msgid "Column number"  msgstr "" -#: models.py:1336 +#: models.py:1359  msgid "Required"  msgstr "" -#: models.py:1339 +#: models.py:1362  msgid "Importer - Column"  msgstr "" -#: models.py:1340 +#: models.py:1363  msgid "Importer - Columns"  msgstr "" -#: models.py:1360 +#: models.py:1383  msgid "Field name"  msgstr "" -#: models.py:1362 models.py:1396 +#: models.py:1385 models.py:1419  msgid "Force creation of new item"  msgstr "" -#: models.py:1364 models.py:1398 +#: models.py:1387 models.py:1421  msgid "Concatenate with existing"  msgstr "" -#: models.py:1366 models.py:1400 +#: models.py:1389 models.py:1423  msgid "Concatenate character"  msgstr "" -#: models.py:1370 +#: models.py:1393  msgid "Importer - Duplicate field"  msgstr "" -#: models.py:1371 +#: models.py:1394  msgid "Importer - Duplicate fields"  msgstr "" -#: models.py:1378 +#: models.py:1401  msgid "Regular expression"  msgstr "" -#: models.py:1381 +#: models.py:1404  msgid "Importer - Regular expression"  msgstr "" -#: models.py:1382 +#: models.py:1405  msgid "Importer - Regular expressions"  msgstr "" -#: models.py:1405 +#: models.py:1428  msgid "Importer - Target"  msgstr "" -#: models.py:1406 +#: models.py:1429  msgid "Importer - Targets"  msgstr "" -#: models.py:1430 views.py:306 +#: models.py:1453 views.py:306  msgid "True"  msgstr "" -#: models.py:1431 views.py:308 +#: models.py:1454 views.py:308  msgid "False"  msgstr "" -#: models.py:1450 +#: models.py:1473  msgid "Is set"  msgstr "" -#: models.py:1457 +#: models.py:1480  msgid "Importer - Target key"  msgstr "" -#: models.py:1458 +#: models.py:1481  msgid "Importer - Targets keys"  msgstr "" -#: models.py:1509 models.py:2094 models.py:2105 +#: models.py:1532 models.py:2128 models.py:2139  msgid "Format"  msgstr "" -#: models.py:1510 models.py:2184 +#: models.py:1533 models.py:2218  msgid "Operation type"  msgstr "" -#: models.py:1511 +#: models.py:1534  msgid "Period"  msgstr "" -#: models.py:1512 +#: models.py:1535  msgid "Unit"  msgstr "" -#: models.py:1513 +#: models.py:1536  msgid "Material"  msgstr "" -#: models.py:1515 +#: models.py:1538  msgid "Conservatory state"  msgstr "" -#: models.py:1516 +#: models.py:1539  msgid "Preservation type"  msgstr "" -#: models.py:1517 +#: models.py:1540  msgid "Object type"  msgstr "" -#: models.py:1519 +#: models.py:1542  msgid "Identification type"  msgstr "" -#: models.py:1525 +#: models.py:1548  msgid "Integer"  msgstr "" -#: models.py:1526 +#: models.py:1549  msgid "Float"  msgstr "" -#: models.py:1527 +#: models.py:1550  msgid "String"  msgstr "" -#: models.py:1528 templates/sheet_ope.html:86 +#: models.py:1551 templates/sheet_ope.html:86  msgid "Date"  msgstr "" -#: models.py:1530 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 +#: models.py:1553 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83  #: templates/ishtar/sheet_person.html:54  #: templates/ishtar/dashboards/dashboard_main_detail.html:120  msgid "Year"  msgstr "" -#: models.py:1531 +#: models.py:1554  msgid "String to boolean"  msgstr "" -#: models.py:1532 +#: models.py:1555  msgctxt "filesystem"  msgid "File"  msgstr "" -#: models.py:1533 +#: models.py:1556  msgid "Unknow type"  msgstr "" -#: models.py:1549 +#: models.py:1572  msgid "4 digit year. e.g.: \"2015\""  msgstr "" -#: models.py:1550 +#: models.py:1573  msgid "4 digit year/month/day. e.g.: \"2015/02/04\""  msgstr "" -#: models.py:1551 +#: models.py:1574  msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""  msgstr "" -#: models.py:1561 +#: models.py:1584  msgid "Options"  msgstr "" -#: models.py:1563 +#: models.py:1586  msgid "Split character(s)"  msgstr "" -#: models.py:1567 +#: models.py:1590  msgid "Importer - Formater type"  msgstr "" -#: models.py:1568 +#: models.py:1591  msgid "Importer - Formater types"  msgstr "" -#: models.py:1615 templates/ishtar/dashboards/dashboard_main_detail.html:61 +#: models.py:1638 templates/ishtar/dashboards/dashboard_main_detail.html:61  msgid "Created"  msgstr "" -#: models.py:1616 +#: models.py:1639  msgid "Analyse in progress"  msgstr "" -#: models.py:1617 +#: models.py:1640  msgid "Analysed"  msgstr "" -#: models.py:1618 +#: models.py:1641  msgid "Import pending"  msgstr "" -#: models.py:1619 +#: models.py:1642  msgid "Import in progress"  msgstr "" -#: models.py:1620 +#: models.py:1643  msgid "Finished with errors"  msgstr "" -#: models.py:1621 +#: models.py:1644  msgid "Finished"  msgstr "" -#: models.py:1622 +#: models.py:1645  msgid "Archived"  msgstr "" -#: models.py:1634 +#: models.py:1657  msgid "Imported file"  msgstr "" -#: models.py:1637 +#: models.py:1660  msgid "Associated images (zip file)"  msgstr "" -#: models.py:1639 +#: models.py:1662  msgid "Encoding"  msgstr "" -#: models.py:1641 +#: models.py:1664  msgid "Skip lines"  msgstr "" -#: models.py:1642 templates/ishtar/import_list.html:47 +#: models.py:1665 templates/ishtar/import_list.html:47  msgid "Error file"  msgstr "" -#: models.py:1645 +#: models.py:1668  msgid "Result file"  msgstr "" -#: models.py:1648 templates/ishtar/import_list.html:53 +#: models.py:1671 templates/ishtar/import_list.html:53  msgid "Match file"  msgstr "" -#: models.py:1654 +#: models.py:1677  msgid "Conservative import"  msgstr "" -#: models.py:1659 +#: models.py:1682  msgid "End date"  msgstr "" -#: models.py:1661 +#: models.py:1684  msgid "Seconds remaining"  msgstr "" -#: models.py:1666 +#: models.py:1689  msgid "Import"  msgstr "" -#: models.py:1683 +#: models.py:1706  msgid "Analyse"  msgstr "" -#: models.py:1685 models.py:1688 +#: models.py:1708 models.py:1711  msgid "Re-analyse"  msgstr "" -#: models.py:1686 +#: models.py:1709  msgid "Launch import"  msgstr "" -#: models.py:1689 +#: models.py:1712  msgid "Re-import"  msgstr "" -#: models.py:1690 +#: models.py:1713  msgid "Archive"  msgstr "" -#: models.py:1692 +#: models.py:1715  msgid "Unarchive"  msgstr "" -#: models.py:1825 +#: models.py:1848  msgid "Organizations"  msgstr "" -#: models.py:1827 +#: models.py:1850  msgid "Can view all Organization"  msgstr "" -#: models.py:1828 +#: models.py:1851  msgid "Can view own Organization"  msgstr "" -#: models.py:1829 +#: models.py:1852  msgid "Can add own Organization"  msgstr "" -#: models.py:1831 +#: models.py:1854  msgid "Can change own Organization"  msgstr "" -#: models.py:1833 +#: models.py:1856  msgid "Can delete own Organization"  msgstr "" -#: models.py:1861 +#: models.py:1884  msgid "Groups"  msgstr "" -#: models.py:1866 +#: models.py:1889  msgid "Person types"  msgstr "" -#: models.py:1873 +#: models.py:1896  msgid "Mr"  msgstr "" -#: models.py:1874 +#: models.py:1897  msgid "Miss"  msgstr "" -#: models.py:1875 +#: models.py:1898  msgid "Mr and Miss"  msgstr "" -#: models.py:1876 +#: models.py:1899  msgid "Mrs"  msgstr "" -#: models.py:1877 +#: models.py:1900  msgid "Doctor"  msgstr "" -#: models.py:1889 models.py:1929 +#: models.py:1912 models.py:1952  msgid "Types"  msgstr "" -#: models.py:1892 +#: models.py:1915  msgid "Is attached to"  msgstr "" -#: models.py:1896 +#: models.py:1919  msgid "Persons"  msgstr "" -#: models.py:1898 +#: models.py:1921  msgid "Can view all Person"  msgstr "" -#: models.py:1899 +#: models.py:1922  msgid "Can view own Person"  msgstr "" -#: models.py:1900 +#: models.py:1923  msgid "Can add own Person"  msgstr "" -#: models.py:1901 +#: models.py:1924  msgid "Can change own Person"  msgstr "" -#: models.py:1902 +#: models.py:1925  msgid "Can delete own Person"  msgstr "" -#: models.py:2011 +#: models.py:2045  msgid "Ishtar user"  msgstr "" -#: models.py:2012 +#: models.py:2046  msgid "Ishtar users"  msgstr "" -#: models.py:2057 +#: models.py:2091  msgid "Author types"  msgstr "" -#: models.py:2083 +#: models.py:2117  msgid "Source types"  msgstr "" -#: models.py:2088 +#: models.py:2122  msgid "Support type"  msgstr "" -#: models.py:2089 +#: models.py:2123  msgid "Support types"  msgstr "" -#: models.py:2095 +#: models.py:2129  msgid "Formats"  msgstr "" -#: models.py:2100 +#: models.py:2134  msgid "External ID"  msgstr "" -#: models.py:2103 +#: models.py:2137  msgid "Support"  msgstr "" -#: models.py:2107 +#: models.py:2141  msgid "Scale"  msgstr "" -#: models.py:2118 +#: models.py:2152  msgid "Item number"  msgstr "" -#: models.py:2119 +#: models.py:2153  msgid "Ref."  msgstr "" -#: models.py:2121 +#: models.py:2155  msgid "Internal reference"  msgstr "" -#: models.py:2125 +#: models.py:2159  msgid "Additional information"  msgstr "" -#: models.py:2155 +#: models.py:2189  msgid "Surface (m2)"  msgstr "" -#: models.py:2156 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 +#: models.py:2190 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107  msgid "Localisation"  msgstr "" -#: models.py:2181 +#: models.py:2215  msgid "Is preventive"  msgstr "" -#: models.py:2185 +#: models.py:2219  msgid "Operation types"  msgstr "" -#: models.py:2211 +#: models.py:2245  msgid "Preventive"  msgstr "" -#: models.py:2212 +#: models.py:2246  msgid "Research"  msgstr "" @@ -1090,33 +1083,33 @@ msgstr ""  msgid "Organization deletion"  msgstr "" -#: views.py:592 templates/base.html:80 +#: views.py:594 templates/base.html:80  #: templates/ishtar/sheet_organization.html:35  msgid "Details"  msgstr "" -#: views.py:820 views.py:873 +#: views.py:822 views.py:875  msgid "Operation not permitted."  msgstr "" -#: views.py:822 +#: views.py:824  #, python-format  msgid "New %s"  msgstr "" -#: views.py:891 views.py:951 +#: views.py:893 views.py:953  msgid "Operations"  msgstr "" -#: views.py:1144 templates/ishtar/import_list.html:43 +#: views.py:1146 templates/ishtar/import_list.html:43  msgid "Link unmatched items"  msgstr "" -#: views.py:1159 +#: views.py:1161  msgid "Delete import"  msgstr "" -#: views.py:1218 views.py:1234 +#: views.py:1220 views.py:1236  msgid "Corporation manager"  msgstr "" @@ -1136,15 +1129,15 @@ msgstr ""  msgid "Remove"  msgstr "" -#: wizards.py:242 templates/ishtar/import_delete.html:20 +#: wizards.py:313 templates/ishtar/import_delete.html:20  msgid "Yes"  msgstr "" -#: wizards.py:244 +#: wizards.py:315  msgid "No"  msgstr "" -#: wizards.py:1085 +#: wizards.py:1198  #, python-format  msgid "[%(app_name)s] Account creation/modification"  msgstr "" @@ -1654,7 +1647,7 @@ msgstr ""  msgid "Link"  msgstr "" -#: templates/ishtar/sheet_person.html:68 +#: templates/ishtar/sheet_person.html:69  msgid "No document associated to this person"  msgstr "" @@ -1759,6 +1752,7 @@ msgstr ""  #: templates/ishtar/wizard/default_wizard.html:35  #: templates/ishtar/wizard/parcels_wizard.html:24 +#: templates/ishtar/wizard/relations_wizard.html:23  #: templates/ishtar/wizard/search.html:20  #: templates/ishtar/wizard/towns_wizard.html:19  msgid "Add/Modify" @@ -1776,6 +1770,7 @@ msgid ""  msgstr ""  #: templates/ishtar/wizard/parcels_wizard.html:20 +#: templates/ishtar/wizard/relations_wizard.html:20  msgid "all"  msgstr "" diff --git a/ishtar_common/management/commands/ishtar_import.py b/ishtar_common/management/commands/ishtar_import.py new file mode 100644 index 000000000..aba1e45d5 --- /dev/null +++ b/ishtar_common/management/commands/ishtar_import.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from django.core.management.base import BaseCommand, CommandError + +from ishtar_common import models + + +class Command(BaseCommand): +    help = "./manage.py ishtar_import <command> <import_id>\n\n"\ +           "Launch the importation a configured import.\n"\ +           "<command> must be: \"analyse\", \"import\" or \"archive\"." + +    def handle(self, *args, **options): +        if not args or len(args) < 2: +            raise CommandError("<command> and <import_id> are mandatory") +        command = args[0] +        if args[0] not in ["analyse", "import", "archive"]: +            raise CommandError( +                "<command> must be: \"analyse\", \"import\" or \"archive\"." +            ) +        try: +            imp = models.Import.objects.get(pk=args[1]) +        except (ValueError, models.Import.DoesNotExist): +            raise CommandError("{} is not a valid import ID".format(args[0])) +        if command == 'analyse': +            imp.initialize() +            self.stdout.write("* {} analysed\n".format(imp)) +            self.stdout.flush() +        elif command == 'import': +            self.stdout.write("* import {}\n".format(imp)) +            imp.importation() +            self.stdout.write("* {} imported\n".format(imp)) +            self.stdout.flush() +        elif command == 'archive': +            imp.archive() +            self.stdout.write("*{} archived\n".format(imp)) +            self.stdout.flush() diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 20b8a6f46..af1c70dce 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1539,7 +1539,8 @@ TARGET_MODELS = [      ('archaeological_finds.models.PreservationType', _(u"Preservation type")),      ('archaeological_finds.models.ObjectType', _(u"Object type")),      ('archaeological_context_records.models.IdentificationType', -     _("Identification type")) +     _("Identification type")), +    ('SupportType', _(u"Support type")),  ]  TARGET_MODELS_KEYS = [tm[0] for tm in TARGET_MODELS] @@ -1690,8 +1691,8 @@ class Import(models.Model):          verbose_name_plural = _(u"Imports")      def __unicode__(self): -        return u"%s - %s" % (unicode(self.importer_type), -                             unicode(self.user)) +        return u"%s - %s - %d" % (unicode(self.importer_type), +                                  unicode(self.user), self.pk)      def need_matching(self):          return bool(TargetKey.objects.filter(associated_import=self, @@ -2150,14 +2151,15 @@ class Source(models.Model):      creation_date = models.DateField(blank=True, null=True,                                       verbose_name=_(u"Creation date"))      item_number = models.IntegerField(_(u"Item number"), default=1) -    reference = models.CharField(_(u"Ref."), max_length=25, null=True, +    reference = models.CharField(_(u"Ref."), max_length=100, null=True,                                   blank=True) -    internal_reference = models.CharField(_(u"Internal reference"), -                                          max_length=25, null=True, blank=True) +    internal_reference = models.CharField( +        _(u"Internal ref."), max_length=100, null=True, blank=True)      description = models.TextField(_(u"Description"), blank=True, null=True)      comment = models.TextField(_(u"Comment"), blank=True, null=True)      additional_information = models.TextField(_(u"Additional information"),                                                blank=True, null=True) +    duplicate = models.BooleanField(_(u"Has a duplicate"), default=False)      TABLE_COLS = ['title', 'source_type', 'authors', ]      class Meta: @@ -2166,6 +2168,13 @@ class Source(models.Model):      def __unicode__(self):          return self.title +    @property +    def associated_filename(self): +        values = [unicode(getattr(self, attr)) +                  for attr in ('source_type', 'title') +                  if getattr(self, attr)] +        return slugify(u"-".join(values)) +  if settings.COUNTRY == 'fr':      class Arrondissement(models.Model):          name = models.CharField(u"Nom", max_length=30) diff --git a/ishtar_common/templates/blocks/JQueryJqGrid.html b/ishtar_common/templates/blocks/JQueryJqGrid.html index 7e7086738..e8647dadf 100644 --- a/ishtar_common/templates/blocks/JQueryJqGrid.html +++ b/ishtar_common/templates/blocks/JQueryJqGrid.html @@ -73,6 +73,7 @@ jQuery(document).ready(function(){        {name:'link', index:'link', width:30},        {{extra_cols|safe}}      ], +    height: 300,      sortname: 'value',      viewrecords: true,      sortorder: "asc", diff --git a/ishtar_common/templates/blocks/inline_formset.html b/ishtar_common/templates/blocks/inline_formset.html index 3affb7bf3..4d4042985 100644 --- a/ishtar_common/templates/blocks/inline_formset.html +++ b/ishtar_common/templates/blocks/inline_formset.html @@ -12,7 +12,7 @@      {% if frm.errors %}<tr><td colspan='3'><ul>{% for error in frm.errors.values %}<li>{{error}}</li>{% endfor%}</ul></td></tr>{% endif %}          <tr>{% endif %}{% for field in frm.visible_fields %}<td>          {% if field.errors %}<div class='errors'>{{ field.errors.as_ul }}</div>{% endif %} -        {{ field }} +        {{ field|safe }}          {# Include the hidden fields in the form #}          {% if forloop.first %}            {{ formset.management_form }} diff --git a/ishtar_common/templates/ishtar/blocks/window_field_url.html b/ishtar_common/templates/ishtar/blocks/window_field_url.html new file mode 100644 index 000000000..b91f318b6 --- /dev/null +++ b/ishtar_common/templates/ishtar/blocks/window_field_url.html @@ -0,0 +1,3 @@ +{% load i18n %} +{% if link %}<p><label>{% trans caption %}{% trans ":"%}</label> +<span class='value'><a target="_blank" href='{{link|safe}}'>{% if link_name %}{{link_name}}{% else %}{% trans "link" %}{% endif %}</a></span></p>{% endif%} diff --git a/ishtar_common/templates/ishtar/sheet.html b/ishtar_common/templates/ishtar/sheet.html index 915376938..1302e4637 100644 --- a/ishtar_common/templates/ishtar/sheet.html +++ b/ishtar_common/templates/ishtar/sheet.html @@ -45,7 +45,9 @@ jQuery(document).ready(function(){  </script>  {% endblock %}  <div class="body"> -{% block content %}{% endblock %} +{% block toolbar %}{% endblock %} +{% block content %} +{% endblock %}  </div>  </div>  {%block main_foot%} diff --git a/ishtar_common/templates/ishtar/sheet_source.html b/ishtar_common/templates/ishtar/sheet_source.html new file mode 100644 index 000000000..47e285017 --- /dev/null +++ b/ishtar_common/templates/ishtar/sheet_source.html @@ -0,0 +1,24 @@ +{% extends "ishtar/sheet.html" %} +{% load i18n window_field link_to_window %} +{% block toolbar %}{% include "ishtar/sheet_toolbar.html" %}{% endblock %} +{% block content %} +{% block general %} +{% field "Title" item.title %} +{% field "Source type" item.source_type %} +{% field "Format type" item.format_type %} +{% field "Scale" item.scale %} +{% field_url "Web link" item.associated_url %} +{% field_multiple "Authors" item.authors %} +{% field "Item number" item.item_number %} +{% field "Ref." item.reference %} +{% field "Internal ref." item.internal_reference %} +{% field "Has a duplicate" item.duplicate %} +{% field "Description" item.description %} +{% field "Comment" item.comment %} +{% field "Additional information" item.additional_information %} +{% endblock %} +{% block related %} +{% field "Related item" item.owner %} +{% endblock %} +{% endblock %} + diff --git a/ishtar_common/templates/ishtar/sheet_toolbar.html b/ishtar_common/templates/ishtar/sheet_toolbar.html new file mode 100644 index 000000000..2e059781e --- /dev/null +++ b/ishtar_common/templates/ishtar/sheet_toolbar.html @@ -0,0 +1,2 @@ +{% load i18n link_to_window %}<div class='tool'>{%trans "Export as:"%} <a href='{{item|link_to_odt}}'>{%trans "OpenOffice.org file"%}</a>, <a href='{{item|link_to_pdf}}'>{%trans "PDF file"%}</a></div> + diff --git a/ishtar_common/templates/ishtar/wizard/relations_wizard.html b/ishtar_common/templates/ishtar/wizard/relations_wizard.html new file mode 100644 index 000000000..9ca592ca8 --- /dev/null +++ b/ishtar_common/templates/ishtar/wizard/relations_wizard.html @@ -0,0 +1,32 @@ +{% extends "ishtar/wizard/default_wizard.html" %} +{% load i18n range inline_formset %} +{% block extra_head %} +{{wizard.form.media}} +{% endblock %} +{% block wizard_form %} +<form action="." method="post">{% csrf_token %} +<div class='form'> +{{ wizard.form.media }} +{{ wizard.management_form }} +{{ wizard.form.management_form }} + +{% if wizard.form.non_form_errors%} +<table class='formset'> +<tr class='error'><th colspan='2'>{{wizard.form.non_form_errors}}</th></tr> +</table>{%endif%} + +<table class='inline-table'> +  <tr>{% for field in wizard.form.forms.0 %}<th{% if not forloop.last %} rowspan='2'{% endif %}>{{ field.label_tag }}</th>{% endfor %}</tr> +  <tr><td>({% trans "all"%} <input type='checkbox' name='check-all' class='check-all'/>)</td></tr> +  {% inline_formset 'Parcels' wizard.form.forms False %} +</table> +<p><button name="formset_modify" value="{{wizard.steps.current}}">{% trans "Add/Modify" %}</button></p> +<input type="hidden" name="{{ step_field }}" value="{{ step0 }}" /> +{{ previous_fields|safe }} +{% block "validation_bar" %} +{% include 'ishtar/wizard/validation_bar.html' %} +{% endblock %} +</div> +</form> +{% endblock %} + diff --git a/ishtar_common/templatetags/inline_formset.py b/ishtar_common/templatetags/inline_formset.py index c3220f207..5e833c06f 100644 --- a/ishtar_common/templatetags/inline_formset.py +++ b/ishtar_common/templatetags/inline_formset.py @@ -2,11 +2,10 @@  # -*- coding: utf-8 -*-  from django import template -from django.utils.translation import ugettext as _ -import re  register = template.Library() +  @register.inclusion_tag('blocks/inline_formset.html')  def inline_formset(caption, formset, header=True, skip=False):      u""" @@ -14,5 +13,5 @@ def inline_formset(caption, formset, header=True, skip=False):      For i18n of the caption be carreful to add manualy the caption label to      the translated fields      """ -    return {'caption':caption, 'formset':formset, 'header':header, 'skip':skip} - +    return {'caption': caption, 'formset': formset, 'header': header, +            'skip': skip} diff --git a/ishtar_common/templatetags/link_to_window.py b/ishtar_common/templatetags/link_to_window.py new file mode 100644 index 000000000..65e8b23ca --- /dev/null +++ b/ishtar_common/templatetags/link_to_window.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from django.core.urlresolvers import reverse +from django.template import Library +from django.utils.translation import ugettext as _ + +register = Library() + + +@register.filter +def link_to_window(item): +    return u' <a class="display_details" href="#" '\ +        'onclick="load_window(\'{}\')">{}</a>'.format( +            reverse(item.SHOW_URL, args=[item.pk, '']), +            _("Details")) + + +@register.filter +def link_to_odt(item): +    return reverse(item.SHOW_URL, args=[item.pk, 'odt']) + + +@register.filter +def link_to_pdf(item): +    return reverse(item.SHOW_URL, args=[item.pk, 'pdf']) diff --git a/ishtar_common/templatetags/window_field.py b/ishtar_common/templatetags/window_field.py index 4a764166a..34071f60f 100644 --- a/ishtar_common/templatetags/window_field.py +++ b/ishtar_common/templatetags/window_field.py @@ -1,14 +1,26 @@  from django import template +from django.utils.translation import ugettext_lazy as _  register = template.Library()  @register.inclusion_tag('ishtar/blocks/window_field.html')  def field(caption, data, pre_data='', post_data=''): +    if data in (True, False): +        data = _(unicode(data))      return {'caption': caption, 'data': data, "pre_data": pre_data,              'post_data': post_data} +@register.inclusion_tag('ishtar/blocks/window_field_url.html') +def field_url(caption, link, link_name=''): +    if not link: +        return u'' +    if not link.startswith('http://'): +        link = 'http://' + link +    return {'caption': caption, 'link': link, "link_name": link_name} + +  @register.inclusion_tag('ishtar/blocks/window_field_multiple.html')  def field_multiple(caption, data):      return {'caption': caption, 'data': data} diff --git a/ishtar_common/views.py b/ishtar_common/views.py index a18673b44..1320517ff 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -325,18 +325,24 @@ def get_item(model, func_name, default_name, extra_request_keys=[],          # check rights          own = True  # more restrictive by default          allowed = False -        for perm, lbl in model._meta.permissions: -            # if not specific any perm is relevant (read right) -            if specific_perms and perm not in specific_perms: -                continue -            if request.user.has_perm(model._meta.app_label + '.' + perm) \ -                    or (request.user.is_authenticated() -                        and request.user.ishtaruser.has_right( -                            perm, session=request.session)): -                allowed = True -                if "_own_" not in perm: -                    own = False -                    break  # max right reach +        if request.user.is_authenticated() and \ +                request.user.ishtaruser.has_right('administrator', +                                                  session=request.session): +            allowed = True +            own = False +        else: +            for perm, lbl in model._meta.permissions: +                # if not specific any perm is relevant (read right) +                if specific_perms and perm not in specific_perms: +                    continue +                if request.user.has_perm(model._meta.app_label + '.' + perm) \ +                        or (request.user.is_authenticated() +                            and request.user.ishtaruser.has_right( +                                perm, session=request.session)): +                    allowed = True +                    if "_own_" not in perm: +                        own = False +                        break  # max right reach          if force_own:              own = True          EMPTY = '' diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index d00766978..031498ca3 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -326,7 +326,7 @@ class Wizard(NamedUrlWizardView):                          for val in values:                              item = associated_models[key].objects.get(pk=val)                              if hasattr(item, 'short_label'): -                                value = item.short_label +                                value = unicode(item.short_label)                              else:                                  value = unicode(item)                              rendered_values.append(value) @@ -545,30 +545,46 @@ class Wizard(NamedUrlWizardView):              # material_index management for baseitems              obj.save()          m2m_items = {} +        # clear +        # TODO! perf - to be really optimized          for model in whole_associated_models: -            getattr(obj, model + 's').clear() +            related_model = getattr(obj, model + 's') +            # clear real m2m +            if hasattr(related_model, 'clear'): +                related_model.clear() +            else: +                for r in related_model.all(): +                    r.delete()          for key, value in m2m: +            related_model = getattr(obj, key + 's')              if key not in m2m_items:                  if type(key) == dict:                      vals = [] -                    for item in getattr(obj, key + 's').all(): +                    for item in related_model.all():                          v = {}                          for k in value.keys():                              v[k] = getattr(item, k)                          vals.append(v)                      m2m_items[key] = vals                  else: -                    m2m_items[key] = getattr(obj, key + 's').all() +                    m2m_items[key] = related_model.all()              if value not in m2m_items[key]:                  if type(value) == dict: -                    model = getattr(obj, key + 's').model +                    model = related_model.model                      if issubclass(model, models.BaseHistorizedItem):                          value['history_modifier'] = self.request.user +                    # not m2m -> foreign key +                    if not hasattr(related_model, 'clear'): +                        assert hasattr(model, 'MAIN_ATTR'), \ +                            u"Must define a MAIN_ATTR for " + \ +                            unicode(model.__class__) +                        value[getattr(model, 'MAIN_ATTR')] = obj                      value = model.objects.create(**value)                      value.save()                  # check that an item is not add multiple times (forged forms) -                if value not in getattr(obj, key + 's').all(): -                    getattr(obj, key + 's').add(value) +                if value not in related_model.all() and\ +                        hasattr(related_model, 'add'): +                    related_model.add(value)                      # necessary to manage interaction between models like                      # material_index management for baseitems                      obj.save() diff --git a/translations/fr/archaeological_context_records.po b/translations/fr/archaeological_context_records.po index 9dfa7a2f7..86f2433a4 100644 --- a/translations/fr/archaeological_context_records.po +++ b/translations/fr/archaeological_context_records.po @@ -5,295 +5,297 @@  # Étienne Loks <etienne.loks@proxience.com>, 2015. #zanata  msgid ""  msgstr "" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-09 00:28+0100\n" -"PO-Revision-Date: \n" -"Last-Translator: Étienne Loks <etienne.loks at peacefrogs net>\n" -"Language-Team: \n" -"Language: fr\n"  "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n"  "Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"PO-Revision-Date: 2015-12-23 05:03-0500\n" +"Last-Translator: Étienne Loks <etienne.loks@proxience.com>\n" +"Language-Team: \n" +"Language: fr\n"  "Plural-Forms: nplurals=2; plural=n>1;\n"  "X-Generator: Zanata 3.7.3\n" -#: forms.py:43 forms.py:96 models.py:123 +#: forms.py:44 forms.py:97 models.py:124  #: templates/ishtar/sheet_contextrecord.html:72  msgid "ID"  msgstr "Identifiant" -#: forms.py:47 +#: forms.py:48  msgid "Code PATRIARCHE"  msgstr "Code PATRIARCHE" -#: forms.py:48 +#: forms.py:49  msgid "Operation's year"  msgstr "Année de l'opération" -#: forms.py:50 +#: forms.py:51  msgid "Operation's number (index by year)"  msgstr "Numéro de l'opération (index par année)" -#: forms.py:51 forms.py:162 models.py:47 +#: forms.py:52 forms.py:163 models.py:48  msgid "Period"  msgstr "Période" -#: forms.py:52 +#: forms.py:53  msgid "Unit type"  msgstr "Type d'unité" -#: forms.py:53 +#: forms.py:54  msgid "Parcel (section/number)"  msgstr "Parcelle (section/numéro)" -#: forms.py:71 forms.py:229 views.py:68 +#: forms.py:72 forms.py:259 views.py:68  msgid "Context record search"  msgstr "Recherche d'Unité d'Enregistrement" -#: forms.py:85 +#: forms.py:86  msgid "You should at least select one context record."  msgstr "Vous devez sélectionner au moins une Unité d'Enregistrement." -#: forms.py:91 +#: forms.py:92  msgid "General"  msgstr "Général" -#: forms.py:95 models.py:116 models.py:119 +#: forms.py:96 models.py:117 models.py:120  #: templates/ishtar/sheet_contextrecord.html:76  msgid "Parcel"  msgstr "Parcelle" -#: forms.py:98 models.py:124 templates/ishtar/sheet_contextrecord.html:42 +#: forms.py:99 models.py:125 templates/ishtar/sheet_contextrecord.html:42  #: templates/ishtar/sheet_contextrecord.html:75  msgid "Description"  msgstr "Description" -#: forms.py:100 models.py:129 +#: forms.py:101 models.py:130  msgid "Length (cm)"  msgstr "Longueur (cm)" -#: forms.py:101 models.py:130 +#: forms.py:102 models.py:131  msgid "Width (cm)"  msgstr "Largeur (cm)" -#: forms.py:102 models.py:131 +#: forms.py:103 models.py:132  msgid "Thickness (cm)"  msgstr "Épaisseur (cm)" -#: forms.py:103 models.py:133 +#: forms.py:104 models.py:134  msgid "Depth (cm)"  msgstr "Profondeur (cm)" -#: forms.py:104 models.py:139 +#: forms.py:105 models.py:140  msgid "Unit"  msgstr "Unité" -#: forms.py:106 models.py:135 +#: forms.py:107 models.py:136  msgid "Location"  msgstr "Lieu" -#: forms.py:151 +#: forms.py:152  msgid "This ID already exist for this operation."  msgstr "Cet identifiant existe déjà pour cette opération." -#: forms.py:157 forms.py:181 models.py:58 +#: forms.py:158 forms.py:182 models.py:59  msgid "Dating"  msgstr "Datation" -#: forms.py:163 models.py:48 +#: forms.py:164 models.py:49  msgid "Start date"  msgstr "Date de début" -#: forms.py:164 models.py:49 models.py:128 +#: forms.py:165 models.py:50 models.py:129  msgid "End date"  msgstr "Date de fin" -#: forms.py:165 models.py:52 +#: forms.py:166 models.py:53  msgid "Quality"  msgstr "Qualité" -#: forms.py:166 models.py:34 models.py:50 +#: forms.py:167 models.py:35 models.py:51  msgid "Dating type"  msgstr "Type de datation" -#: forms.py:185 forms.py:192 models.py:144 +#: forms.py:191 ishtar_menu.py:29 models.py:318 +msgid "Context record" +msgstr "Unité d'Enregistrement" + +#: forms.py:211 +msgid "Relations" +msgstr "Relations" + +#: forms.py:215 forms.py:222 models.py:145  #: templates/ishtar/sheet_contextrecord.html:52  msgid "Interpretation"  msgstr "Interprétation" -#: forms.py:188 models.py:141 +#: forms.py:218 models.py:142  msgid "Has furniture?"  msgstr "Contient du mobilier ?" -#: forms.py:190 models.py:143 +#: forms.py:220 models.py:144  msgid "Filling"  msgstr "Remplissage" -#: forms.py:194 models.py:164 +#: forms.py:224 models.py:165  msgid "Activity"  msgstr "Activité" -#: forms.py:196 models.py:162 +#: forms.py:226 models.py:163  msgid "Identification"  msgstr "Identification" -#: forms.py:198 models.py:147 +#: forms.py:228 models.py:148  msgid "TAQ"  msgstr "TAQ" -#: forms.py:199 models.py:151 +#: forms.py:229 models.py:152  msgid "Estimated TAQ"  msgstr "TAQ estimé" -#: forms.py:201 models.py:154 +#: forms.py:231 models.py:155  msgid "TPQ"  msgstr "TPQ" -#: forms.py:202 models.py:158 +#: forms.py:232 models.py:159  msgid "Estimated TPQ"  msgstr "TPQ estimé" -#: forms.py:215 +#: forms.py:245  msgid "Operation search"  msgstr "Recherche d'opérations" -#: forms.py:217 +#: forms.py:247  msgid "You should select an operation."  msgstr "Vous devez sélectionner une opération." -#: forms.py:222 +#: forms.py:252  msgid "Would you like to delete this context record?"  msgstr "Voulez-vous supprimer cette Unité d'Enregistrement ?" -#: forms.py:231 +#: forms.py:261  msgid "You should select a context record."  msgstr "Vous devez sélectionner une Unité d'Enregistrement." -#: forms.py:236 +#: forms.py:266  msgid "Town of the operation"  msgstr "Commune de l'opération" -#: forms.py:238 +#: forms.py:268  msgid "Year of the operation"  msgstr "Année de l'opération" -#: forms.py:240 +#: forms.py:270  msgid "Period of the context record"  msgstr "Période de l'Unité d'Enregistrement" -#: forms.py:242 +#: forms.py:272  msgid "Unit type of the context record"  msgstr "Type d'unité de l'Unité d'Enregistrement" -#: forms.py:255 +#: forms.py:285  msgid "Documentation search"  msgstr "Recherche de document" -#: forms.py:257 +#: forms.py:287  msgid "You should select a document."  msgstr "Vous devez sélectionner un document." -#: ishtar_menu.py:27 models.py:310 -msgid "Context record" -msgstr "Unité d'Enregistrement" - -#: ishtar_menu.py:28 +#: ishtar_menu.py:30  msgid "Search"  msgstr "Recherche" -#: ishtar_menu.py:32 +#: ishtar_menu.py:34  msgid "Creation"  msgstr "Ajout" -#: ishtar_menu.py:36 ishtar_menu.py:53 +#: ishtar_menu.py:38 ishtar_menu.py:55  msgid "Modification"  msgstr "Modification" -#: ishtar_menu.py:40 ishtar_menu.py:59 +#: ishtar_menu.py:42 ishtar_menu.py:61  msgid "Deletion"  msgstr "Suppression" -#: ishtar_menu.py:44 +#: ishtar_menu.py:46  msgid "Documentation"  msgstr "Documentation" -#: ishtar_menu.py:47 +#: ishtar_menu.py:49  msgid "Add"  msgstr "Ajout" -#: models.py:35 +#: models.py:36  msgid "Dating types"  msgstr "Types de datation" -#: models.py:41 +#: models.py:42  msgid "Dating quality"  msgstr "Qualité de datation" -#: models.py:42 +#: models.py:43  msgid "Dating qualities"  msgstr "Qualités de datation" -#: models.py:54 +#: models.py:55  msgid "Precise dating"  msgstr "Datation précise" -#: models.py:59 +#: models.py:60  msgid "Datings"  msgstr "Datations" -#: models.py:70 models.py:84 models.py:96 +#: models.py:71 models.py:85 models.py:97  msgid "Order"  msgstr "Ordre" -#: models.py:71 +#: models.py:72  msgid "Parent unit"  msgstr "Unité parente" -#: models.py:75 +#: models.py:76  msgid "Type Unit"  msgstr "Type d'unité" -#: models.py:76 +#: models.py:77  msgid "Types Unit"  msgstr "Types d'unité" -#: models.py:87 +#: models.py:88  msgid "Type Activity"  msgstr "Type d'activité" -#: models.py:88 +#: models.py:89  msgid "Types Activity"  msgstr "Types d'activité" -#: models.py:99 +#: models.py:100  msgid "Type Identification"  msgstr "Type d'identification" -#: models.py:100 +#: models.py:101  msgid "Types Identification"  msgstr "Types d'identification" -#: models.py:117 +#: models.py:118  msgid "External ID"  msgstr "ID externe" -#: models.py:121 wizards.py:60 +#: models.py:122 wizards.py:68  msgid "Operation"  msgstr "Opération" -#: models.py:125 +#: models.py:126  msgid "Comment"  msgstr "Commentaires" -#: models.py:126 +#: models.py:127  msgid "Date d'ouverture"  msgstr "Date d'ouverture" -#: models.py:136 +#: models.py:137  msgid "A short description of the location of the context record"  msgstr "Une courte description de la situation de l'Unité d'Enregistrement" -#: models.py:148 +#: models.py:149  msgid ""  "\"Terminus Ante Quem\" the context record can't have been created after this "  "date" @@ -301,11 +303,11 @@ msgstr ""  "« Terminus Ante Quem » l'Unité d'Enregistrement ne peut avoir été créée "  "après cette date" -#: models.py:152 +#: models.py:153  msgid "Estimation of a \"Terminus Ante Quem\""  msgstr "Estimation d'un « Terminus Ante Quem »" -#: models.py:155 +#: models.py:156  msgid ""  "\"Terminus Post Quem\" the context record can't have been created before "  "this date" @@ -313,88 +315,88 @@ msgstr ""  "« Terminus Post Quem » l'Unité d'Enregistrement ne peut avoir été créée "  "avant cette date" -#: models.py:159 +#: models.py:160  msgid "Estimation of a \"Terminus Post Quem\""  msgstr "Estimation d'un « Terminus Post Quem »" -#: models.py:170 models.py:171 templates/ishtar/sheet_contextrecord.html:6 +#: models.py:171 models.py:172 templates/ishtar/sheet_contextrecord.html:6  msgid "Context Record"  msgstr "Unité d'Enregistrement" -#: models.py:173 +#: models.py:174  msgid "Can view all Context Record"  msgstr "Peut voir toutes les Unités d'Enregistrement" -#: models.py:175 +#: models.py:176  msgid "Can view own Context Record"  msgstr "Peut voir sa propre Unité d'Enregistrement" -#: models.py:177 +#: models.py:178  msgid "Can add own Context Record"  msgstr "Peut ajouter sa propre Unité d'Enregistrement" -#: models.py:179 +#: models.py:180  msgid "Can change own Context Record"  msgstr "Peut changer sa propre Unité d'Enregistrement" -#: models.py:181 +#: models.py:182  msgid "Can delete own Context Record"  msgstr "Peut supprimer sa propre Unité d'Enregistrement" -#: models.py:190 +#: models.py:191  msgctxt "short"  msgid "Context record"  msgstr "UE" -#: models.py:282 +#: models.py:289  msgid "Inverse relation"  msgstr "Relation inverse" -#: models.py:286 templates/ishtar/sheet_contextrecord.html:71 +#: models.py:293 templates/ishtar/sheet_contextrecord.html:71  msgid "Relation type"  msgstr "Type de relation" -#: models.py:287 +#: models.py:294  msgid "Relation types"  msgstr "Types de relation" -#: models.py:299 +#: models.py:307  msgid "Record relation"  msgstr "Relation entre Unités d'Enregistrement" -#: models.py:300 +#: models.py:308  msgid "Record relations"  msgstr "Relations entre Unités d'Enregistrement" -#: models.py:307 +#: models.py:315  msgid "Context record documentation"  msgstr "Documentation d'une Unité d'Enregistrement" -#: models.py:308 +#: models.py:316  msgid "Context record documentations"  msgstr "Documentations des Unités d'Enregistrement" -#: views.py:77 +#: views.py:78  msgid "New context record"  msgstr "Nouvelle Unité d'Enregistrement" -#: views.py:86 +#: views.py:88  msgid "Context record modification"  msgstr "Modification d'une Unité d'Enregistrement" -#: views.py:100 +#: views.py:102  msgid "Context record deletion"  msgstr "Suppression d'une Unité d'Enregistrement" -#: views.py:108 +#: views.py:110  msgid "Context record: new source"  msgstr "Unité d'Enregistrement : nouvelle documentation associée" -#: views.py:116 +#: views.py:118  msgid "Context record: source modification"  msgstr "Unité d'Enregistrement : modification d'une documentation associée" -#: views.py:122 +#: views.py:124  msgid "Context record: source deletion"  msgstr "Unité d'Enregistrement : suppression d'une documentation associée" diff --git a/translations/fr/archaeological_files.po b/translations/fr/archaeological_files.po index 869358299..ca3f61ba1 100644 --- a/translations/fr/archaeological_files.po +++ b/translations/fr/archaeological_files.po @@ -5,32 +5,30 @@  # Étienne Loks <etienne.loks@proxience.com>, 2015. #zanata  msgid ""  msgstr "" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-09 00:28+0100\n" -"PO-Revision-Date: 2015-12-08 06:25-0500\n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"PO-Revision-Date: 2015-12-28 06:34-0500\n"  "Last-Translator: Étienne Loks <etienne.loks@proxience.com>\n"  "Language-Team: \n"  "Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n"  "Plural-Forms: nplurals=2; plural=n>1;\n"  "X-Generator: Zanata 3.7.3\n" -#: forms.py:51 forms.py:191 forms.py:235 forms.py:376 forms.py:429 +#: forms.py:51 forms.py:191 forms.py:235 forms.py:376 forms.py:431  #: models.py:75 templates/ishtar/sheet_file.html:137  msgid "Year"  msgstr "Année" -#: forms.py:52 forms.py:196 forms.py:237 forms.py:428 models.py:78 +#: forms.py:52 forms.py:196 forms.py:237 forms.py:430 models.py:78  msgid "Numeric reference"  msgstr "Référence numérique" -#: forms.py:54 forms.py:198 forms.py:431 +#: forms.py:54 forms.py:198 forms.py:433  msgid "Other reference"  msgstr "Autre référence" -#: forms.py:56 forms.py:409 +#: forms.py:56 forms.py:411  msgid "File name"  msgstr "Nom du dossier" @@ -50,23 +48,23 @@ msgstr "Parcelle (section/numéro)"  msgid "Is active?"  msgstr "Est actif ?" -#: forms.py:62 forms.py:267 forms.py:411 models.py:91 +#: forms.py:62 forms.py:267 forms.py:413 models.py:91  msgid "General contractor"  msgstr "Aménageur" -#: forms.py:69 forms.py:420 +#: forms.py:69 forms.py:422  msgid "Organization of general contractor"  msgstr "Organisation de l'aménageur" -#: forms.py:76 forms.py:433 templates/ishtar/sheet_file.html:114 +#: forms.py:76 forms.py:435 templates/ishtar/sheet_file.html:114  msgid "In charge"  msgstr "Responsable" -#: forms.py:83 forms.py:446 +#: forms.py:83 forms.py:450  msgid "Created by"  msgstr "Créé par" -#: forms.py:90 forms.py:292 forms.py:441 models.py:117 +#: forms.py:90 forms.py:292 forms.py:443 models.py:117  msgid "Permit reference"  msgstr "Référence du permis" @@ -204,67 +202,71 @@ msgstr "Voulez vous supprimer ce dossier archéologique ?"  msgid "Index"  msgstr "Index" -#: forms.py:381 forms.py:403 forms.py:489 +#: forms.py:381 forms.py:405 forms.py:493  msgid "Act type"  msgstr "Type d'acte" -#: forms.py:385 forms.py:444 models.py:514 +#: forms.py:382 forms.py:447 +msgid "Object (full text search)" +msgstr "Objet (recherche texte intégral)" + +#: forms.py:387 forms.py:446 models.py:514  msgid "Department"  msgstr "Département" -#: forms.py:405 +#: forms.py:407  msgid "Signature date after"  msgstr "Date de signature après" -#: forms.py:407 +#: forms.py:409  msgid "Signature date before"  msgstr "Date de signature avant" -#: ishtar_menu.py:30 models.py:186 templates/ishtar/sheet_file.html:6 +#: ishtar_menu.py:33 models.py:186 templates/ishtar/sheet_file.html:6  msgid "Archaeological file"  msgstr "Dossier" -#: ishtar_menu.py:32 ishtar_menu.py:50 +#: ishtar_menu.py:36 ishtar_menu.py:59  msgid "Search"  msgstr "Recherche" -#: ishtar_menu.py:35 +#: ishtar_menu.py:40  msgid "Creation"  msgstr "Ajout" -#: ishtar_menu.py:38 ishtar_menu.py:58 +#: ishtar_menu.py:44 ishtar_menu.py:67  msgid "Modification"  msgstr "Modification" -#: ishtar_menu.py:41 +#: ishtar_menu.py:48  msgid "Closing"  msgstr "Clotûre" -#: ishtar_menu.py:44 ishtar_menu.py:62 +#: ishtar_menu.py:52 ishtar_menu.py:71  msgid "Deletion"  msgstr "Suppression" -#: ishtar_menu.py:47 +#: ishtar_menu.py:56  msgid "Administrative act"  msgstr "Acte administratif" -#: ishtar_menu.py:54 +#: ishtar_menu.py:63  msgid "Add"  msgstr "Ajout" -#: ishtar_menu.py:66 +#: ishtar_menu.py:75  msgid "Documents"  msgstr "Documents" -#: ishtar_menu.py:72 +#: ishtar_menu.py:81  msgid "Dashboard"  msgstr "Tableau de bord" -#: ishtar_menu.py:74 +#: ishtar_menu.py:82  msgid "General informations"  msgstr "Informations générales" -#: ishtar_menu.py:77 models.py:187 +#: ishtar_menu.py:85 models.py:187  #: templates/ishtar/dashboards/dashboard_file.html:8  msgid "Archaeological files"  msgstr "Dossiers archéologiques" @@ -393,39 +395,39 @@ msgstr "Pas de commune"  msgid "File"  msgstr "Dossier" -#: views.py:141 +#: views.py:142  msgid "File search"  msgstr "Recherche de dossier archéologique" -#: views.py:150 +#: views.py:151  msgid "New file"  msgstr "Nouveau dossier archéologique" -#: views.py:169 +#: views.py:170  msgid "File modification"  msgstr "Modification de dossier archéologique" -#: views.py:192 +#: views.py:193  msgid "File closing"  msgstr "Clotûre de dossier" -#: views.py:197 +#: views.py:198  msgid "File deletion"  msgstr "Suppression de dossier archéologique" -#: views.py:204 +#: views.py:205  msgid "File: search administrative act"  msgstr "Dossier : rechercher un acte administratif" -#: views.py:213 +#: views.py:214  msgid "File: new administrative act"  msgstr "Dossier : nouvel acte administratif" -#: views.py:223 +#: views.py:224  msgid "File: administrative act modification"  msgstr "Dossier : modification d'acte administratif" -#: views.py:232 +#: views.py:233  msgid "File: administrative act deletion"  msgstr "Dossier : suppression acte administratif" diff --git a/translations/fr/archaeological_files_pdl.po b/translations/fr/archaeological_files_pdl.po index 1039d1d51..648d6a566 100644 --- a/translations/fr/archaeological_files_pdl.po +++ b/translations/fr/archaeological_files_pdl.po @@ -5,15 +5,13 @@  # Étienne Loks <etienne.loks@proxience.com>, 2015. #zanata  msgid ""  msgstr "" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-09 00:28+0100\n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n"  "PO-Revision-Date: 2015-12-08 06:24-0500\n"  "Last-Translator: Étienne Loks <etienne.loks@proxience.com>\n"  "Language-Team: \n"  "Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n"  "Plural-Forms: nplurals=2; plural=(n > 1)\n"  "X-Generator: Zanata 3.7.3\n" diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po index 2a2a14a67..8c13f4a07 100644 --- a/translations/fr/archaeological_finds.po +++ b/translations/fr/archaeological_finds.po @@ -5,33 +5,31 @@  # Étienne Loks <etienne.loks@proxience.com>, 2015. #zanata  msgid ""  msgstr "" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-09 00:28+0100\n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n"  "PO-Revision-Date: 2015-11-27 07:42-0500\n"  "Last-Translator: Étienne Loks <etienne.loks@proxience.com>\n"  "Language-Team: \n"  "Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n"  "Plural-Forms: nplurals=2; plural=n>1;\n"  "X-Generator: Zanata 3.7.3\n" -#: forms.py:45 ishtar_menu.py:27 models.py:344 models.py:530 models.py:600 +#: forms.py:45 ishtar_menu.py:31 models.py:345 models.py:539 models.py:609  #: templates/ishtar/sheet_find.html:6  msgid "Find"  msgstr "Mobilier" -#: forms.py:54 forms.py:289 models.py:108 models.py:286 +#: forms.py:54 forms.py:289 models.py:108 models.py:287  msgid "Free-ID"  msgstr "Identifiant libre" -#: forms.py:56 models.py:328 +#: forms.py:56 models.py:329  msgid "Previous ID"  msgstr "Identifiant précédent" -#: forms.py:57 forms.py:165 forms.py:229 models.py:111 models.py:287 -#: models.py:553 templates/ishtar/sheet_find.html:87 +#: forms.py:57 forms.py:165 forms.py:229 models.py:111 models.py:288 +#: models.py:562 templates/ishtar/sheet_find.html:87  msgid "Description"  msgstr "Description" @@ -39,7 +37,7 @@ msgstr "Description"  msgid "Batch/object"  msgstr "Lot/objet" -#: forms.py:62 models.py:314 +#: forms.py:62 models.py:315  msgid "Is complete?"  msgstr "Est complet ?" @@ -47,11 +45,11 @@ msgstr "Est complet ?"  msgid "Material type"  msgstr "Type de matériau" -#: forms.py:66 forms.py:162 models.py:60 models.py:291 +#: forms.py:66 forms.py:162 models.py:60 models.py:292  msgid "Conservatory state"  msgstr "État sanitaire" -#: forms.py:69 models.py:85 models.py:317 +#: forms.py:69 models.py:85 models.py:318  msgid "Object types"  msgstr "Types d'objet" @@ -59,55 +57,55 @@ msgstr "Types d'objet"  msgid "Preservation type"  msgstr "Type de conservation" -#: forms.py:74 forms.py:164 models.py:319 +#: forms.py:74 forms.py:164 models.py:320  msgid "Integrity"  msgstr "Intégrité" -#: forms.py:76 models.py:320 +#: forms.py:76 models.py:321  msgid "Length (cm)"  msgstr "Longueur (cm)" -#: forms.py:77 models.py:321 +#: forms.py:77 models.py:322  msgid "Width (cm)"  msgstr "Largeur (cm)" -#: forms.py:78 models.py:322 +#: forms.py:78 models.py:323  msgid "Height (cm)"  msgstr "Hauteur (cm)" -#: forms.py:79 models.py:323 +#: forms.py:79 models.py:324  msgid "Diameter (cm)"  msgstr "Diametre (cm)" -#: forms.py:80 forms.py:294 models.py:296 +#: forms.py:80 forms.py:294 models.py:297  msgid "Volume (l)"  msgstr "Volume (l)" -#: forms.py:81 forms.py:295 models.py:297 +#: forms.py:81 forms.py:295 models.py:298  msgid "Weight (g)"  msgstr "Poids (g)" -#: forms.py:82 forms.py:296 models.py:300 +#: forms.py:82 forms.py:296 models.py:301  msgid "Find number"  msgstr "Mobilier (en nombre)" -#: forms.py:83 models.py:324 +#: forms.py:83 models.py:325  msgid "Mark"  msgstr "Marque" -#: forms.py:84 forms.py:169 models.py:330 +#: forms.py:84 forms.py:169 models.py:331  msgid "Check"  msgstr "Vérification" -#: forms.py:86 models.py:332 +#: forms.py:86 models.py:333  msgid "Check date"  msgstr "Date de vérification" -#: forms.py:87 models.py:112 models.py:325 models.py:554 +#: forms.py:87 models.py:112 models.py:326 models.py:563  msgid "Comment"  msgstr "Commentaire" -#: forms.py:90 models.py:326 +#: forms.py:90 models.py:327  msgid "Comment on dating"  msgstr "Commentaire général sur les datations" @@ -124,7 +122,7 @@ msgstr ""  "<p>Les images trop grandes sont retaillées en : %(width)dx%(height)d (le "  "ratio est conservé).</p>" -#: forms.py:119 forms.py:147 models.py:308 +#: forms.py:119 forms.py:147 models.py:309  msgid "Dating"  msgstr "Datation" @@ -132,11 +130,11 @@ msgstr "Datation"  msgid "Period"  msgstr "Période" -#: forms.py:125 forms.py:231 models.py:565 models.py:606 +#: forms.py:125 forms.py:231 models.py:574 models.py:615  msgid "Start date"  msgstr "Date de début" -#: forms.py:127 forms.py:233 models.py:566 models.py:607 +#: forms.py:127 forms.py:233 models.py:575 models.py:616  msgid "End date"  msgstr "Date de fin" @@ -176,15 +174,15 @@ msgstr "Recherche de mobilier"  msgid "Base treatment"  msgstr "Traitement de base" -#: forms.py:216 models.py:542 models.py:556 +#: forms.py:216 models.py:551 models.py:565  msgid "Treatment type"  msgstr "Type de traitement" -#: forms.py:218 models.py:563 models.py:604 +#: forms.py:218 models.py:572 models.py:613  msgid "Person"  msgstr "Individu" -#: forms.py:224 models.py:558 +#: forms.py:224 models.py:567  msgid "Location"  msgstr "Lieu" @@ -192,7 +190,7 @@ msgstr "Lieu"  msgid "Upstream finds"  msgstr "Mobilier amont" -#: forms.py:247 models.py:345 +#: forms.py:247 models.py:346  msgid "Finds"  msgstr "Mobilier" @@ -248,23 +246,23 @@ msgstr "Recherche de document"  msgid "You should select a document."  msgstr "Vous devez sélectionner un document." -#: ishtar_menu.py:29 +#: ishtar_menu.py:34  msgid "Search"  msgstr "Recherche" -#: ishtar_menu.py:33 ishtar_menu.py:48 +#: ishtar_menu.py:39 ishtar_menu.py:56  msgid "Creation"  msgstr "Ajout" -#: ishtar_menu.py:37 ishtar_menu.py:53 +#: ishtar_menu.py:44 ishtar_menu.py:61  msgid "Modification"  msgstr "Modification" -#: ishtar_menu.py:45 +#: ishtar_menu.py:53  msgid "Documentation"  msgstr "Documentation" -#: ishtar_menu.py:58 +#: ishtar_menu.py:66  msgid "Deletion"  msgstr "Suppression" @@ -280,7 +278,7 @@ msgstr "Recommandation"  msgid "Parent material"  msgstr "Matériau parent" -#: models.py:51 models.py:289 +#: models.py:51 models.py:290  msgid "Material types"  msgstr "Types de matériau" @@ -316,7 +314,7 @@ msgstr "Objet"  msgid "Batch"  msgstr "Lot" -#: models.py:109 models.py:283 models.py:548 +#: models.py:109 models.py:284 models.py:557  msgid "External ID"  msgstr "ID externe" @@ -348,7 +346,7 @@ msgstr "Valeur en cache - ne pas éditer"  msgid "Complete ID"  msgstr "ID complet" -#: models.py:136 models.py:281 +#: models.py:136 models.py:282  msgid "Base find"  msgstr "Mobilier de base" @@ -424,123 +422,123 @@ msgstr "Mobilier de base - Intérêt spécifique"  msgid "Base find - Discovery date"  msgstr "Mobilier de base - Date de découverte" -#: models.py:285 +#: models.py:286  msgid "Order"  msgstr "Ordre" -#: models.py:294 +#: models.py:295  msgid "Type of preservation to consider"  msgstr "Mesures de conservation à envisager" -#: models.py:298 +#: models.py:299  msgid "Weight unit"  msgstr "Unité de poids" -#: models.py:304 templates/ishtar/sheet_find.html:61 +#: models.py:305 templates/ishtar/sheet_find.html:61  msgid "Upstream treatment"  msgstr "Traitement amont" -#: models.py:307 templates/ishtar/sheet_find.html:63 +#: models.py:308 templates/ishtar/sheet_find.html:63  msgid "Downstream treatment"  msgstr "Traitement aval" -#: models.py:312 models.py:551 templates/ishtar/sheet_find.html:65 +#: models.py:313 models.py:560 templates/ishtar/sheet_find.html:65  msgid "Container"  msgstr "Contenant" -#: models.py:347 +#: models.py:348  msgid "Can view all Find"  msgstr "Peut voir tout le Mobilier" -#: models.py:348 +#: models.py:349  msgid "Can view own Find"  msgstr "Peut voir son propre Mobilier" -#: models.py:349 +#: models.py:350  msgid "Can add own Find"  msgstr "Peut ajouter son propre Mobilier" -#: models.py:350 +#: models.py:351  msgid "Can change own Find"  msgstr "Peut changer son propre Mobilier" -#: models.py:351 +#: models.py:352  msgid "Can delete own Find"  msgstr "Peut supprimer son propre Mobilier" -#: models.py:356 +#: models.py:357  msgid "FIND"  msgstr "MOBILIER" -#: models.py:528 +#: models.py:537  msgid "Find documentation"  msgstr "Documentation de mobilier" -#: models.py:529 +#: models.py:538  msgid "Find documentations"  msgstr "Documentations de mobilier" -#: models.py:539 +#: models.py:548  msgid "Virtual"  msgstr "Virtuel" -#: models.py:543 +#: models.py:552  msgid "Treatment types"  msgstr "Types de traitement" -#: models.py:560 +#: models.py:569  msgid "Other location"  msgstr "Autre lieu" -#: models.py:570 models.py:592 +#: models.py:579 models.py:601  msgid "Treatment"  msgstr "Traitement" -#: models.py:571 +#: models.py:580  msgid "Treatments"  msgstr "Traitements" -#: models.py:573 +#: models.py:582  msgid "Can view all Treatment"  msgstr "Peut voir tous les Traitements" -#: models.py:574 +#: models.py:583  msgid "Can view own Treatment"  msgstr "Peut voir son propre Traitement" -#: models.py:575 +#: models.py:584  msgid "Can add own Treatment"  msgstr "Peut ajouter son propre Traitement" -#: models.py:576 +#: models.py:585  msgid "Can change own Treatment"  msgstr "Peut changer son propre Traitement" -#: models.py:577 +#: models.py:586  msgid "Can delete own Treatment"  msgstr "Peut supprimer son propre Traitement" -#: models.py:583 +#: models.py:592  msgid "by"  msgstr "par" -#: models.py:589 +#: models.py:598  msgid "Treatment documentation"  msgstr "Documentation d'un traitement" -#: models.py:590 +#: models.py:599  msgid "Treament documentations"  msgstr "Documentations des traitements" -#: models.py:603 +#: models.py:612  msgid "Administrative act"  msgstr "Acte administratif" -#: models.py:610 +#: models.py:619  msgid "Property"  msgstr "Propriété" -#: models.py:611 +#: models.py:620  msgid "Properties"  msgstr "Propriétés" @@ -564,11 +562,11 @@ msgstr "Mobilier : modification de documentation associée"  msgid "Find: source deletion"  msgstr "Mobilier : suppression de mobilier associé" -#: wizards.py:63 +#: wizards.py:61  msgid "Operation"  msgstr "Opération" -#: wizards.py:64 +#: wizards.py:62  msgid "Context record"  msgstr "Unité d'Enregistrement" diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po index 702820cc8..f12f83eaa 100644 --- a/translations/fr/archaeological_operations.po +++ b/translations/fr/archaeological_operations.po @@ -2,27 +2,25 @@  # 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@proxience.com>, 2015. #zanata +# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata  msgid ""  msgstr "" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-09 00:28+0100\n" -"PO-Revision-Date: 2015-11-20 06:39-0500\n" -"Last-Translator: Étienne Loks <etienne.loks@proxience.com>\n" -"Language-Team: \n" -"Language: fr\n"  "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n"  "Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n" +"PO-Revision-Date: 2015-12-28 06:35-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.7.3\n" -#: forms.py:69 forms.py:336 forms.py:775 forms.py:797 forms.py:801 -#: models.py:774 templates/ishtar/blocks/window_tables/parcels.html:8 +#: forms.py:69 forms.py:336 forms.py:856 forms.py:878 forms.py:882 +#: models.py:788 templates/ishtar/blocks/window_tables/parcels.html:8  msgid "Parcels"  msgstr "Parcelles" -#: forms.py:72 forms.py:188 forms.py:751 models.py:764 +#: forms.py:72 forms.py:188 forms.py:832 models.py:778  #: templates/ishtar/blocks/window_tables/parcels.html:5  #: templates/ishtar/dashboards/dashboard_operation.html:302  #: templates/ishtar/dashboards/dashboard_operation.html:315 @@ -31,18 +29,18 @@ msgstr "Parcelles"  msgid "Town"  msgstr "Commune" -#: forms.py:74 forms.py:346 forms.py:603 forms.py:982 models.py:148 -#: models.py:580 models.py:762 +#: forms.py:74 forms.py:414 forms.py:680 forms.py:1045 models.py:160 +#: models.py:594 models.py:776  #: templates/ishtar/blocks/window_tables/parcels.html:6  msgid "Year"  msgstr "Année" -#: forms.py:77 models.py:765 +#: forms.py:77 models.py:779  #: templates/ishtar/blocks/window_tables/parcels.html:7  msgid "Section"  msgstr "Section" -#: forms.py:80 models.py:766 +#: forms.py:80 models.py:780  msgid "Parcel number"  msgstr "Numéro de parcelle" @@ -70,208 +68,238 @@ msgstr "exemple : \"2013: XD:1 à 13,24,33 à 39, YD:24\" ou \"AB:24,AC:42\""  msgid "There are identical parcels."  msgstr "Il y a des parcelles identiques." -#: forms.py:347 +#: forms.py:345 +msgid "Relation type" +msgstr "Type de relation" + +#: forms.py:348 ishtar_menu.py:33 models.py:239 models.py:494 models.py:519 +#: models.py:533 models.py:585 models.py:775 wizards.py:341 wizards.py:352 +#: templates/ishtar/sheet_operation.html:6 +msgid "Operation" +msgstr "Opération" + +#: forms.py:367 +msgid ":" +msgstr ": " + +#: forms.py:398 +msgid "Current relations" +msgstr "Relations actuelles" + +#: forms.py:400 +msgid "Deleted relations" +msgstr "Relations supprimées" + +#: forms.py:404 templates/ishtar/sheet_operation.html:100 +msgid "Relations" +msgstr "Relations" + +#: forms.py:415  msgid "Numeric reference"  msgstr "Identifiant numérique" -#: forms.py:348 +#: forms.py:416  msgid "Name (full text search)"  msgstr "Nom (recherche texte intégral)" -#: forms.py:353 forms.py:493 forms.py:588 forms.py:959 models.py:157 +#: forms.py:421 forms.py:567 forms.py:663 forms.py:1022 models.py:169  msgid "Operation type"  msgstr "Type d'opération" -#: forms.py:361 models.py:565 +#: forms.py:429 models.py:579  msgid "Scientist in charge"  msgstr "Responsable scientifique" -#: forms.py:370 forms.py:581 models.py:145 +#: forms.py:438 forms.py:656 models.py:157  msgid "In charge"  msgstr "Responsable" -#: forms.py:372 forms.py:495 forms.py:574 models.py:143 +#: forms.py:440 forms.py:569 forms.py:649 models.py:155  msgid "Operator"  msgstr "Opérateur" -#: forms.py:377 forms.py:859 models.py:71 models.py:159 +#: forms.py:445 forms.py:922 models.py:83 models.py:171  msgid "Remains"  msgstr "Vestiges" -#: forms.py:378 forms.py:829 forms.py:849 forms.py:856 models.py:69 -#: models.py:164 +#: forms.py:446 forms.py:901 forms.py:919 models.py:81 models.py:176  msgid "Periods"  msgstr "Périodes" -#: forms.py:379 +#: forms.py:447  msgid "Started before"  msgstr "Commencé avant" -#: forms.py:381 +#: forms.py:449  msgid "Started after"  msgstr "Commencé après" -#: forms.py:383 +#: forms.py:451  msgid "Ended before"  msgstr "Terminé avant" -#: forms.py:385 +#: forms.py:453  msgid "Ended after"  msgstr "Terminé après" -#: forms.py:387 +#: forms.py:455  msgid "Parcel (section/number)"  msgstr "Parcelle (section/numéro)" -#: forms.py:388 +#: forms.py:456  msgid "Is open?"  msgstr "Est ouvert ?" -#: forms.py:390 forms.py:993 +#: forms.py:458 forms.py:1058  msgid "Created by"  msgstr "Créé par" -#: forms.py:395 forms.py:642 models.py:219 +#: forms.py:463 forms.py:719 models.py:234  msgid "Record quality"  msgstr "Qualité d'enregistrement" -#: forms.py:396 forms.py:645 models.py:214 +#: forms.py:464 forms.py:673 models.py:188 +msgid "Report processing" +msgstr "Traitement du rapport" + +#: forms.py:466 forms.py:722 models.py:229  msgid "Virtual operation"  msgstr "Opération virtuelle" -#: forms.py:420 forms.py:952 views.py:201 +#: forms.py:494 forms.py:1015 views.py:203  msgid "Operation search"  msgstr "Recherche d'opérations" -#: forms.py:433 forms.py:954 +#: forms.py:507 forms.py:1017  msgid "You should select an operation."  msgstr "Vous devez sélectionner une opération." -#: forms.py:464 +#: forms.py:538  msgid "Associated file"  msgstr "Dossier associé" -#: forms.py:468 forms.py:700 models.py:577 wizards.py:75 +#: forms.py:542 forms.py:781 models.py:591 wizards.py:78  msgid "Archaelogical file"  msgstr "Dossier" -#: forms.py:473 +#: forms.py:547  msgid "months"  msgstr "mois" -#: forms.py:473 +#: forms.py:547  msgid "years"  msgstr "années" -#: forms.py:475 models.py:129 +#: forms.py:549 models.py:141  msgid "Creation date"  msgstr "Date de création" -#: forms.py:476 +#: forms.py:550  msgid "Start of field work"  msgstr "Début du travail de terrain" -#: forms.py:478 +#: forms.py:552  msgid "All"  msgstr "Tous" -#: forms.py:479 +#: forms.py:553  msgid "Preventive"  msgstr "Préventif" -#: forms.py:480 +#: forms.py:554  msgid "Research"  msgstr "Programmée" -#: forms.py:484 +#: forms.py:558  msgid "Slicing"  msgstr "Découpage" -#: forms.py:487 +#: forms.py:561  msgid "Department detail"  msgstr "Détail par département" -#: forms.py:489 +#: forms.py:563  msgid "Date get from"  msgstr "Date obtenue depuis" -#: forms.py:491 +#: forms.py:565  msgid "Preventive/Research"  msgstr "Préventif/Programmé" -#: forms.py:497 +#: forms.py:571  msgid "Date after"  msgstr "Date après" -#: forms.py:499 +#: forms.py:573  msgid "Date before"  msgstr "Date avant" -#: forms.py:501 +#: forms.py:575  msgid "With reports"  msgstr "Avec un rapport" -#: forms.py:502 +#: forms.py:576  msgid "With finds"  msgstr "Avec du matériel" -#: forms.py:554 forms.py:1033 templates/ishtar/sheet_administrativeact.html:11 +#: forms.py:628 forms.py:1098 templates/ishtar/sheet_administrativeact.html:11  #: templates/ishtar/sheet_operation.html:32  msgid "General"  msgstr "Général" -#: forms.py:564 +#: forms.py:639  msgid "Head scientist"  msgstr "Responsable scientifique" -#: forms.py:591 models.py:51 models.py:132 models.py:934 +#: forms.py:666 models.py:51 models.py:144 models.py:948  msgid "Start date"  msgstr "Date de début" -#: forms.py:593 models.py:134 +#: forms.py:668 models.py:146  msgid "Excavation end date"  msgstr "Date de fin de chantier" -#: forms.py:596 models.py:135 +#: forms.py:671 models.py:147  msgid "Report delivery date"  msgstr "Date de livraison du rapport" -#: forms.py:600 +#: forms.py:677  msgid "Total surface (m2)"  msgstr "Surface totale (m2)" -#: forms.py:608 forms.py:696 models.py:149 models.py:358 +#: forms.py:685 forms.py:777 models.py:161 models.py:373  msgid "Operation code"  msgstr "Code de l'opération" -#: forms.py:611 models.py:206 +#: forms.py:688 models.py:221  msgid "Generic name"  msgstr "Nom générique" -#: forms.py:613 models.py:205 +#: forms.py:690 models.py:220  msgid "Operator reference"  msgstr "Référence de l'opérateur" -#: forms.py:617 +#: forms.py:694  msgid "Associated archaeological sites"  msgstr "Sites archéologiques associés" -#: forms.py:640 models.py:207 +#: forms.py:717 models.py:222  msgid "Comment"  msgstr "Commentaire" -#: forms.py:666 +#: forms.py:747  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:671 +#: forms.py:752  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." +msgstr "" +"La date de fin de chantier ne peut être antérieure à la date de début." -#: forms.py:686 +#: forms.py:767  #, python-format  msgid ""  "Operation code already exist for year: %(year)d - use a value bigger than " @@ -280,108 +308,100 @@ 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:690 +#: forms.py:771  msgid "Bad operation code"  msgstr "Mauvais code d'opération" -#: forms.py:721 +#: forms.py:802  msgid "Preventive informations - excavation"  msgstr "Information archéologie préventive - fouille" -#: forms.py:722 models.py:162 +#: forms.py:803 models.py:174  #: templates/ishtar/dashboards/dashboard_operation.html:495  msgid "Cost (euros)"  msgstr "Coût (euros)" -#: forms.py:723 models.py:167 +#: forms.py:804 models.py:179  msgid "Scheduled man-days"  msgstr "Jours-hommes prévus" -#: forms.py:725 models.py:170 +#: forms.py:806 models.py:182  msgid "Optional man-days"  msgstr "Jours-hommes optionnels" -#: forms.py:727 models.py:173 +#: forms.py:808 models.py:185  msgid "Effective man-days"  msgstr "Jours-hommes effectifs" -#: forms.py:737 +#: forms.py:818  msgid "Preventive informations - diagnostic"  msgstr "Information archéologie préventive - diagnostic" -#: forms.py:740 models.py:189 +#: forms.py:821 models.py:204  msgid "Prescription on zoning"  msgstr "Prescription sur zonage" -#: forms.py:742 models.py:192 +#: forms.py:823 models.py:207  msgid "Prescription on large area"  msgstr "Prescription sur une vaste surface" -#: forms.py:745 models.py:194 +#: forms.py:826 models.py:209  msgid "Prescription on geoarchaeological context"  msgstr "Prescription sur un contexte géoarchéologique" -#: forms.py:749 forms.py:771 models.py:161 models.py:590 +#: forms.py:830 forms.py:852 models.py:173 models.py:604  msgid "Towns"  msgstr "Communes" -#: forms.py:778 models.py:773 models.py:932 +#: forms.py:859 models.py:787 models.py:946  msgid "Parcel"  msgstr "Parcelle" -#: forms.py:805 forms.py:825 models.py:45 +#: forms.py:886 models.py:45  msgid "Remain types"  msgstr "Types de vestige" -#: forms.py:808 models.py:44 +#: forms.py:890 models.py:44  msgid "Remain type"  msgstr "Type de vestige" -#: forms.py:821 -msgid "There are identical remain types" -msgstr "Il y a des types de vestige identiques." - -#: forms.py:832 +#: forms.py:905  msgid "Period"  msgstr "Période" -#: forms.py:845 -msgid "There are identical periods" -msgstr "Il y a des périodes identiques." - -#: forms.py:853 models.py:66 +#: forms.py:916 models.py:78  msgid "Reference"  msgstr "Référence" -#: forms.py:854 models.py:67 +#: forms.py:917 models.py:79  msgid "Name"  msgstr "Nom" -#: forms.py:878 +#: forms.py:941  msgid "This reference already exists."  msgstr "Cette référence existe déjà." -#: forms.py:895 +#: forms.py:958  msgid "Associated archaelogical sites"  msgstr "Entités archéologiques associées" -#: forms.py:901 ishtar_menu.py:34 ishtar_menu.py:61 ishtar_menu.py:123 +#: forms.py:964 ishtar_menu.py:36 ishtar_menu.py:63 ishtar_menu.py:125  msgid "Search"  msgstr "Recherche" -#: forms.py:906 +#: forms.py:969  msgid "Would you like to close this operation?"  msgstr "Voulez-vous clore cette opération ?" -#: forms.py:911 +#: forms.py:974  msgid "Would you like to delete this operation?"  msgstr "Voulez-vous supprimer cette opération ?" -#: forms.py:920 forms.py:983 models.py:507 models.py:556 +#: forms.py:983 forms.py:1046 models.py:521 models.py:570  msgid "Index"  msgstr "Index" -#: forms.py:946 +#: forms.py:1009  #, python-format  msgid ""  "Index already exists for operation: %(operation)s - use a value bigger than " @@ -390,27 +410,27 @@ msgstr ""  "Cet index existe déjà pour l'opération : %(operation)s, utilisez une valeur "  "plus grande que %(last_val)d" -#: forms.py:958 +#: forms.py:1021  msgid "Operation's town"  msgstr "Commune de l'opération" -#: forms.py:961 +#: forms.py:1024  msgid "Operation's year"  msgstr "Année de l'opération" -#: forms.py:972 +#: forms.py:1035  msgid "Documentation search"  msgstr "Recherche de document" -#: forms.py:974 +#: forms.py:1037  msgid "You should select a document."  msgstr "Vous devez sélectionner un document." -#: forms.py:987 forms.py:1036 models.py:530 models.py:550 +#: forms.py:1050 forms.py:1101 models.py:544 models.py:564  msgid "Act type"  msgstr "Type d'acte" -#: forms.py:991 models.py:481 +#: forms.py:1054 models.py:495  #: templates/ishtar/dashboards/dashboard_operation.html:273  #: templates/ishtar/dashboards/dashboard_operation.html:286  #: templates/ishtar/dashboards/dashboard_operation.html:453 @@ -418,112 +438,111 @@ msgstr "Type d'acte"  msgid "Department"  msgstr "Département" -#: forms.py:1013 views.py:331 +#: forms.py:1055 +msgid "Object (full text search)" +msgstr "Objet (recherche texte intégral)" + +#: forms.py:1078 views.py:337  msgid "Administrative act search"  msgstr "Recherche d'actes administratifs" -#: forms.py:1028 forms.py:1082 forms.py:1149 +#: forms.py:1093 forms.py:1147 forms.py:1214  msgid "You should select an administrative act."  msgstr "Vous devez sélectionner un acte administratif." -#: forms.py:1041 models.py:581 +#: forms.py:1106 models.py:595 +#: templates/ishtar/blocks/window_tables/administrativacts.html:8  msgid "Object"  msgstr "Objet" -#: forms.py:1044 models.py:578 +#: forms.py:1109 models.py:592  msgid "Signature date"  msgstr "Date de signature" -#: forms.py:1059 +#: forms.py:1124  msgid "Would you like to delete this administrative act?"  msgstr "Voulez-vous supprimer cet acte administratif ?" -#: forms.py:1064 +#: forms.py:1129  msgid "Template"  msgstr "Patron" -#: forms.py:1088 forms.py:1092 +#: forms.py:1153 forms.py:1157  msgid "This document is not intended for this type of act."  msgstr "Ce document n'est pas destiné à ce type d'acte." -#: forms.py:1110 +#: forms.py:1175  msgid "Doc generation"  msgstr "Génération de document" -#: forms.py:1112 +#: forms.py:1177  msgid "Generate the associated doc?"  msgstr "Générer le document associé ?" -#: forms.py:1124 +#: forms.py:1189  msgid "Indexed?"  msgstr "Indexé ?" -#: forms.py:1133 ishtar_menu.py:108 views.py:365 +#: forms.py:1198 ishtar_menu.py:110 views.py:371  msgctxt "admin act register"  msgid "Register"  msgstr "Registre" -#: ishtar_menu.py:31 models.py:224 models.py:480 models.py:505 models.py:519 -#: models.py:571 models.py:761 wizards.py:336 wizards.py:347 -#: templates/ishtar/sheet_operation.html:6 -msgid "Operation" -msgstr "Opération" - -#: ishtar_menu.py:39 +#: ishtar_menu.py:41  msgid "Creation"  msgstr "Ajout" -#: ishtar_menu.py:44 ishtar_menu.py:71 ishtar_menu.py:135 +#: ishtar_menu.py:46 ishtar_menu.py:73 ishtar_menu.py:136  msgid "Modification"  msgstr "Modification" -#: ishtar_menu.py:49 +#: ishtar_menu.py:51  msgid "Closing"  msgstr "Clôture" -#: ishtar_menu.py:53 ishtar_menu.py:76 ishtar_menu.py:141 +#: ishtar_menu.py:55 ishtar_menu.py:78 ishtar_menu.py:141  msgid "Deletion"  msgstr "Suppression" -#: ishtar_menu.py:58 +#: ishtar_menu.py:60  msgid "Documentation"  msgstr "Documentation" -#: ishtar_menu.py:66 ishtar_menu.py:129 widgets.py:52 +#: ishtar_menu.py:68 ishtar_menu.py:131 widgets.py:52  msgid "Add"  msgstr "Ajout" -#: ishtar_menu.py:85 +#: ishtar_menu.py:87  msgid "Dashboard"  msgstr "Tableau de bord" -#: ishtar_menu.py:88 +#: ishtar_menu.py:90  msgid "General informations"  msgstr "Informations générales" -#: ishtar_menu.py:92 models.py:225 +#: ishtar_menu.py:94 models.py:240  #: templates/ishtar/dashboards/dashboard_operation.html:9  msgid "Operations"  msgstr "Opérations" -#: ishtar_menu.py:104 +#: ishtar_menu.py:106  msgid "Administrative Act"  msgstr "Acte administratif" -#: ishtar_menu.py:119 models.py:597 +#: ishtar_menu.py:121 models.py:611  #: templates/ishtar/sheet_administrativeact.html:6  msgid "Administrative act"  msgstr "Acte administratif" -#: ishtar_menu.py:147 +#: ishtar_menu.py:146  msgid "Documents"  msgstr "Documents" -#: models.py:50 models.py:1396 +#: models.py:50 models.py:66 models.py:1410  msgid "Order"  msgstr "Ordre" -#: models.py:52 models.py:935 +#: models.py:52 models.py:949  msgid "End date"  msgstr "Date de fin" @@ -539,347 +558,355 @@ msgstr "Type de période"  msgid "Types Period"  msgstr "Types de période" -#: models.py:75 +#: models.py:69 +msgid "Report state" +msgstr "État de rapport" + +#: models.py:70 +msgid "Report states" +msgstr "États de rapports" + +#: models.py:87  msgid "Archaeological site"  msgstr "Entité archéologique" -#: models.py:76 models.py:211 +#: models.py:88 models.py:226  msgid "Archaeological sites"  msgstr "Entités archéologiques" -#: models.py:79 +#: models.py:91  msgid "Can view all Archaeological site"  msgstr "Peut voir toutes les Entités archéologiques" -#: models.py:81 +#: models.py:93  msgid "Can view own Archaeological site"  msgstr "Peut voir ses propres Entités archéologiques" -#: models.py:83 +#: models.py:95  msgid "Can add own Archaeological site"  msgstr "Peut ajouter ses propres Entités archéologique" -#: models.py:85 +#: models.py:97  msgid "Can change own Archaeological site"  msgstr "Peut changer ses propres Entités archéologiques" -#: models.py:87 +#: models.py:99  msgid "Can delete own Archaeological site"  msgstr "Peut supprimer ses propres Entités archéologiques" -#: models.py:117 +#: models.py:129  msgid "Not documented"  msgstr "Non documenté" -#: models.py:118 +#: models.py:130  msgid "Arbitrary"  msgstr "Arbitraire" -#: models.py:119 +#: models.py:131  msgid "Reliable"  msgstr "Fiable" -#: models.py:131 +#: models.py:143  msgid "Closing date"  msgstr "Date de clôture" -#: models.py:138 +#: models.py:150  msgid "In charge scientist"  msgstr "Responsable scientifique" -#: models.py:154 models.py:757 +#: models.py:166 models.py:771  msgid "File"  msgstr "Dossier" -#: models.py:158 +#: models.py:170  msgid "Surface (m2)"  msgstr "Surface (m2)" -#: models.py:208 +#: models.py:223  msgid "Cached name"  msgstr "Nom en cache" -#: models.py:216 +#: models.py:231  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:227 +#: models.py:242  msgid "Can view all Operation"  msgstr "Peut voir toutes les Opérations" -#: models.py:228 +#: models.py:243  msgid "Can view own Operation"  msgstr "Peut voir sa propre Opération" -#: models.py:229 +#: models.py:244  msgid "Can add own Operation"  msgstr "Peut ajouter sa propre Opération" -#: models.py:230 +#: models.py:245  msgid "Can change own Operation"  msgstr "Peut changer sa propre Opération" -#: models.py:231 +#: models.py:246  msgid "Can delete own Operation"  msgstr "Peut supprimer sa propre Opération" -#: models.py:232 +#: models.py:247  msgid "Can close Operation"  msgstr "Peut fermer une Opération" -#: models.py:255 +#: models.py:270  msgid "OPE"  msgstr "OPE" -#: models.py:315 +#: models.py:330  msgid "Intercommunal"  msgstr "Intercommunal" -#: models.py:341 models.py:518 +#: models.py:356 models.py:532  msgid "Archaeological file"  msgstr "Dossier archéologique" -#: models.py:342 +#: models.py:357  msgid "Code patriarche"  msgstr "Code patriarche" -#: models.py:384 +#: models.py:399  msgid "This operation code already exists for this year"  msgstr "Ce code d'opération existe déjà pour cette année." -#: models.py:453 +#: models.py:465  msgid "Inverse relation"  msgstr "Relation inverse" -#: models.py:457 +#: models.py:469  msgid "Operation relation type"  msgstr "Type de relation entre opérations" -#: models.py:458 +#: models.py:470  msgid "Operation relation types"  msgstr "Types de relation entre opérations" -#: models.py:470 +#: models.py:483  msgid "Operation record relation"  msgstr "Relation entre opérations" -#: models.py:471 +#: models.py:484  msgid "Operation record relations"  msgstr "Relations entre opérations" -#: models.py:491 +#: models.py:505  msgid "Operation documentation"  msgstr "Documentation d'une opération" -#: models.py:492 +#: models.py:506  msgid "Operation documentations"  msgstr "Documentations des opérations" -#: models.py:495 +#: models.py:509  msgid "Can view all Operation source"  msgstr "Peut voir toutes les Sources des opérations" -#: models.py:497 +#: models.py:511  msgid "Can view own Operation source"  msgstr "Peut voir sa propre Source d'opération" -#: models.py:499 +#: models.py:513  msgid "Can add own Operation source"  msgstr "Peut ajouter sa propre Source d'opération" -#: models.py:501 +#: models.py:515  msgid "Can change own Operation source"  msgstr "Peut changer sa propre Source d'opération" -#: models.py:503 +#: models.py:517  msgid "Can delete own Operation source"  msgstr "Peut supprimer sa propre Source d'opération" -#: models.py:521 +#: models.py:535  msgid "Intended to"  msgstr "Destiné à" -#: models.py:523 +#: models.py:537  msgid "Code"  msgstr "Code" -#: models.py:526 +#: models.py:540  msgid "Associated template"  msgstr "Patron associé" -#: models.py:527 +#: models.py:541  msgid "Indexed"  msgstr "Indexé" -#: models.py:531 +#: models.py:545  msgid "Act types"  msgstr "Types d'acte" -#: models.py:554 +#: models.py:568  msgid "Person in charge of the operation"  msgstr "Responsable d'opération" -#: models.py:560 +#: models.py:574  msgid "Archaeological preventive operator"  msgstr "Opérateur d'archéologie préventive" -#: models.py:568 +#: models.py:582  msgid "Signatory"  msgstr "Signataire" -#: models.py:587 +#: models.py:601  msgid "Departments"  msgstr "Départements" -#: models.py:588 +#: models.py:602  msgid "Cached values get from associated departments"  msgstr "Valeur en cache des départements associés" -#: models.py:591 +#: models.py:605  msgid "Cached values get from associated towns"  msgstr "Valeur en cache des communes associées" -#: models.py:598 +#: models.py:612  msgid "Administrative acts"  msgstr "Actes administratifs" -#: models.py:601 +#: models.py:615  msgid "Can view all Administrative act"  msgstr "Peut voir tous les Actes administratifs" -#: models.py:603 +#: models.py:617  msgid "Can view own Administrative act"  msgstr "Peut voir son propre Acte administratif" -#: models.py:605 +#: models.py:619  msgid "Can add own Administrative act"  msgstr "Peut ajouter son propre Acte administratif" -#: models.py:607 +#: models.py:621  msgid "Can change own Administrative act"  msgstr "Peut changer son propre Acte administratif" -#: models.py:609 +#: models.py:623  msgid "Can delete own Administrative act"  msgstr "Peut supprimer son propre Acte administratif" -#: models.py:618 +#: models.py:632  #: templates/ishtar/blocks/window_tables/administrativacts.html:5  msgid "Ref."  msgstr "Réf." -#: models.py:701 +#: models.py:715  msgid "This index already exists for this year"  msgstr "Cet index existe déjà pour cette année." -#: models.py:768 +#: models.py:782  msgid "External ID"  msgstr "ID externe" -#: models.py:770 +#: models.py:784  msgid "Address - Locality"  msgstr "Adresse - Lieu-dit" -#: models.py:930 +#: models.py:944  msgid "Owner"  msgstr "Propriétaire" -#: models.py:938 +#: models.py:952  msgid "Parcel owner"  msgstr "Propriétaire de parcelle" -#: models.py:939 +#: models.py:953  msgid "Parcel owners"  msgstr "Propriétaires de parcelle" -#: models.py:965 +#: models.py:979  msgid "Recorded"  msgstr "Enregistré" -#: models.py:966 +#: models.py:980  msgid "Effective"  msgstr "Effectif" -#: models.py:967 +#: models.py:981  msgid "Active"  msgstr "Actif" -#: models.py:968 +#: models.py:982  msgid "Field completed"  msgstr "Terrain achevé" -#: models.py:969 +#: models.py:983  msgid "Associated report"  msgstr "Rapport associé" -#: models.py:970 +#: models.py:984  msgid "Closed"  msgstr "Fermé" -#: models.py:971 +#: models.py:985  msgid "Documented and closed"  msgstr "Documenté et clos" -#: models.py:1397 +#: models.py:1411  msgid "Is preventive"  msgstr "Préventif" -#: models.py:1400 +#: models.py:1414  msgid "Operation type old"  msgstr "Type d'opération - ancien" -#: models.py:1401 +#: models.py:1415  msgid "Operation types old"  msgstr "Types d'opération - ancien" -#: views.py:221 +#: views.py:224  msgid "New operation"  msgstr "Nouvelle opération" -#: views.py:252 +#: views.py:258  msgid "Operation modification"  msgstr "Modification d'une opération" -#: views.py:292 +#: views.py:298  msgid "Operation closing"  msgstr "Clôture de l'opération" -#: views.py:298 +#: views.py:304  msgid "Operation deletion"  msgstr "Suppression d'une opération" -#: views.py:303 +#: views.py:309  msgid "Operation: source search"  msgstr "Opération : recherche de documentation associée" -#: views.py:311 +#: views.py:317  msgid "Operation: source creation"  msgstr "Opération : nouvelle documentation associée" -#: views.py:319 +#: views.py:325  msgid "Operation: source modification"  msgstr "Opération : modification d'une documentation associée" -#: views.py:325 +#: views.py:331  msgid "Operation: source deletion"  msgstr "Opération : suppression d'une documentation associée" -#: views.py:340 +#: views.py:346  msgid "Operation: new administrative act"  msgstr "Opération : nouvel acte administratif" -#: views.py:350 +#: views.py:356  msgid "Operation: administrative act modification"  msgstr "Opération : modification d'un acte administratif" -#: views.py:359 +#: views.py:365  msgid "Operation: administrative act deletion"  msgstr "Opération : suppression d'un acte administratif" -#: wizards.py:200 +#: wizards.py:203  msgid ""  "Warning: No Archaelogical File is provided. If you have forget it return to "  "the first step." @@ -917,7 +944,7 @@ msgid "Internal reference:"  msgstr "Référence interne :"  #: templates/ishtar/sheet_administrativeact.html:15 -#: templates/ishtar/sheet_operation.html:53 +#: templates/ishtar/sheet_operation.html:55  msgid "Type:"  msgstr "Type :" @@ -939,7 +966,7 @@ msgid "Archaeological preventive operator:"  msgstr "Opérateur d'archéologie préventive :"  #: templates/ishtar/sheet_administrativeact.html:21 -#: templates/ishtar/sheet_operation.html:70 +#: templates/ishtar/sheet_operation.html:73  msgid "Associated file:"  msgstr "Dossier associé :" @@ -948,7 +975,7 @@ msgid "Associated operation:"  msgstr "Opération associée :"  #: templates/ishtar/sheet_administrativeact.html:24 -#: templates/ishtar/sheet_operation.html:54 +#: templates/ishtar/sheet_operation.html:56  msgid "Surface:"  msgstr "Surface :" @@ -1029,87 +1056,91 @@ msgstr "Date de clôture :"  msgid "by"  msgstr "par" -#: templates/ishtar/sheet_operation.html:55 +#: templates/ishtar/sheet_operation.html:57  msgid "Cost:"  msgstr "Coût :" -#: templates/ishtar/sheet_operation.html:56 +#: templates/ishtar/sheet_operation.html:58  msgid "Duration:"  msgstr "Durée :" -#: templates/ishtar/sheet_operation.html:56 +#: templates/ishtar/sheet_operation.html:58  msgid "Day"  msgstr "Jour" -#: templates/ishtar/sheet_operation.html:58 +#: templates/ishtar/sheet_operation.html:61  msgid "Remains:"  msgstr "Vestiges :" -#: templates/ishtar/sheet_operation.html:59 +#: templates/ishtar/sheet_operation.html:62  msgid "Periods:"  msgstr "Périodes :" -#: templates/ishtar/sheet_operation.html:73 +#: templates/ishtar/sheet_operation.html:76  msgid "Town planning service:"  msgstr "Service instructeur :" -#: templates/ishtar/sheet_operation.html:74 +#: templates/ishtar/sheet_operation.html:77  msgid "Permit type:"  msgstr "Type de permis :" -#: templates/ishtar/sheet_operation.html:75 +#: templates/ishtar/sheet_operation.html:78  msgid "Permit reference:"  msgstr "Référence du permis :" -#: templates/ishtar/sheet_operation.html:76 +#: templates/ishtar/sheet_operation.html:79  msgid "General contractor organisation:"  msgstr "Organisation de l'aménageur :" -#: templates/ishtar/sheet_operation.html:77 +#: templates/ishtar/sheet_operation.html:80  msgid "General contractor:"  msgstr "Aménageur :" -#: templates/ishtar/sheet_operation.html:81 +#: templates/ishtar/sheet_operation.html:84  msgid "Comment:"  msgstr "Commentaire :" -#: templates/ishtar/sheet_operation.html:83 +#: templates/ishtar/sheet_operation.html:86  msgid "Localisation"  msgstr "Localisation" -#: templates/ishtar/sheet_operation.html:84 +#: templates/ishtar/sheet_operation.html:87  msgid "Towns:"  msgstr "Communes :" -#: templates/ishtar/sheet_operation.html:86 +#: templates/ishtar/sheet_operation.html:89  msgid "Main address:"  msgstr "Adresse des terrains :" -#: templates/ishtar/sheet_operation.html:87 +#: templates/ishtar/sheet_operation.html:90  msgid "Complement:"  msgstr "Complément :" -#: templates/ishtar/sheet_operation.html:88 +#: templates/ishtar/sheet_operation.html:91  msgid "Postal code:"  msgstr "Code postal :" -#: templates/ishtar/sheet_operation.html:96 +#: templates/ishtar/sheet_operation.html:105 +msgid "Details" +msgstr "Détails" + +#: templates/ishtar/sheet_operation.html:110  msgid "Associated parcels"  msgstr "Parcelles associées" -#: templates/ishtar/sheet_operation.html:100 +#: templates/ishtar/sheet_operation.html:114  msgid "Administrativ acts"  msgstr "Actes administratifs" -#: templates/ishtar/sheet_operation.html:104 +#: templates/ishtar/sheet_operation.html:118  msgid "Document from this operation"  msgstr "Documents de cette opération" -#: templates/ishtar/sheet_operation.html:109 +#: templates/ishtar/sheet_operation.html:123  msgid "Context records"  msgstr "Unités d'Enregistrement" -#: templates/ishtar/sheet_operation.html:121 +#: templates/ishtar/sheet_operation.html:135  msgid "Finds"  msgstr "Mobilier" @@ -1122,7 +1153,7 @@ msgstr "Type"  msgid "Date"  msgstr "Date" -#: templates/ishtar/blocks/window_tables/administrativacts.html:16 +#: templates/ishtar/blocks/window_tables/administrativacts.html:18  msgid "No administrative act associated"  msgstr "Aucun acte administratif associé" diff --git a/translations/fr/archaeological_warehouse.po b/translations/fr/archaeological_warehouse.po index a29c155a4..58522e76a 100644 --- a/translations/fr/archaeological_warehouse.po +++ b/translations/fr/archaeological_warehouse.po @@ -2,18 +2,16 @@  # Copyright (C) 2010-2011  # This file is distributed under the same license as the Ishtar package.  # Étienne Loks <etienne.loks at peacefrogs net>, 2010-2011. -# Étienne Loks <etienne.loks@proxience.com>, 2015. #zanata +# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata  msgid ""  msgstr "" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-09 00:28+0100\n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n"  "PO-Revision-Date: \n"  "Last-Translator: Étienne Loks <etienne.loks at peacefrogs net>\n"  "Language-Team: \n"  "Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n"  "Plural-Forms: nplurals=2; plural=n>1;\n"  "X-Generator: Zanata 3.7.3\n" @@ -85,7 +83,7 @@ msgstr "Vous devez sélectionner un contenant."  msgid "Add a new container"  msgstr "Ajouter un nouveau contenant." -#: forms.py:132 ishtar_menu.py:31 views.py:94 +#: forms.py:132 ishtar_menu.py:32 views.py:94  msgid "Packaging"  msgstr "Conditionnement" @@ -101,7 +99,7 @@ msgstr "Date"  msgid "Packaged finds"  msgstr "Mobilier conditionné" -#: ishtar_menu.py:29 +#: ishtar_menu.py:30  msgid "Find"  msgstr "Mobilier" diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po index 7562a53be..0330ff950 100644 --- a/translations/fr/ishtar_common.po +++ b/translations/fr/ishtar_common.po @@ -2,18 +2,16 @@  # 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@proxience.com>, 2015. #zanata +# Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata  msgid ""  msgstr "" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-09 00:28+0100\n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Content-Type: text/plain; charset=UTF-8\n"  "PO-Revision-Date: 2015-12-08 06:26-0500\n" -"Last-Translator: Étienne Loks <etienne.loks@proxience.com>\n" +"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"  "Language-Team: \n"  "Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n"  "Plural-Forms: nplurals=2; plural=n>1;\n"  "X-Generator: Zanata 3.7.3\n" @@ -29,7 +27,7 @@ msgstr "courriel"  msgid "Archaeological file"  msgstr "Dossier" -#: context_processors.py:34 models.py:1110 +#: context_processors.py:34 models.py:1133  msgid "Operation"  msgstr "Opération" @@ -157,7 +155,7 @@ msgstr "\"%(value)s\" n'est pas dans %(values)s"  msgid "Enter a valid name consisting of letters, spaces and hyphens."  msgstr "Entrez un nom correct composé de lettres, espaces et tirets." -#: forms.py:71 forms_common.py:419 +#: forms.py:71 forms_common.py:420  msgid "Confirm"  msgstr "Confirmation" @@ -181,15 +179,14 @@ msgstr "Vous devez sélectionner un élément."  msgid "Add a new item"  msgstr "Ajouter un nouvel élément" -#: forms.py:171 models.py:970 +#: forms.py:171 models.py:993  msgid "Template"  msgstr "Patron"  #: forms_common.py:39 forms_common.py:57 forms_common.py:169 -#: forms_common.py:268 forms_common.py:273 models.py:1036 models.py:2168 +#: forms_common.py:269 forms_common.py:274 models.py:1059 models.py:2202  #: templates/blocks/JQueryAdvancedTown.html:19  #: templates/ishtar/sheet_organization.html:17 -#: templates/ishtar/sheet_person.html:30  msgid "Town"  msgstr "Commune" @@ -211,70 +208,64 @@ msgstr ""  "<p class='example'>Par exemple tapez « saint denis 93 » pour obtenir la "  "commune Saint-Denis dans le département français de Seine-Saint-Denis.</p>" -#: forms_common.py:66 forms_common.py:621 ishtar_menu.py:40 models.py:1895 -#: models.py:2007 models.py:2061 templates/ishtar/sheet_person.html:6 +#: forms_common.py:66 forms_common.py:622 ishtar_menu.py:42 models.py:1918 +#: models.py:2041 models.py:2095 templates/ishtar/sheet_person.html:6  msgid "Person"  msgstr "Individu" -#: forms_common.py:157 forms_common.py:231 ishtar_menu.py:58 models.py:1824 +#: forms_common.py:157 forms_common.py:231 ishtar_menu.py:66 models.py:1847  #: templates/ishtar/sheet_organization.html:6  msgid "Organization"  msgstr "Organisation"  #: forms_common.py:160 forms_common.py:196 forms_common.py:226 -#: forms_common.py:259 models.py:969 models.py:1158 models.py:1375 -#: models.py:1818 models.py:1885 models.py:2154 +#: forms_common.py:259 models.py:992 models.py:1181 models.py:1398 +#: models.py:1841 models.py:1908 models.py:2188  #: templates/ishtar/sheet_organization.html:12  #: templates/ishtar/sheet_organization.html:25 -#: templates/ishtar/sheet_person.html:26  msgid "Name"  msgstr "Nom" -#: forms_common.py:161 models.py:1105 models.py:1506 +#: forms_common.py:161 models.py:1128 models.py:1529  msgid "Organization type"  msgstr "Type d'organisation" -#: forms_common.py:163 forms_common.py:262 models.py:1031 +#: forms_common.py:163 forms_common.py:263 models.py:1054  #: templates/ishtar/sheet_organization.html:14 -#: templates/ishtar/sheet_person.html:27  msgid "Address"  msgstr "Adresse" -#: forms_common.py:165 forms_common.py:264 models.py:1032 +#: forms_common.py:165 forms_common.py:265 models.py:1055  #: templates/ishtar/sheet_organization.html:15 -#: templates/ishtar/sheet_person.html:28  msgid "Address complement"  msgstr "Complément d'adresse" -#: forms_common.py:167 forms_common.py:266 models.py:1034 +#: forms_common.py:167 forms_common.py:267 models.py:1057  #: templates/ishtar/sheet_organization.html:16 -#: templates/ishtar/sheet_person.html:29  msgid "Postal code"  msgstr "Code postal" -#: forms_common.py:170 forms_common.py:269 models.py:1037 +#: forms_common.py:170 forms_common.py:270 models.py:1060  msgid "Country"  msgstr "Pays" -#: forms_common.py:172 forms_common.py:228 forms_common.py:271 -#: forms_common.py:375 models.py:1043 +#: forms_common.py:172 forms_common.py:228 forms_common.py:272 +#: forms_common.py:376 models.py:1066  msgid "Email"  msgstr "Courriel" -#: forms_common.py:173 forms_common.py:272 models.py:1039 +#: forms_common.py:173 forms_common.py:273 models.py:1062  #: templates/ishtar/sheet_organization.html:18 -#: templates/ishtar/sheet_person.html:31  msgid "Phone"  msgstr "Téléphone" -#: forms_common.py:174 models.py:1040 +#: forms_common.py:174 models.py:1063  #: templates/ishtar/sheet_organization.html:19 -#: templates/ishtar/sheet_person.html:32  msgid "Mobile phone"  msgstr "Téléphone portable" -#: forms_common.py:197 forms_common.py:229 models.py:1529 models.py:1820 -#: models.py:2102 templates/sheet_ope.html:85 templates/sheet_ope.html.py:105 +#: forms_common.py:197 forms_common.py:229 models.py:1552 models.py:1843 +#: models.py:2136 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:27  #: templates/ishtar/sheet_person.html:56 @@ -286,7 +277,7 @@ msgstr "Type"  msgid "Organization search"  msgstr "Recherche d'organisations" -#: forms_common.py:227 forms_common.py:257 models.py:1883 +#: forms_common.py:227 forms_common.py:257 models.py:1906  #: templates/ishtar/sheet_organization.html:26  msgid "Surname"  msgstr "Prénom" @@ -299,160 +290,160 @@ msgstr "Recherche d'individus"  msgid "Identity"  msgstr "Identité" -#: forms_common.py:256 forms_common.py:573 models.py:1881 models.py:2099 +#: forms_common.py:256 forms_common.py:574 models.py:1904 models.py:2133  #: templates/sheet_ope.html:104 templates/ishtar/sheet_person.html:55  #: templates/ishtar/blocks/window_tables/documents.html:5  msgid "Title"  msgstr "Titre" -#: forms_common.py:261 models.py:1887 +#: forms_common.py:261 models.py:1910  msgid "Raw name"  msgstr "Nom brut" -#: forms_common.py:276 +#: forms_common.py:277  msgid "Current organization"  msgstr "Organisation actuelle" -#: forms_common.py:324 forms_common.py:354 forms_common.py:358 models.py:1865 +#: forms_common.py:325 forms_common.py:355 forms_common.py:359 models.py:1888  msgid "Person type"  msgstr "Type d'individu" -#: forms_common.py:369 forms_common.py:374 +#: forms_common.py:370 forms_common.py:375  msgid "Account"  msgstr "Compte" -#: forms_common.py:378 wizards.py:1029 +#: forms_common.py:379 wizards.py:1141  msgid "New password"  msgstr "Nouveau mot de passe" -#: forms_common.py:381 +#: forms_common.py:382  msgid "New password (confirmation)"  msgstr "Nouveau mot de passe (confirmation)" -#: forms_common.py:400 +#: forms_common.py:401  msgid "Your password and confirmation password do not match."  msgstr "La vérification du mot de passe a échoué." -#: forms_common.py:405 +#: forms_common.py:406  msgid "You must provide a correct password."  msgstr "Vous devez fournir un mot de passe correct." -#: forms_common.py:413 +#: forms_common.py:414  msgid "This username already exists."  msgstr "Ce nom d'utilisateur existe déjà." -#: forms_common.py:420 +#: forms_common.py:421  msgid "Send the new password by email?"  msgstr "Envoyer le nouveau mot de passe par courriel ?" -#: forms_common.py:429 forms_common.py:442 models.py:2169 +#: forms_common.py:430 forms_common.py:443 models.py:2203  msgid "Towns"  msgstr "Communes" -#: forms_common.py:439 +#: forms_common.py:440  msgid "There are identical towns."  msgstr "Il y a des communes identiques." -#: forms_common.py:523 +#: forms_common.py:524  msgid "Only one choice can be checked."  msgstr "Seul un choix peut être coché." -#: forms_common.py:571 +#: forms_common.py:572  msgid "Documentation informations"  msgstr "Information sur le document" -#: forms_common.py:575 forms_common.py:596 models.py:1507 models.py:2082 +#: forms_common.py:576 forms_common.py:597 models.py:1530 models.py:2116  msgid "Source type"  msgstr "Type de source" -#: forms_common.py:577 models.py:2113 +#: forms_common.py:578 models.py:2147  msgid "Numerical ressource (web address)"  msgstr "Ressource numérique (adresse web)" -#: forms_common.py:578 models.py:2115 +#: forms_common.py:579 models.py:2149  msgid "Receipt date"  msgstr "Date de réception" -#: forms_common.py:580 models.py:1656 models.py:2117 +#: forms_common.py:581 models.py:1679 models.py:2151  msgid "Creation date"  msgstr "Date de création" -#: forms_common.py:593 forms_common.py:614 forms_common.py:647 models.py:2066 +#: forms_common.py:594 forms_common.py:615 forms_common.py:648 models.py:2100  #: templates/ishtar/wizard/wizard_person_deletion.html:124  msgid "Author"  msgstr "Auteur" -#: forms_common.py:606 +#: forms_common.py:607  msgid "Would you like to delete this documentation?"  msgstr "Voulez-vous supprimer ce document ?" -#: forms_common.py:622 models.py:1508 models.py:2056 models.py:2063 +#: forms_common.py:623 models.py:1531 models.py:2090 models.py:2097  msgid "Author type"  msgstr "Type d'auteur" -#: forms_common.py:640 +#: forms_common.py:641  msgid "Author selection"  msgstr "Sélection d'auteur" -#: forms_common.py:654 +#: forms_common.py:655  msgid "There are identical authors."  msgstr "Il y a des auteurs identiques." -#: forms_common.py:658 models.py:2067 models.py:2109 +#: forms_common.py:659 models.py:2101 models.py:2143  #: templates/sheet_ope.html:106  #: templates/ishtar/blocks/window_tables/documents.html:7  msgid "Authors"  msgstr "Auteurs" -#: ishtar_menu.py:28 +#: ishtar_menu.py:29  msgid "Administration"  msgstr "Administration" -#: ishtar_menu.py:30 views.py:135 +#: ishtar_menu.py:31 views.py:135  msgid "Account management"  msgstr "Gestion des comptes" -#: ishtar_menu.py:33 models.py:753 views.py:1075 +#: ishtar_menu.py:34 models.py:776 views.py:1077  msgid "Global variables"  msgstr "Variables globales" -#: ishtar_menu.py:38 +#: ishtar_menu.py:39  msgid "Directory"  msgstr "Annuaire" -#: ishtar_menu.py:42 ishtar_menu.py:60 templates/blocks/JQueryJqGrid.html:4 +#: ishtar_menu.py:45 ishtar_menu.py:69 templates/blocks/JQueryJqGrid.html:4  msgid "Search"  msgstr "Recherche" -#: ishtar_menu.py:45 ishtar_menu.py:64 templates/ishtar/import_list.html:15 +#: ishtar_menu.py:49 ishtar_menu.py:74 templates/ishtar/import_list.html:15  msgid "Creation"  msgstr "Ajout" -#: ishtar_menu.py:48 ishtar_menu.py:68 +#: ishtar_menu.py:53 ishtar_menu.py:79  msgid "Modification"  msgstr "Modification" -#: ishtar_menu.py:51 ishtar_menu.py:72 templates/ishtar/merge.html:5 +#: ishtar_menu.py:57 ishtar_menu.py:84 templates/ishtar/merge.html:5  msgid "Merge"  msgstr "Fusion" -#: ishtar_menu.py:54 ishtar_menu.py:75 models.py:1693 widgets.py:110 +#: ishtar_menu.py:61 ishtar_menu.py:88 models.py:1716 widgets.py:110  msgid "Delete"  msgstr "Suppression" -#: ishtar_menu.py:82 models.py:1667 +#: ishtar_menu.py:96 models.py:1690  msgid "Imports"  msgstr "Imports" -#: ishtar_menu.py:84 views.py:1083 +#: ishtar_menu.py:99 views.py:1085  msgid "New import"  msgstr "Nouvel import" -#: ishtar_menu.py:87 views.py:1097 +#: ishtar_menu.py:103 views.py:1099  msgid "Current imports"  msgstr "Imports en cours" -#: ishtar_menu.py:90 +#: ishtar_menu.py:107  msgid "Old imports"  msgstr "Anciens imports" @@ -468,7 +459,7 @@ msgstr "Un élément sélectionné n'est pas valide."  msgid "This item already exist."  msgstr "Cet élément existe déjà." -#: models.py:256 models.py:1004 models.py:1016 +#: models.py:256 models.py:1027 models.py:1039  msgid "Label"  msgstr "Libellé" @@ -476,613 +467,613 @@ msgstr "Libellé"  msgid "Textual ID"  msgstr "Identifiant textuel" -#: models.py:260 models.py:1402 models.py:2124 +#: models.py:260 models.py:1425 models.py:2158  msgid "Comment"  msgstr "Commentaire" -#: models.py:261 models.py:973 +#: models.py:261 models.py:996  msgid "Available"  msgstr "Disponible" -#: models.py:451 models.py:1448 +#: models.py:474 models.py:1471  msgid "Key"  msgstr "Clé" -#: models.py:457 +#: models.py:480  msgid "Key specific to an import"  msgstr "Clé spécifique à un import" -#: models.py:528 +#: models.py:551  msgid "Last editor"  msgstr "Dernier éditeur" -#: models.py:531 +#: models.py:554  msgid "Creator"  msgstr "Créateur" -#: models.py:664 models.py:2180 +#: models.py:687 models.py:2214  msgid "Order"  msgstr "Ordre" -#: models.py:665 +#: models.py:688  msgid "Symmetrical"  msgstr "Symétrique" -#: models.py:678 +#: models.py:701  msgid "Cannot have symmetrical and an inverse_relation"  msgstr "Ne pas être symétrique et avoir une relation inverse" -#: models.py:746 +#: models.py:769  msgid "Variable name"  msgstr "Nom de la variable" -#: models.py:747 +#: models.py:770  msgid "Description of the variable"  msgstr "Description de la variable" -#: models.py:749 models.py:1449 +#: models.py:772 models.py:1472  msgid "Value"  msgstr "Valeur" -#: models.py:752 +#: models.py:775  msgid "Global variable"  msgstr "Variables globales" -#: models.py:874 models.py:904 +#: models.py:897 models.py:927  msgid "Total"  msgstr "Total" -#: models.py:881 models.py:1005 models.py:1017 +#: models.py:904 models.py:1028 models.py:1040  #: templates/ishtar/dashboards/dashboard_main_detail.html:135  #: templates/ishtar/dashboards/dashboard_main_detail_users.html:26  msgid "Number"  msgstr "Nombre" -#: models.py:968 +#: models.py:991  msgid "Administrative Act"  msgstr "Acte administratif" -#: models.py:972 +#: models.py:995  msgid "Associated object"  msgstr "Objet associé" -#: models.py:976 +#: models.py:999  msgid "Document template"  msgstr "Patron de document" -#: models.py:977 +#: models.py:1000  msgid "Document templates"  msgstr "Patrons de documents" -#: models.py:1008 models.py:1018 models.py:1651 +#: models.py:1031 models.py:1041 models.py:1674  msgid "State"  msgstr "État" -#: models.py:1022 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:1045 templates/blocks/JQueryAdvancedTown.html:12  msgid "Department"  msgstr "Département" -#: models.py:1023 +#: models.py:1046  msgid "Departments"  msgstr "Départements" -#: models.py:1051 +#: models.py:1074  msgid "Merge key"  msgstr "Clé de fusion" -#: models.py:1106 +#: models.py:1129  msgid "Organization types"  msgstr "Types d'organisation" -#: models.py:1111 +#: models.py:1134  msgid "Parcels"  msgstr "Parcelles" -#: models.py:1113 +#: models.py:1136  msgid "Operation source"  msgstr "Documentation de l'opération" -#: models.py:1119 views.py:890 views.py:947 +#: models.py:1142 views.py:892 views.py:949  msgid "Archaeological files"  msgstr "Dossiers archéologiques" -#: models.py:1126 views.py:893 views.py:957 +#: models.py:1149 views.py:895 views.py:959  msgid "Context records"  msgstr "Unité d'Enregistrement" -#: models.py:1129 views.py:895 views.py:962 +#: models.py:1152 views.py:897 views.py:964  msgid "Finds"  msgstr "Mobilier" -#: models.py:1160 +#: models.py:1183  msgid "Slug"  msgstr "Identifiant texte" -#: models.py:1162 models.py:1334 models.py:1376 models.py:2123 +#: models.py:1185 models.py:1357 models.py:1399 models.py:2157  #: templates/sheet_ope.html:128  msgid "Description"  msgstr "Description" -#: models.py:1164 templates/ishtar/dashboards/dashboard_main.html:26 +#: models.py:1187 templates/ishtar/dashboards/dashboard_main.html:26  msgid "Users"  msgstr "Utilisateurs" -#: models.py:1166 +#: models.py:1189  msgid "Associated model"  msgstr "Modèle associé" -#: models.py:1168 +#: models.py:1191  msgid "Is template"  msgstr "Est un patron" -#: models.py:1169 +#: models.py:1192  msgid "Unicity keys (separator \";\")"  msgstr "Clés d'unicité (séparateur « ; »)" -#: models.py:1173 +#: models.py:1196  msgid "Importer - Type"  msgstr "Importeur - Type" -#: models.py:1174 +#: models.py:1197  msgid "Importer - Types"  msgstr "Importeur - Types" -#: models.py:1264 +#: models.py:1287  msgid "Importer - Default"  msgstr "Importeur - Par défaut" -#: models.py:1265 +#: models.py:1288  msgid "Importer - Defaults"  msgstr "Importeur - Par défaut" -#: models.py:1300 +#: models.py:1323  msgid "Importer - Default value"  msgstr "Importeur - Valeur par défaut" -#: models.py:1301 +#: models.py:1324  msgid "Importer - Default values"  msgstr "Importeur - Valeurs par défaut" -#: models.py:1333 +#: models.py:1356  msgid "Column number"  msgstr "Numéro de colonne" -#: models.py:1336 +#: models.py:1359  msgid "Required"  msgstr "Requis" -#: models.py:1339 +#: models.py:1362  msgid "Importer - Column"  msgstr "Importeur - Colonne" -#: models.py:1340 +#: models.py:1363  msgid "Importer - Columns"  msgstr "Importeur - Colonnes" -#: models.py:1360 +#: models.py:1383  msgid "Field name"  msgstr "Nom du champ" -#: models.py:1362 models.py:1396 +#: models.py:1385 models.py:1419  msgid "Force creation of new item"  msgstr "Forcer la création de nouveaux éléments" -#: models.py:1364 models.py:1398 +#: models.py:1387 models.py:1421  msgid "Concatenate with existing"  msgstr "Concaténer avec l'existant" -#: models.py:1366 models.py:1400 +#: models.py:1389 models.py:1423  msgid "Concatenate character"  msgstr "Caractère de concaténation" -#: models.py:1370 +#: models.py:1393  msgid "Importer - Duplicate field"  msgstr "Importeur - Champ dupliqué" -#: models.py:1371 +#: models.py:1394  msgid "Importer - Duplicate fields"  msgstr "Importeur - Champs dupliqués" -#: models.py:1378 +#: models.py:1401  msgid "Regular expression"  msgstr "Expression régulière" -#: models.py:1381 +#: models.py:1404  msgid "Importer - Regular expression"  msgstr "Importeur - Expression régulière" -#: models.py:1382 +#: models.py:1405  msgid "Importer - Regular expressions"  msgstr "Importeur - Expressions régulières" -#: models.py:1405 +#: models.py:1428  msgid "Importer - Target"  msgstr "Importeur - Cible" -#: models.py:1406 +#: models.py:1429  msgid "Importer - Targets"  msgstr "Importeur - Cibles" -#: models.py:1430 views.py:306 +#: models.py:1453 views.py:306  msgid "True"  msgstr "Oui" -#: models.py:1431 views.py:308 +#: models.py:1454 views.py:308  msgid "False"  msgstr "Non" -#: models.py:1450 +#: models.py:1473  msgid "Is set"  msgstr "Est défini" -#: models.py:1457 +#: models.py:1480  msgid "Importer - Target key"  msgstr "Importeur - Rapprochement" -#: models.py:1458 +#: models.py:1481  msgid "Importer - Targets keys"  msgstr "Importeur - Rapprochements" -#: models.py:1509 models.py:2094 models.py:2105 +#: models.py:1532 models.py:2128 models.py:2139  msgid "Format"  msgstr "Format" -#: models.py:1510 models.py:2184 +#: models.py:1533 models.py:2218  msgid "Operation type"  msgstr "Type d'opération" -#: models.py:1511 +#: models.py:1534  msgid "Period"  msgstr "Périodes" -#: models.py:1512 +#: models.py:1535  msgid "Unit"  msgstr "Unité" -#: models.py:1513 +#: models.py:1536  msgid "Material"  msgstr "Matériau" -#: models.py:1515 +#: models.py:1538  msgid "Conservatory state"  msgstr "État de conservation" -#: models.py:1516 +#: models.py:1539  msgid "Preservation type"  msgstr "Type de conservation" -#: models.py:1517 +#: models.py:1540  msgid "Object type"  msgstr "Type d'objet" -#: models.py:1519 +#: models.py:1542  msgid "Identification type"  msgstr "Type d'identification" -#: models.py:1525 +#: models.py:1548  msgid "Integer"  msgstr "Entier" -#: models.py:1526 +#: models.py:1549  msgid "Float"  msgstr "Nombre à virgule" -#: models.py:1527 +#: models.py:1550  msgid "String"  msgstr "Chaine de caractères" -#: models.py:1528 templates/sheet_ope.html:86 +#: models.py:1551 templates/sheet_ope.html:86  msgid "Date"  msgstr "Date" -#: models.py:1530 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 +#: models.py:1553 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83  #: templates/ishtar/sheet_person.html:54  #: templates/ishtar/dashboards/dashboard_main_detail.html:120  msgid "Year"  msgstr "Année" -#: models.py:1531 +#: models.py:1554  msgid "String to boolean"  msgstr "Chaîne de caractère vers booléen" -#: models.py:1532 +#: models.py:1555  msgctxt "filesystem"  msgid "File"  msgstr "Fichier" -#: models.py:1533 +#: models.py:1556  msgid "Unknow type"  msgstr "Type inconnu" -#: models.py:1549 +#: models.py:1572  msgid "4 digit year. e.g.: \"2015\""  msgstr "Année à 4 chiffres. Exemple : « 2015 »" -#: models.py:1550 +#: models.py:1573  msgid "4 digit year/month/day. e.g.: \"2015/02/04\""  msgstr "Année à 4 chiffres/mois/jour. Exemple : « 2015/02/04 »" -#: models.py:1551 +#: models.py:1574  msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""  msgstr "Jour/mois/année à 4 chiffres. Exemple : « 04/02/2015 »" -#: models.py:1561 +#: models.py:1584  msgid "Options"  msgstr "Options" -#: models.py:1563 +#: models.py:1586  msgid "Split character(s)"  msgstr "Caractère de séparation" -#: models.py:1567 +#: models.py:1590  msgid "Importer - Formater type"  msgstr "Importeur - Type de mise en forme" -#: models.py:1568 +#: models.py:1591  msgid "Importer - Formater types"  msgstr "Importeur - Types de mise en forme" -#: models.py:1615 templates/ishtar/dashboards/dashboard_main_detail.html:61 +#: models.py:1638 templates/ishtar/dashboards/dashboard_main_detail.html:61  msgid "Created"  msgstr "Créé" -#: models.py:1616 +#: models.py:1639  msgid "Analyse in progress"  msgstr "Analyse en cours" -#: models.py:1617 +#: models.py:1640  msgid "Analysed"  msgstr "Analysé" -#: models.py:1618 +#: models.py:1641  msgid "Import pending"  msgstr "Import en attente" -#: models.py:1619 +#: models.py:1642  msgid "Import in progress"  msgstr "Import en cours" -#: models.py:1620 +#: models.py:1643  msgid "Finished with errors"  msgstr "Finis avec des erreurs" -#: models.py:1621 +#: models.py:1644  msgid "Finished"  msgstr "Terminé" -#: models.py:1622 +#: models.py:1645  msgid "Archived"  msgstr "Archivé" -#: models.py:1634 +#: models.py:1657  msgid "Imported file"  msgstr "Fichier importé" -#: models.py:1637 +#: models.py:1660  msgid "Associated images (zip file)"  msgstr "Images associées (fichier zip)" -#: models.py:1639 +#: models.py:1662  msgid "Encoding"  msgstr "Codage" -#: models.py:1641 +#: models.py:1664  msgid "Skip lines"  msgstr "Nombre de lignes d'entête" -#: models.py:1642 templates/ishtar/import_list.html:47 +#: models.py:1665 templates/ishtar/import_list.html:47  msgid "Error file"  msgstr "Fichier erreur" -#: models.py:1645 +#: models.py:1668  msgid "Result file"  msgstr "Fichier résultant" -#: models.py:1648 templates/ishtar/import_list.html:53 +#: models.py:1671 templates/ishtar/import_list.html:53  msgid "Match file"  msgstr "Fichier de correspondance" -#: models.py:1654 +#: models.py:1677  msgid "Conservative import"  msgstr "Import conservateur" -#: models.py:1659 +#: models.py:1682  msgid "End date"  msgstr "Date de fin" -#: models.py:1661 +#: models.py:1684  msgid "Seconds remaining"  msgstr "Secondes restantes" -#: models.py:1666 +#: models.py:1689  msgid "Import"  msgstr "Import" -#: models.py:1683 +#: models.py:1706  msgid "Analyse"  msgstr "Analyser" -#: models.py:1685 models.py:1688 +#: models.py:1708 models.py:1711  msgid "Re-analyse"  msgstr "Analyser de nouveau " -#: models.py:1686 +#: models.py:1709  msgid "Launch import"  msgstr "Lancer l'import" -#: models.py:1689 +#: models.py:1712  msgid "Re-import"  msgstr "re-import" -#: models.py:1690 +#: models.py:1713  msgid "Archive"  msgstr "Archiver" -#: models.py:1692 +#: models.py:1715  msgid "Unarchive"  msgstr "Dé-archiver" -#: models.py:1825 +#: models.py:1848  msgid "Organizations"  msgstr "Organisations" -#: models.py:1827 +#: models.py:1850  msgid "Can view all Organization"  msgstr "Peut voir toutes les Organisations" -#: models.py:1828 +#: models.py:1851  msgid "Can view own Organization"  msgstr "Peut voir sa propre Organisation" -#: models.py:1829 +#: models.py:1852  msgid "Can add own Organization"  msgstr "Peut ajouter sa propre Organisation" -#: models.py:1831 +#: models.py:1854  msgid "Can change own Organization"  msgstr "Peut changer sa propre Organisation" -#: models.py:1833 +#: models.py:1856  msgid "Can delete own Organization"  msgstr "Peut supprimer sa propre Organisation" -#: models.py:1861 +#: models.py:1884  msgid "Groups"  msgstr "Groupes" -#: models.py:1866 +#: models.py:1889  msgid "Person types"  msgstr "Types d'individu" -#: models.py:1873 +#: models.py:1896  msgid "Mr"  msgstr "M." -#: models.py:1874 +#: models.py:1897  msgid "Miss"  msgstr "Mlle" -#: models.py:1875 +#: models.py:1898  msgid "Mr and Miss"  msgstr "M. et Mme" -#: models.py:1876 +#: models.py:1899  msgid "Mrs"  msgstr "Mme" -#: models.py:1877 +#: models.py:1900  msgid "Doctor"  msgstr "Dr." -#: models.py:1889 models.py:1929 +#: models.py:1912 models.py:1952  msgid "Types"  msgstr "Types" -#: models.py:1892 +#: models.py:1915  msgid "Is attached to"  msgstr "Est rattaché à" -#: models.py:1896 +#: models.py:1919  msgid "Persons"  msgstr "Individus" -#: models.py:1898 +#: models.py:1921  msgid "Can view all Person"  msgstr "Peut voir toutes les Personnes" -#: models.py:1899 +#: models.py:1922  msgid "Can view own Person"  msgstr "Peut voir sa propre Personne" -#: models.py:1900 +#: models.py:1923  msgid "Can add own Person"  msgstr "Peut ajouter sa propre Personne" -#: models.py:1901 +#: models.py:1924  msgid "Can change own Person"  msgstr "Peut changer sa propre Personne" -#: models.py:1902 +#: models.py:1925  msgid "Can delete own Person"  msgstr "Peut supprimer sa propre Personne" -#: models.py:2011 +#: models.py:2045  msgid "Ishtar user"  msgstr "Utilisateur d'Ishtar" -#: models.py:2012 +#: models.py:2046  msgid "Ishtar users"  msgstr "Utilisateurs d'Ishtar" -#: models.py:2057 +#: models.py:2091  msgid "Author types"  msgstr "Types d'auteur" -#: models.py:2083 +#: models.py:2117  msgid "Source types"  msgstr "Types de source" -#: models.py:2088 +#: models.py:2122  msgid "Support type"  msgstr "Type de support" -#: models.py:2089 +#: models.py:2123  msgid "Support types"  msgstr "Types de support" -#: models.py:2095 +#: models.py:2129  msgid "Formats"  msgstr "Formats" -#: models.py:2100 +#: models.py:2134  msgid "External ID"  msgstr "Identifiant extern" -#: models.py:2103 +#: models.py:2137  msgid "Support"  msgstr "Support" -#: models.py:2107 +#: models.py:2141  msgid "Scale"  msgstr "Échelle" -#: models.py:2118 +#: models.py:2152  msgid "Item number"  msgstr "Numéro d'élément" -#: models.py:2119 +#: models.py:2153  msgid "Ref."  msgstr "Réf." -#: models.py:2121 +#: models.py:2155  msgid "Internal reference"  msgstr "Référence interne" -#: models.py:2125 +#: models.py:2159  msgid "Additional information"  msgstr "Informations supplémentaires" -#: models.py:2155 +#: models.py:2189  msgid "Surface (m2)"  msgstr "Surface (m2)" -#: models.py:2156 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 +#: models.py:2190 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107  msgid "Localisation"  msgstr "Localisation" -#: models.py:2181 +#: models.py:2215  msgid "Is preventive"  msgstr "Est du préventif" -#: models.py:2185 +#: models.py:2219  msgid "Operation types"  msgstr "Types d'opération" -#: models.py:2211 +#: models.py:2245  msgid "Preventive"  msgstr "Préventif" -#: models.py:2212 +#: models.py:2246  msgid "Research"  msgstr "Recherche" @@ -1114,33 +1105,33 @@ msgstr "Modification d'une organisation"  msgid "Organization deletion"  msgstr "Suppression d'une organisation" -#: views.py:592 templates/base.html:80 +#: views.py:594 templates/base.html:80  #: templates/ishtar/sheet_organization.html:35  msgid "Details"  msgstr "Détails" -#: views.py:820 views.py:873 +#: views.py:822 views.py:875  msgid "Operation not permitted."  msgstr "Opération non permise." -#: views.py:822 +#: views.py:824  #, python-format  msgid "New %s"  msgstr "Nouveau %s" -#: views.py:891 views.py:951 +#: views.py:893 views.py:953  msgid "Operations"  msgstr "Opérations" -#: views.py:1144 templates/ishtar/import_list.html:43 +#: views.py:1146 templates/ishtar/import_list.html:43  msgid "Link unmatched items"  msgstr "Associer les éléments non rapprochés" -#: views.py:1159 +#: views.py:1161  msgid "Delete import"  msgstr "Suppression de l'import" -#: views.py:1218 views.py:1234 +#: views.py:1220 views.py:1236  msgid "Corporation manager"  msgstr "Représentant de la personne morale" @@ -1160,15 +1151,15 @@ msgstr "Chargement..."  msgid "Remove"  msgstr "Enlever" -#: wizards.py:242 templates/ishtar/import_delete.html:20 +#: wizards.py:313 templates/ishtar/import_delete.html:20  msgid "Yes"  msgstr "Oui" -#: wizards.py:244 +#: wizards.py:315  msgid "No"  msgstr "Non" -#: wizards.py:1085 +#: wizards.py:1198  #, python-format  msgid "[%(app_name)s] Account creation/modification"  msgstr "[%(app_name)s] Ajout - modification du compte" @@ -1680,7 +1671,7 @@ msgstr "Dossiers archéologiques associés"  msgid "Link"  msgstr "Lien" -#: templates/ishtar/sheet_person.html:68 +#: templates/ishtar/sheet_person.html:69  msgid "No document associated to this person"  msgstr "Pas de document associé à cette personne" @@ -1787,6 +1778,7 @@ msgstr "Voulez-vous sauver ces informations ?"  #: templates/ishtar/wizard/default_wizard.html:35  #: templates/ishtar/wizard/parcels_wizard.html:24 +#: templates/ishtar/wizard/relations_wizard.html:23  #: templates/ishtar/wizard/search.html:20  #: templates/ishtar/wizard/towns_wizard.html:19  msgid "Add/Modify" @@ -1808,6 +1800,7 @@ msgstr ""  "dossier."  #: templates/ishtar/wizard/parcels_wizard.html:20 +#: templates/ishtar/wizard/relations_wizard.html:20  msgid "all"  msgstr "tout" | 
