diff options
Diffstat (limited to 'archaeological_warehouse')
-rw-r--r-- | archaeological_warehouse/migrations/0041_auto_20190912_1518.py | 43 | ||||
-rw-r--r-- | archaeological_warehouse/models.py | 25 |
2 files changed, 57 insertions, 11 deletions
diff --git a/archaeological_warehouse/migrations/0041_auto_20190912_1518.py b/archaeological_warehouse/migrations/0041_auto_20190912_1518.py new file mode 100644 index 000000000..f1158d9b1 --- /dev/null +++ b/archaeological_warehouse/migrations/0041_auto_20190912_1518.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.18 on 2019-09-12 15:18 +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_warehouse', '0040_auto_20190910_1324'), + ] + + operations = [ + migrations.AddField( + model_name='container', + name='uuid', + field=models.UUIDField(blank=True, null=True), + ), + migrations.AddField( + model_name='warehouse', + name='uuid', + field=models.UUIDField(blank=True, null=True), + ), + migrations.RunPython(set_uuid_helper('archaeological_warehouse', + 'Container')), + migrations.RunPython(set_uuid_helper('archaeological_warehouse', + 'Warehouse')), + migrations.AlterField( + model_name='container', + name='uuid', + field=models.UUIDField(default=uuid.uuid4), + ), + migrations.AlterField( + model_name='warehouse', + name='uuid', + field=models.UUIDField(default=uuid.uuid4), + ), + ] diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 96257da3c..f3fd5c3aa 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -18,6 +18,7 @@ # See the file COPYING for details. import datetime +import uuid from django.conf import settings from django.contrib.gis.db import models @@ -28,7 +29,7 @@ from django.template.defaultfilters import slugify from django.utils.translation import ugettext_lazy as _, pgettext_lazy from ishtar_common.data_importer import post_importer_action -from ishtar_common.model_managers import ExternalIdManager +from ishtar_common.model_managers import ExternalIdManager, UUIDModelManager from ishtar_common.models import Document, GeneralType, get_external_id, \ LightHistorizedItem, OwnPerms, Address, Person, post_save_cache, \ DashboardFormItem, ShortMenuItem, Organization, OrganizationType, \ @@ -93,8 +94,9 @@ class Warehouse(Address, DocumentItem, GeoItem, QRCodeItem, DashboardFormItem, ) QUICK_ACTIONS = [QA_LOCK] - objects = ExternalIdManager() + objects = UUIDModelManager() + uuid = models.UUIDField(default=uuid.uuid4) name = models.CharField(_(u"Name"), max_length=200) warehouse_type = models.ForeignKey(WarehouseType, verbose_name=_(u"Warehouse type")) @@ -136,7 +138,7 @@ class Warehouse(Address, DocumentItem, GeoItem, QRCodeItem, DashboardFormItem, return self.name def natural_key(self): - return (self.external_id, ) + return (self.uuid, ) def _get_base_image_path(self): return u"{}/{}".format(self.SLUG, self.external_id) @@ -375,7 +377,7 @@ post_delete.connect(post_save_cache, sender=WarehouseDivision) class WarehouseDivisionLinkManager(models.Manager): def get_by_natural_key(self, warehouse, division): - return self.get(warehouse__external_id=warehouse, + return self.get(warehouse__uuid=warehouse, division__txt_idx=division) @@ -396,7 +398,7 @@ class WarehouseDivisionLink(models.Model): return u"{} - {}".format(self.warehouse, self.division) def natural_key(self): - return self.warehouse.external_id, self.division.txt_idx + return self.warehouse.uuid, self.division.txt_idx class ContainerType(GeneralType): @@ -592,9 +594,10 @@ class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem, ) QUICK_ACTIONS = [QA_LOCK] - objects = ExternalIdManager() + objects = UUIDModelManager() # fields + uuid = models.UUIDField(default=uuid.uuid4) location = models.ForeignKey( Warehouse, verbose_name=_(u"Location (warehouse)"), related_name='containers') @@ -641,7 +644,7 @@ class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem, return self.cached_label or "" def natural_key(self): - return (self.external_id, ) + return (self.uuid, ) def _generate_cached_label(self): items = [self.reference, self.precise_location] @@ -894,9 +897,9 @@ m2m_changed.connect(document_attached_changed, class ContainerLocalisationManager(models.Manager): def get_by_natural_key(self, container, warehouse, division): - return self.get(container__external_id=container, - division__warehouse__external_id=warehouse, - division__division__txt_idx = division) + return self.get(container__uuid=container, + division__warehouse__uuid=warehouse, + division__division__txt_idx=division) class ContainerLocalisation(models.Model): @@ -919,7 +922,7 @@ class ContainerLocalisation(models.Model): return lbl def natural_key(self): - return self.container.external_id, self.division.warehouse.external_id,\ + return self.container.uuid, self.division.warehouse.uuid,\ self.division.division.txt_idx def save(self, *args, **kwargs): |