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 | 
