diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2019-02-06 15:31:06 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2019-02-06 15:31:06 +0100 |
commit | 78e9993e933b00da8cd79d9bc65a94257188cbcb (patch) | |
tree | 996f49e49c31c5c6644905ee3d9a3bf30da3bd1f | |
parent | f0a0a7918bb2030595b577c39c1852c29ea3f70e (diff) | |
download | Ishtar-78e9993e933b00da8cd79d9bc65a94257188cbcb.tar.bz2 Ishtar-78e9993e933b00da8cd79d9bc65a94257188cbcb.zip |
ForeignKey: SET_NULL fix
-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.") ) |