diff options
| -rw-r--r-- | archaeological_context_records/migrations/0040_auto_20190206_1522.py | 66 | ||||
| -rw-r--r-- | archaeological_context_records/models.py | 13 | ||||
| -rw-r--r-- | archaeological_files/migrations/0018_auto_20190206_1522.py | 41 | ||||
| -rw-r--r-- | archaeological_files/models.py | 27 | ||||
| -rw-r--r-- | archaeological_finds/migrations/0060_auto_20190206_1522.py | 101 | ||||
| -rw-r--r-- | archaeological_finds/models_finds.py | 7 | ||||
| -rw-r--r-- | archaeological_finds/models_treatments.py | 3 | ||||
| -rw-r--r-- | archaeological_operations/migrations/0048_auto_20190206_1522.py | 46 | ||||
| -rw-r--r-- | archaeological_operations/models.py | 12 | ||||
| -rw-r--r-- | archaeological_warehouse/models.py | 3 | ||||
| -rw-r--r-- | ishtar_common/migrations/0084_auto_20190206_1522.py | 76 | ||||
| -rw-r--r-- | ishtar_common/models.py | 20 | ||||
| -rw-r--r-- | ishtar_common/models_imports.py | 10 | 
13 files changed, 399 insertions, 26 deletions
| diff --git a/archaeological_context_records/migrations/0040_auto_20190206_1522.py b/archaeological_context_records/migrations/0040_auto_20190206_1522.py new file mode 100644 index 000000000..afa7ff96b --- /dev/null +++ b/archaeological_context_records/migrations/0040_auto_20190206_1522.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2019-02-06 15:22 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('archaeological_context_records', '0039_auto_20190206_1442'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='contextrecord', +            name='activity', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_context_records.ActivityType', verbose_name='Activit\xe9'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='archaeological_site', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='context_records', to='archaeological_operations.ArchaeologicalSite', verbose_name='Entit\xe9 (EA)'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='excavation_technic', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_context_records.ExcavationTechnicType', verbose_name='M\xe9thode de fouille'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='identification', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_context_records.IdentificationType', verbose_name='Identification'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='parcel', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='context_record', to='archaeological_operations.Parcel', verbose_name='Parcelle'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='town', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='context_record', to='ishtar_common.Town', verbose_name='Commune'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='unit', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='archaeological_context_records.Unit', verbose_name="Type d'Unit\xe9 d'Enregistrement"), +        ), +        migrations.AlterField( +            model_name='dating', +            name='dating_type', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_context_records.DatingType', verbose_name='Type de datation'), +        ), +        migrations.AlterField( +            model_name='dating', +            name='quality', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_context_records.DatingQuality', verbose_name='Qualit\xe9'), +        ), +        migrations.AlterField( +            model_name='unit', +            name='parent', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_context_records.Unit', verbose_name="Type d'UE parent"), +        ), +    ] diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 72b355ac9..56d43e295 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -66,8 +66,10 @@ class Dating(models.Model):      start_date = models.IntegerField(_(u"Start date"), blank=True, null=True)      end_date = models.IntegerField(_(u"End date"), blank=True, null=True)      dating_type = models.ForeignKey(DatingType, verbose_name=_(u"Dating type"), +                                    on_delete=models.SET_NULL,                                      blank=True, null=True)      quality = models.ForeignKey(DatingQuality, verbose_name=_(u"Quality"), +                                on_delete=models.SET_NULL,                                  blank=True, null=True)      precise_dating = models.TextField(_(u"Precise dating"), blank=True,                                        null=True) @@ -177,7 +179,7 @@ class Unit(GeneralType):      order = models.IntegerField(_(u"Order"))      parent = models.ForeignKey(          "Unit", verbose_name=_(u"Parent context record type"), -        blank=True, null=True) +        on_delete=models.SET_NULL, blank=True, null=True)      class Meta:          verbose_name = _(u"Context record Type") @@ -403,14 +405,15 @@ class ContextRecord(BulkUpdatedItem, BaseHistorizedItem,          _(u"External ID is set automatically"), default=False)      parcel = models.ForeignKey(          Parcel, verbose_name=_(u"Parcel"), related_name='context_record', -        blank=True, null=True) +        on_delete=models.SET_NULL, blank=True, null=True)      town = models.ForeignKey(          Town, verbose_name=_(u"Town"), related_name='context_record', -        blank=True, null=True) +        on_delete=models.SET_NULL, blank=True, null=True)      operation = models.ForeignKey(Operation, verbose_name=_(u"Operation"),                                    related_name='context_record')      archaeological_site = models.ForeignKey(          ArchaeologicalSite, verbose_name=_(u"Archaeological site"), +        on_delete=models.SET_NULL,          blank=True, null=True, related_name='context_records')      label = models.CharField(_(u"ID"), max_length=200)      description = models.TextField(_(u"Description"), blank=True, null=True) @@ -435,6 +438,7 @@ class ContextRecord(BulkUpdatedItem, BaseHistorizedItem,      datings_comment = models.TextField(_(u"Comment on datings"), blank=True,                                         null=True)      unit = models.ForeignKey(Unit, verbose_name=_(u"Context record type"), +                             on_delete=models.SET_NULL,                               related_name='+', blank=True, null=True)      filling = models.TextField(_(u"Filling"), blank=True, null=True)      interpretation = models.TextField(_(u"Interpretation"), blank=True, @@ -455,11 +459,14 @@ class ContextRecord(BulkUpdatedItem, BaseHistorizedItem,          help_text=_(u"Estimation of a \"Terminus Post Quem\""))      identification = models.ForeignKey(          IdentificationType, blank=True, null=True, +        on_delete=models.SET_NULL,          verbose_name=_(u"Identification"),)      activity = models.ForeignKey(ActivityType, blank=True, null=True, +                                 on_delete=models.SET_NULL,                                   verbose_name=_(u"Activity"),)      excavation_technic = models.ForeignKey(          ExcavationTechnicType, blank=True, null=True, +        on_delete=models.SET_NULL,          verbose_name=_(u"Excavation technique"))      related_context_records = models.ManyToManyField(          'ContextRecord', through='RecordRelations', blank=True) diff --git a/archaeological_files/migrations/0018_auto_20190206_1522.py b/archaeological_files/migrations/0018_auto_20190206_1522.py new file mode 100644 index 000000000..321920c61 --- /dev/null +++ b/archaeological_files/migrations/0018_auto_20190206_1522.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2019-02-06 15:22 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('archaeological_files', '0017_auto_20190111_1755'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='file', +            name='main_town', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='file_main', to='ishtar_common.Town', verbose_name='Commune principale'), +        ), +        migrations.AlterField( +            model_name='file', +            name='permit_type', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_files.PermitType', verbose_name='Type de permis'), +        ), +        migrations.AlterField( +            model_name='file', +            name='related_file', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_files.File', verbose_name='Dossier li\xe9 \xe0'), +        ), +        migrations.AlterField( +            model_name='file', +            name='requested_operation_type', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='ishtar_common.OperationType', verbose_name="Type d'op\xe9ration demand\xe9e"), +        ), +        migrations.AlterField( +            model_name='file', +            name='saisine_type', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_files.SaisineType', verbose_name='Type de saisine'), +        ), +    ] diff --git a/archaeological_files/models.py b/archaeological_files/models.py index a9c14cb3a..1d60b9c17 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -24,8 +24,7 @@ from django.contrib.gis.db import models  from django.core.cache import cache  from django.db.models import Q, Count, Sum  from django.db.models.signals import post_save, m2m_changed, post_delete -from django.utils.translation import ugettext_lazy as _, pgettext_lazy, \ -    activate, deactivate +from django.utils.translation import ugettext_lazy as _, pgettext_lazy  from ishtar_common.utils import cached_label_changed, get_cache, \      get_current_year, m2m_historization_changed @@ -257,12 +256,17 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,          verbose_name=_(u"Planning service organization"),          on_delete=models.SET_NULL,)  # service instructeur      permit_type = models.ForeignKey( -        PermitType, verbose_name=_(u"Permit type"), blank=True, null=True) +        PermitType, verbose_name=_(u"Permit type"), blank=True, null=True, +        on_delete=models.SET_NULL +    )      permit_reference = models.TextField(_(u"Permit reference"), blank=True,                                          null=True)      end_date = models.DateField(_(u"Closing date"), null=True, blank=True) -    main_town = models.ForeignKey(Town, verbose_name=_(u"Main town"), null=True, -                                  blank=True, related_name='file_main') +    main_town = models.ForeignKey( +        Town, verbose_name=_(u"Main town"), null=True, blank=True, +        related_name='file_main', +        on_delete=models.SET_NULL +    )      towns = models.ManyToManyField(Town, verbose_name=_(u"Towns"),                                     related_name='file', blank=True)      creation_date = models.DateField( @@ -270,11 +274,14 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,          null=True)      reception_date = models.DateField(_(u'Reception date'), blank=True,                                        null=True) -    related_file = models.ForeignKey("File", verbose_name=_(u"Related file"), -                                     blank=True, null=True) +    related_file = models.ForeignKey( +        "File", verbose_name=_(u"Related file"), blank=True, null=True, +        on_delete=models.SET_NULL +    )      if settings.COUNTRY == 'fr':          saisine_type = models.ForeignKey(              SaisineType, blank=True, null=True, +            on_delete=models.SET_NULL,              verbose_name=u"Type de saisine")          instruction_deadline = models.DateField(_(u'Instruction deadline'),                                                  blank=True, null=True) @@ -292,8 +299,9 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,      departments = models.ManyToManyField(          Department, verbose_name=_(u"Departments"), blank=True)      requested_operation_type = models.ForeignKey( -        OperationType, related_name='+', null=True, -        blank=True, verbose_name=_(u"Requested operation type")) +        OperationType, related_name='+', +        on_delete=models.SET_NULL, +        null=True, blank=True, verbose_name=_(u"Requested operation type"))      organization = models.ForeignKey(          Organization, blank=True, null=True, verbose_name=_(u"Organization"),          related_name='files', on_delete=models.SET_NULL) @@ -721,6 +729,7 @@ class FileByDepartment(models.Model):      """      file = models.ForeignKey(File, verbose_name=_(u"File"))      department = models.ForeignKey(Department, verbose_name=_(u"Department"), +                                   on_delete=models.DO_NOTHING,                                     blank=True, null=True)      class Meta: diff --git a/archaeological_finds/migrations/0060_auto_20190206_1522.py b/archaeological_finds/migrations/0060_auto_20190206_1522.py new file mode 100644 index 000000000..ba0ad95b5 --- /dev/null +++ b/archaeological_finds/migrations/0060_auto_20190206_1522.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2019-02-06 15:22 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('archaeological_finds', '0059_auto_20190206_1442'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='alterationcausetype', +            name='parent', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.AlterationCauseType', verbose_name='Parent'), +        ), +        migrations.AlterField( +            model_name='alterationtype', +            name='parent', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.AlterationType', verbose_name='Parent'), +        ), +        migrations.AlterField( +            model_name='basefind', +            name='batch', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.BatchType', verbose_name='Lot/objet'), +        ), +        migrations.AlterField( +            model_name='basefind', +            name='spatial_reference_system', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.SpatialReferenceSystem', verbose_name='Syst\xe8me de r\xe9f\xe9rence spatiale'), +        ), +        migrations.AlterField( +            model_name='communicabilitytype', +            name='parent', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.CommunicabilityType', verbose_name='Parent'), +        ), +        migrations.AlterField( +            model_name='conservatorystate', +            name='parent', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.ConservatoryState', verbose_name='Parent'), +        ), +        migrations.AlterField( +            model_name='find', +            name='checked_type', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.CheckedType', verbose_name='V\xe9rification'), +        ), +        migrations.AlterField( +            model_name='find', +            name='material_type_quality', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='finds', to='archaeological_finds.MaterialTypeQualityType', verbose_name='Qualit\xe9 du type de mat\xe9riaux'), +        ), +        migrations.AlterField( +            model_name='find', +            name='object_type_quality', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='finds', to='archaeological_finds.ObjectTypeQualityType', verbose_name="Qualit\xe9 du type d'objet"), +        ), +        migrations.AlterField( +            model_name='find', +            name='treatment_emergency', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.TreatmentEmergencyType', verbose_name='Urgence du traitement'), +        ), +        migrations.AlterField( +            model_name='findbasket', +            name='user', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='findbaskets', to='ishtar_common.IshtarUser', verbose_name='Propri\xe9taire'), +        ), +        migrations.AlterField( +            model_name='materialtype', +            name='parent', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.MaterialType', verbose_name='Parent'), +        ), +        migrations.AlterField( +            model_name='objecttype', +            name='parent', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.ObjectType', verbose_name='Parent'), +        ), +        migrations.AlterField( +            model_name='treatment', +            name='container', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_warehouse.Container', verbose_name='Contenant'), +        ), +        migrations.AlterField( +            model_name='treatment', +            name='file', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='treatments', to='archaeological_finds.TreatmentFile', verbose_name='Demande associ\xe9e'), +        ), +        migrations.AlterField( +            model_name='treatment', +            name='location', +            field=models.ForeignKey(blank=True, help_text='Endroit o\xf9 le traitement est r\xe9alis\xe9. Renseignez le lieu de conservation de destination pour un d\xe9placement.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_warehouse.Warehouse', verbose_name='Localisation'), +        ), +        migrations.AlterField( +            model_name='treatmenttype', +            name='parent', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.TreatmentType', verbose_name='Parent'), +        ), +    ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 1bc774aa2..ad15aea88 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -284,6 +284,7 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, OwnPerms):      discovery_date_taq = models.DateField(_(u"Discovery date (TAQ)"),                                            blank=True, null=True)      batch = models.ForeignKey(BatchType, verbose_name=_(u"Batch/object"), +                              on_delete=models.SET_NULL,                                blank=True, null=True)      index = models.IntegerField(u"Index", default=0)      material_index = models.IntegerField(_(u"Material index"), default=0) @@ -301,6 +302,7 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, OwnPerms):                                            blank=True, null=True)      spatial_reference_system = models.ForeignKey(          SpatialReferenceSystem, verbose_name=_(u"Spatial Reference System"), +        on_delete=models.SET_NULL,          blank=True, null=True)      point_2d = models.PointField(_(u"Point (2D)"), blank=True, null=True)      point = models.PointField(_(u"Point (3D)"), blank=True, null=True, dim=3) @@ -1097,6 +1099,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,      material_type_quality = models.ForeignKey(          MaterialTypeQualityType,          verbose_name=_(u"Material type quality"), related_name='finds', +        on_delete=models.SET_NULL,          blank=True, null=True      )      volume = models.FloatField(_(u"Volume (l)"), blank=True, null=True) @@ -1131,7 +1134,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,      object_type_quality = models.ForeignKey(          ObjectTypeQualityType,          verbose_name=_(u"Object type quality"), related_name='finds', -        blank=True, null=True +        on_delete=models.SET_NULL, blank=True, null=True      )      integrities = models.ManyToManyField(          IntegrityType, verbose_name=_(u"Integrity / interest"), @@ -1166,6 +1169,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,      previous_id = models.TextField(_(u"Previous ID"), blank=True, null=True)      index = models.IntegerField(u"Index", default=0)      checked_type = models.ForeignKey(CheckedType, verbose_name=_(u"Check"), +                                     on_delete=models.SET_NULL,                                       blank=True, null=True)      check_date = models.DateField(_(u"Check date"),                                    default=datetime.date.today) @@ -1195,6 +1199,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,      )      treatment_emergency = models.ForeignKey(          TreatmentEmergencyType, verbose_name=_(u"Treatment emergency"), +        on_delete=models.SET_NULL,          blank=True, null=True      )      insurance_value = models.FloatField(_(u"Insurance value"), blank=True, diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index a1e0a0437..041721d68 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -138,6 +138,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,      index = models.IntegerField(_(u"Index"), default=1)      file = models.ForeignKey(          'TreatmentFile', related_name='treatments', blank=True, null=True, +        on_delete=models.SET_NULL,          verbose_name=_(u"Associated request"))      treatment_types = models.ManyToManyField(          TreatmentType, verbose_name=_(u"Treatment type")) @@ -149,6 +150,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,          _(u"Treatment have been executed"), default=False)      location = models.ForeignKey(          Warehouse, verbose_name=_(u"Location"), blank=True, null=True, +        on_delete=models.SET_NULL,          help_text=_(              u"Location where the treatment is done. Target warehouse for "              u"a move.")) @@ -167,6 +169,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,      end_date = models.DateField(_(u"Closing date"), blank=True, null=True)      creation_date = models.DateTimeField(default=datetime.datetime.now)      container = models.ForeignKey(Container, verbose_name=_(u"Container"), +                                  on_delete=models.SET_NULL,                                    blank=True, null=True)      estimated_cost = models.FloatField(_(u"Estimated cost"),                                         blank=True, null=True) diff --git a/archaeological_operations/migrations/0048_auto_20190206_1522.py b/archaeological_operations/migrations/0048_auto_20190206_1522.py new file mode 100644 index 000000000..37e6d0a43 --- /dev/null +++ b/archaeological_operations/migrations/0048_auto_20190206_1522.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2019-02-06 15:22 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('archaeological_operations', '0047_auto_20190206_1442'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='operation', +            name='associated_file', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='operations', to='archaeological_files.File', verbose_name='Dossier'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='record_quality_type', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_operations.RecordQualityType', verbose_name="Qualit\xe9 d'enregistrement"), +        ), +        migrations.AlterField( +            model_name='operation', +            name='report_processing', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_operations.ReportState', verbose_name='Traitement du rapport'), +        ), +        migrations.AlterField( +            model_name='parcel', +            name='associated_file', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parcels', to='archaeological_files.File', verbose_name='Dossier'), +        ), +        migrations.AlterField( +            model_name='parcel', +            name='operation', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parcels', to='archaeological_operations.Operation', verbose_name='Op\xe9ration'), +        ), +        migrations.AlterField( +            model_name='period', +            name='parent', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_operations.Period', verbose_name='P\xe9riode parente'), +        ), +    ] diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 162692e20..843d0d1e9 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -27,8 +27,7 @@ from django.db import IntegrityError, transaction  from django.db.models import Q, Count, Sum, Max, Avg  from django.db.models.signals import post_save, m2m_changed, post_delete  from django.forms import ValidationError -from django.utils.translation import ugettext_lazy as _, pgettext_lazy, \ -    activate, deactivate +from django.utils.translation import ugettext_lazy as _, pgettext_lazy  from ishtar_common.models import BaseHistorizedItem, Dashboard, \      DashboardFormItem, Department, Document, DocumentTemplate, \ @@ -58,6 +57,7 @@ class Period(GeneralType):      start_date = models.IntegerField(_(u"Start date"), null=True, blank=True)      end_date = models.IntegerField(_(u"End date"), null=True, blank=True)      parent = models.ForeignKey("Period", verbose_name=_(u"Parent period"), +                               on_delete=models.SET_NULL,                                 blank=True, null=True)      class Meta: @@ -787,6 +787,7 @@ class Operation(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,      associated_file = models.ForeignKey(          'archaeological_files.File',          related_name='operations', verbose_name=_(u"File"), +        on_delete=models.SET_NULL,          blank=True, null=True)      operation_type = models.ForeignKey(OperationType, related_name='+',                                         verbose_name=_(u"Operation type")) @@ -810,6 +811,7 @@ class Operation(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,                                               blank=True, null=True)      report_processing = models.ForeignKey(          ReportState, verbose_name=_(u"Report processing"), +        on_delete=models.SET_NULL,          blank=True, null=True)      old_code = models.CharField(_(u"Old code"), max_length=200, null=True,                                  blank=True) @@ -868,6 +870,7 @@ class Operation(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,              u"officialy registered."))      record_quality_type = models.ForeignKey(          RecordQualityType, verbose_name=_(u"Record quality"), +        on_delete=models.SET_NULL,          null=True, blank=True,)      abstract = models.TextField(_(u"Abstract"), null=True, blank=True)      documentation_deadline = models.DateField( @@ -1488,6 +1491,7 @@ class OperationByDepartment(models.Model):      operation = models.ForeignKey(Operation, verbose_name=_(u"Operation"))      department = models.ForeignKey(Department, verbose_name=_(u"Department"), +                                   on_delete=models.DO_NOTHING,                                     blank=True, null=True)      class Meta: @@ -2007,10 +2011,10 @@ class Parcel(LightHistorizedItem):      associated_file = models.ForeignKey(          'archaeological_files.File',          related_name='parcels', verbose_name=_(u"File"), -        blank=True, null=True, on_delete=models.CASCADE) +        blank=True, null=True, on_delete=models.SET_NULL)      operation = models.ForeignKey(          Operation, related_name='parcels', blank=True, null=True, -        verbose_name=_(u"Operation"), on_delete=models.CASCADE) +        verbose_name=_(u"Operation"), on_delete=models.SET_NULL)      year = models.IntegerField(_(u"Year"), blank=True, null=True)      town = models.ForeignKey(Town, related_name='parcels',                               verbose_name=_(u"Town")) diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 659688a2b..82e08841b 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -25,8 +25,7 @@ from django.core.urlresolvers import reverse  from django.db.models import Q  from django.db.models.signals import post_save, post_delete, m2m_changed  from django.template.defaultfilters import slugify -from django.utils.translation import ugettext_lazy as _, pgettext_lazy, \ -    activate, deactivate +from django.utils.translation import ugettext_lazy as _, pgettext_lazy  from ishtar_common.data_importer import post_importer_action  from ishtar_common.models import Document, GeneralType, get_external_id, \ diff --git a/ishtar_common/migrations/0084_auto_20190206_1522.py b/ishtar_common/migrations/0084_auto_20190206_1522.py new file mode 100644 index 000000000..d5bd969b9 --- /dev/null +++ b/ishtar_common/migrations/0084_auto_20190206_1522.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2019-02-06 15:22 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('ishtar_common', '0083_document_index_external_id'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='department', +            name='state', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.State', verbose_name='\xc9tat'), +        ), +        migrations.AlterField( +            model_name='document', +            name='format_type', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Format', verbose_name='Format'), +        ), +        migrations.AlterField( +            model_name='document', +            name='source_type', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.SourceType', verbose_name='Type'), +        ), +        migrations.AlterField( +            model_name='document', +            name='support_type', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.SupportType', verbose_name='Support'), +        ), +        migrations.AlterField( +            model_name='import', +            name='associated_group', +            field=models.ForeignKey(blank=True, help_text='Si un groupe est s\xe9lectionn\xe9, les cl\xe9s de rapprochement enregistr\xe9es dans ce groupe sont utilis\xe9es.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.TargetKeyGroup'), +        ), +        migrations.AlterField( +            model_name='importercolumn', +            name='regexp_pre_filter', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Regexp'), +        ), +        migrations.AlterField( +            model_name='importertype', +            name='associated_models', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='ishtar_common.ImporterModel', verbose_name='Mod\xe8le associ\xe9'), +        ), +        migrations.AlterField( +            model_name='importtarget', +            name='regexp_filter', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Regexp'), +        ), +        migrations.AlterField( +            model_name='jsondatafield', +            name='section', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.JsonDataSection'), +        ), +        migrations.AlterField( +            model_name='person', +            name='title', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.TitleType', verbose_name='Titre'), +        ), +        migrations.AlterField( +            model_name='sourcetype', +            name='parent', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.SourceType', verbose_name='Parent'), +        ), +        migrations.AlterField( +            model_name='town', +            name='departement', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Department', verbose_name='D\xe9partement'), +        ), +    ] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 7f5857037..a37c1f6bc 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -953,6 +953,7 @@ class GeneralType(Cached, models.Model):  class HierarchicalType(GeneralType):      parent = models.ForeignKey('self', blank=True, null=True, +                               on_delete=models.SET_NULL,                                 verbose_name=_(u"Parent"))      class Meta: @@ -1165,7 +1166,8 @@ class JsonDataField(models.Model):      order = models.IntegerField(_(u"Order"), default=10)      search_index = models.BooleanField(_(u"Use in search indexes"),                                         default=False) -    section = models.ForeignKey(JsonDataSection, blank=True, null=True) +    section = models.ForeignKey(JsonDataSection, blank=True, null=True, +                                on_delete=models.SET_NULL)      custom_forms = models.ManyToManyField(          "CustomForm", blank=True, through="CustomFormJsonField") @@ -2732,8 +2734,10 @@ class State(models.Model):  class Department(models.Model):      label = models.CharField(_(u"Label"), max_length=30)      number = models.CharField(_(u"Number"), unique=True, max_length=3) -    state = models.ForeignKey('State', verbose_name=_(u"State"), blank=True, -                              null=True) +    state = models.ForeignKey( +        'State', verbose_name=_(u"State"), blank=True, null=True, +        on_delete=models.SET_NULL, +    )      objects = NumberManager()      class Meta: @@ -3127,6 +3131,7 @@ class Person(Address, Merge, OwnPerms, ValueGetter):      old_title = models.CharField(_(u"Title"), max_length=100, choices=TYPE,                                   blank=True, null=True)      title = models.ForeignKey(TitleType, verbose_name=_(u"Title"), +                              on_delete=models.SET_NULL,                                blank=True, null=True)      salutation = models.CharField(_(u"Salutation"), max_length=200,                                    blank=True, null=True) @@ -3616,6 +3621,7 @@ class Basket(FullSearch, OwnPerms):      comment = models.TextField(_(u"Comment"), blank=True, null=True)      user = models.ForeignKey(          IshtarUser, blank=True, null=True, related_name='%(class)ss', +        on_delete=models.SET_NULL,          verbose_name=_(u"Owner"))      available = models.BooleanField(_(u"Available"), default=True)      shared_with = models.ManyToManyField( @@ -3974,13 +3980,16 @@ class Document(BaseHistorizedItem, OwnPerms, ImageModel):      internal_reference = models.TextField(_(u"Internal ref."), null=True,                                            blank=True)      source_type = models.ForeignKey(SourceType, verbose_name=_(u"Type"), +                                    on_delete=models.SET_NULL,                                      null=True, blank=True)      licenses = models.ManyToManyField(LicenseType, verbose_name=_(u"License"),                                        blank=True)      support_type = models.ForeignKey(SupportType, verbose_name=_(u"Support"), +                                     on_delete=models.SET_NULL,                                       blank=True, null=True, )      format_type = models.ForeignKey(Format, verbose_name=_(u"Format"), -                                    blank=True, null=True, ) +                                    on_delete=models.SET_NULL, +                                    blank=True, null=True)      scale = models.CharField(_(u"Scale"), max_length=30, null=True,                               blank=True)      authors = models.ManyToManyField(Author, verbose_name=_(u"Authors"), @@ -4313,7 +4322,8 @@ class Town(Imported, models.Model):      numero_insee = models.CharField(u"Code commune (numéro INSEE)",                                      max_length=120)      departement = models.ForeignKey( -        Department, verbose_name=_(u"Department"), null=True, blank=True) +        Department, verbose_name=_(u"Department"), +        on_delete=models.SET_NULL, null=True, blank=True)      year = models.IntegerField(          _("Year of creation"), null=True, blank=True,          help_text=_(u"Filling this field is relevant to distinguish old towns " diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index e9f0e5d9e..ffb456071 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -128,6 +128,7 @@ class ImporterType(models.Model):                                     blank=True)      associated_models = models.ForeignKey(          ImporterModel, verbose_name=_(u"Associated model"), +        on_delete=models.SET_NULL,          related_name='+', blank=True, null=True)      created_models = models.ManyToManyField(          ImporterModel, verbose_name=_(u"Models that can accept new items"), @@ -370,7 +371,9 @@ class ImporterColumn(models.Model):      importer_type = models.ForeignKey(ImporterType, related_name='columns')      col_number = models.IntegerField(_(u"Column number"), default=1)      description = models.TextField(_("Description"), blank=True, null=True) -    regexp_pre_filter = models.ForeignKey("Regexp", blank=True, null=True) +    regexp_pre_filter = models.ForeignKey( +        "Regexp", blank=True, null=True, on_delete=models.SET_NULL, +    )      required = models.BooleanField(_(u"Required"), default=False)      export_field_name = models.CharField(          _(u"Export field name"), blank=True, null=True, max_length=200, @@ -472,7 +475,9 @@ class ImportTarget(models.Model):      """      column = models.ForeignKey(ImporterColumn, related_name='targets')      target = models.CharField(u"Target", max_length=500) -    regexp_filter = models.ForeignKey("Regexp", blank=True, null=True) +    regexp_filter = models.ForeignKey( +        "Regexp", blank=True, null=True, on_delete=models.SET_NULL, +    )      formater_type = models.ForeignKey("FormaterType")      force_new = models.BooleanField(_(u"Force creation of new items"),                                      default=False) @@ -835,6 +840,7 @@ class Import(models.Model):          blank=True, null=True, max_length=220, help_text=max_size_help())      associated_group = models.ForeignKey(          TargetKeyGroup, blank=True, null=True, +        on_delete=models.SET_NULL,          help_text=_(u"If a group is selected, target key saved in this group "                      u"will be used.")      ) | 
