diff options
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 |
commit | 1e27451f55a8ba9246b6b0c62c395f6dc6c14d89 (patch) | |
tree | ce53c3f49edd931596dacbdd85da510a1f326576 | |
parent | 1d4c76d6977b01b23d7816cc6fb4c1be8cf916a2 (diff) | |
download | Ishtar-1e27451f55a8ba9246b6b0c62c395f6dc6c14d89.tar.bz2 Ishtar-1e27451f55a8ba9246b6b0c62c395f6dc6c14d89.zip |
Use UUID for operations and datings
-rw-r--r-- | archaeological_context_records/migrations/0050_dating_uuid.py | 30 | ||||
-rw-r--r-- | archaeological_context_records/models.py | 2 | ||||
-rw-r--r-- | archaeological_operations/migrations/0061_auto_20190904_1440.py | 36 | ||||
-rw-r--r-- | archaeological_operations/models.py | 16 | ||||
-rw-r--r-- | ishtar_common/utils_migrations.py | 15 |
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 |