From 656b663238037345581345fb6ec09cc7989570f9 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 20 Oct 2025 21:53:00 -0300 Subject: [PATCH] Update unique datasets name constraint --- ..._rasterdataset_unique_together_and_more.py | 28 +++++++++++++++++++ vbos/datasets/models.py | 12 ++++---- vbos/datasets/test/test_models.py | 25 +++++++++++++++-- 3 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 vbos/datasets/migrations/0016_alter_rasterdataset_unique_together_and_more.py diff --git a/vbos/datasets/migrations/0016_alter_rasterdataset_unique_together_and_more.py b/vbos/datasets/migrations/0016_alter_rasterdataset_unique_together_and_more.py new file mode 100644 index 0000000..f41ad94 --- /dev/null +++ b/vbos/datasets/migrations/0016_alter_rasterdataset_unique_together_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 5.2.5 on 2025-10-20 21:04 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ( + "datasets", + "0015_rasterdataset_description_tabulardataset_description_and_more", + ), + ] + + operations = [ + migrations.AlterUniqueTogether( + name="rasterdataset", + unique_together={("name", "type", "cluster")}, + ), + migrations.AlterUniqueTogether( + name="tabulardataset", + unique_together={("name", "type", "cluster")}, + ), + migrations.AlterUniqueTogether( + name="vectordataset", + unique_together={("name", "type", "cluster")}, + ), + ] diff --git a/vbos/datasets/models.py b/vbos/datasets/models.py index 54cf8f4..92f864c 100644 --- a/vbos/datasets/models.py +++ b/vbos/datasets/models.py @@ -94,11 +94,11 @@ class RasterDataset(models.Model): file = models.ForeignKey(RasterFile, on_delete=models.PROTECT) def __str__(self): - return self.name + return f"{self.name} - {self.cluster} / {self.type}" class Meta: ordering = ["id"] - unique_together = ["name", "type"] + unique_together = ["name", "type", "cluster"] class VectorDataset(models.Model): @@ -114,11 +114,11 @@ class VectorDataset(models.Model): source = models.CharField(max_length=155, blank=True, null=True) def __str__(self): - return f"{self.name} ({self.type})" + return f"{self.name} - {self.cluster} / {self.type}" class Meta: ordering = ["id"] - unique_together = ["name", "type"] + unique_together = ["name", "type", "cluster"] class VectorItem(models.Model): @@ -155,11 +155,11 @@ class TabularDataset(models.Model): unit = models.CharField(max_length=50, blank=True, null=True) def __str__(self): - return f"{self.name} ({self.type})" + return f"{self.name} - {self.cluster} / {self.type}" class Meta: ordering = ["id"] - unique_together = ["name", "type"] + unique_together = ["name", "type", "cluster"] class TabularItem(models.Model): diff --git a/vbos/datasets/test/test_models.py b/vbos/datasets/test/test_models.py index da32896..1ca907a 100644 --- a/vbos/datasets/test/test_models.py +++ b/vbos/datasets/test/test_models.py @@ -66,7 +66,7 @@ def test_deletion(self): RasterFile.objects.all().delete() - def test_unique_name_type(self): + def test_unique_name_type_cluster(self): self.cluster = Cluster.objects.create(name="Administrative") r_2 = RasterFile.objects.create( name="Population Density COG", file="raster/pop.tiff" @@ -84,6 +84,13 @@ def test_unique_name_type(self): file=r_2, type="estimated_damage", ) + RasterDataset.objects.create( + name="Population", + cluster=Cluster.objects.create(name="Education"), + source="Government", + file=r_2, + type="estimated_damage", + ) with self.assertRaises(IntegrityError): RasterDataset.objects.create( name="Population", @@ -94,7 +101,7 @@ def test_unique_name_type(self): class TestTabularDatasetModel(TestCase): - def test_unique_name_type(self): + def test_unique_name_type_cluster(self): self.cluster = Cluster.objects.create(name="Administrative") TabularDataset.objects.create( name="Population", @@ -107,6 +114,12 @@ def test_unique_name_type(self): source="Government", type="estimated_damage", ) + TabularDataset.objects.create( + name="Population", + cluster=Cluster.objects.create(name="education"), + source="Government", + type="estimated_damage", + ) with self.assertRaises(IntegrityError): TabularDataset.objects.create( name="Population", @@ -116,7 +129,7 @@ def test_unique_name_type(self): class TestVectorDatasetModel(TestCase): - def test_unique_name_type(self): + def test_unique_name_type_cluster(self): self.cluster = Cluster.objects.create(name="Administrative") VectorDataset.objects.create( name="Population", @@ -129,6 +142,12 @@ def test_unique_name_type(self): source="Government", type="estimated_damage", ) + VectorDataset.objects.create( + name="Population", + cluster=Cluster.objects.create(name="education"), + source="Government", + type="estimated_damage", + ) with self.assertRaises(IntegrityError): VectorDataset.objects.create( name="Population",