summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne@peacefrogs.net>2019-02-06 15:31:06 +0100
committerÉtienne Loks <etienne@peacefrogs.net>2019-02-06 15:31:06 +0100
commit4dc674ea9fa7516878a7b128da10ca9f09a6a1c7 (patch)
tree996f49e49c31c5c6644905ee3d9a3bf30da3bd1f
parent4cbb3429c3243e93597c2d2fbc668b444499c728 (diff)
downloadIshtar-4dc674ea9fa7516878a7b128da10ca9f09a6a1c7.tar.bz2
Ishtar-4dc674ea9fa7516878a7b128da10ca9f09a6a1c7.zip
ForeignKey: SET_NULL fix
-rw-r--r--archaeological_context_records/migrations/0040_auto_20190206_1522.py66
-rw-r--r--archaeological_context_records/models.py13
-rw-r--r--archaeological_files/migrations/0018_auto_20190206_1522.py41
-rw-r--r--archaeological_files/models.py27
-rw-r--r--archaeological_finds/migrations/0060_auto_20190206_1522.py101
-rw-r--r--archaeological_finds/models_finds.py7
-rw-r--r--archaeological_finds/models_treatments.py3
-rw-r--r--archaeological_operations/migrations/0048_auto_20190206_1522.py46
-rw-r--r--archaeological_operations/models.py12
-rw-r--r--archaeological_warehouse/models.py3
-rw-r--r--ishtar_common/migrations/0084_auto_20190206_1522.py76
-rw-r--r--ishtar_common/models.py20
-rw-r--r--ishtar_common/models_imports.py10
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.")
)