summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-04 14:51:54 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-04 14:51:54 +0200
commit6f487e1b480365ff4a64500dc40ff2da6d92d5b2 (patch)
treece53c3f49edd931596dacbdd85da510a1f326576
parentc83b3c1e68cb478f9a2c7ba226c56cfdb793fc2c (diff)
downloadIshtar-6f487e1b480365ff4a64500dc40ff2da6d92d5b2.tar.bz2
Ishtar-6f487e1b480365ff4a64500dc40ff2da6d92d5b2.zip
Use UUID for operations and datings
-rw-r--r--archaeological_context_records/migrations/0050_dating_uuid.py30
-rw-r--r--archaeological_context_records/models.py2
-rw-r--r--archaeological_operations/migrations/0061_auto_20190904_1440.py36
-rw-r--r--archaeological_operations/models.py16
-rw-r--r--ishtar_common/utils_migrations.py15
5 files changed, 92 insertions, 7 deletions
diff --git a/archaeological_context_records/migrations/0050_dating_uuid.py b/archaeological_context_records/migrations/0050_dating_uuid.py
new file mode 100644
index 000000000..c2413bd2d
--- /dev/null
+++ b/archaeological_context_records/migrations/0050_dating_uuid.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.18 on 2019-09-04 14:23
+from __future__ import unicode_literals
+
+import uuid
+
+from django.db import migrations, models
+
+from ishtar_common.utils_migrations import set_uuid_helper
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('archaeological_context_records', '0049_auto_20190711_1401'),
+ ]
+ operations = [
+ migrations.AddField(
+ model_name='dating',
+ name='uuid',
+ field=models.UUIDField(blank=True, null=True),
+ ),
+ migrations.RunPython(set_uuid_helper('archaeological_context_records',
+ 'Dating')),
+ migrations.AlterField(
+ model_name='dating',
+ name='uuid',
+ field=models.UUIDField(default=uuid.uuid4),
+ ),
+ ]
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py
index 3b236346d..4588e6465 100644
--- a/archaeological_context_records/models.py
+++ b/archaeological_context_records/models.py
@@ -18,6 +18,7 @@
# See the file COPYING for details.
from collections import OrderedDict
+import uuid
from django.conf import settings
from django.contrib.gis.db import models
@@ -67,6 +68,7 @@ post_delete.connect(post_save_cache, sender=DatingQuality)
class Dating(models.Model):
+ uuid = models.UUIDField(default=uuid.uuid4)
period = models.ForeignKey(Period, verbose_name=_("Period"))
start_date = models.IntegerField(_("Start date"), blank=True, null=True)
end_date = models.IntegerField(_("End date"), blank=True, null=True)
diff --git a/archaeological_operations/migrations/0061_auto_20190904_1440.py b/archaeological_operations/migrations/0061_auto_20190904_1440.py
new file mode 100644
index 000000000..3c6411c27
--- /dev/null
+++ b/archaeological_operations/migrations/0061_auto_20190904_1440.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.18 on 2019-09-04 14:40
+from __future__ import unicode_literals
+
+import uuid
+
+from django.db import migrations, models
+
+from ishtar_common.utils_migrations import set_uuid_helper
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('archaeological_operations', '0060_auto_20190903_1735'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='historicaloperation',
+ name='uuid',
+ field=models.UUIDField(default=uuid.uuid4),
+ ),
+ migrations.AddField(
+ model_name='operation',
+ name='uuid',
+ field=models.UUIDField(blank=True, null=True),
+ ),
+ migrations.RunPython(set_uuid_helper('archaeological_operations',
+ 'Operation')),
+ migrations.AlterField(
+ model_name='operation',
+ name='uuid',
+ field=models.UUIDField(default=uuid.uuid4),
+ ),
+ ]
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 1bf51120a..8f5f1aace 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -20,6 +20,7 @@
from collections import OrderedDict
import datetime
from itertools import groupby
+import uuid
from django.conf import settings
from django.contrib.gis.db import models
@@ -579,8 +580,8 @@ class ClosedItem(object):
class OperationManager(models.GeoManager):
- def get_by_natural_key(self, txt_idx):
- return self.get(code_patriarche=txt_idx)
+ def get_by_natural_key(self, uuid):
+ return self.get(uuid=uuid)
class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, QRCodeItem,
@@ -900,6 +901,7 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, QRCodeItem,
]
# fields definition
+ uuid = models.UUIDField(default=uuid.uuid4)
creation_date = models.DateField(_("Creation date"),
default=datetime.date.today)
end_date = models.DateField(_("Closing date"), null=True, blank=True)
@@ -1065,7 +1067,7 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, QRCodeItem,
ordering = ('cached_label',)
def natural_key(self):
- return (self.code_patriarche, )
+ return (self.uuid, )
@classmethod
def get_owns(cls, user, menu_filtr=None, limit=None, values=None,
@@ -1657,8 +1659,8 @@ class RelationType(GeneralRelationType):
class OperationRecordRelationManager(models.Manager):
def get_by_natural_key(self, left_record, right_record, relation_type):
return self.get(
- left_record__code_patriarche=left_record,
- right_record__code_patriarche=right_record,
+ left_record__uuid=left_record,
+ right_record__uuid=right_record,
relation_type__txt_idx=relation_type)
@@ -1680,8 +1682,8 @@ class RecordRelations(GeneralRecordRelations, models.Model):
]
def natural_key(self):
- return (self.left_record.code_patriarche,
- self.right_record.code_patriarche, self.relation_type.txt_idx)
+ return (self.left_record.uuid,
+ self.right_record.uuid, self.relation_type.txt_idx)
post_delete.connect(post_delete_record_relation, sender=RecordRelations)
diff --git a/ishtar_common/utils_migrations.py b/ishtar_common/utils_migrations.py
index 62b6720c6..bbe308f4e 100644
--- a/ishtar_common/utils_migrations.py
+++ b/ishtar_common/utils_migrations.py
@@ -5,6 +5,7 @@ import datetime
import json
import os
import sys
+import uuid
from django.core.files import File
from django.db import connection
@@ -154,3 +155,17 @@ def m2m_historization_init(obj):
u"history_m2m = '" + json.dumps(hist_values).replace(u"'", u"''") +
u"'::json WHERE id = %s", [obj.pk]
)
+
+
+def migrate_uuid(model):
+ for obj in model.objects.all():
+ obj.uuid = uuid.uuid4()
+ obj.skip_history_when_saving = True
+ obj.save()
+
+
+def set_uuid_helper(module, model_name):
+ def set_uuid(apps, schema_editor):
+ model = apps.get_model(module, model_name)
+ migrate_uuid(model)
+ return set_uuid