Skip to content

Commit

Permalink
Merge pull request #752 from ImageMarkup/add-unique-constraints
Browse files Browse the repository at this point in the history
Add missing unique constraints
  • Loading branch information
danlamanna committed Aug 16, 2023
2 parents 9d86dad + 38e78a1 commit 285ebcc
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 2 deletions.
19 changes: 19 additions & 0 deletions isic/core/migrations/0047_alter_segmentation_mask.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 4.1.10 on 2023-08-16 03:47

from django.db import migrations
import s3_file_field.fields


class Migration(migrations.Migration):
dependencies = [
("core", "0046_doi_creator"),
]

operations = [
migrations.AlterField(
model_name="segmentation",
name="mask",
field=s3_file_field.fields.S3FileField(blank=True, default=""),
preserve_default=False,
),
]
20 changes: 20 additions & 0 deletions isic/core/migrations/0048_segmentation_segmentation_unique_mask.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 4.1.10 on 2023-08-16 03:47

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("core", "0047_alter_segmentation_mask"),
]

operations = [
migrations.AddConstraint(
model_name="segmentation",
constraint=models.UniqueConstraint(
condition=models.Q(("mask", ""), _negated=True),
fields=("mask",),
name="segmentation_unique_mask",
),
),
]
8 changes: 7 additions & 1 deletion isic/core/models/segmentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,20 @@ class Segmentation(TimeStampedModel):
class Meta:
ordering = ["id"]

constraints = [
models.UniqueConstraint(
fields=["mask"], condition=~models.Q(mask=""), name="segmentation_unique_mask"
),
]

girder_id = models.CharField(
unique=True,
max_length=24,
validators=[RegexValidator(f"^{MONGO_ID_REGEX}$")],
)
creator = models.ForeignKey(User, on_delete=models.RESTRICT)
image = models.ForeignKey(Image, on_delete=models.RESTRICT)
mask = S3FileField(null=True)
mask = S3FileField(blank=True)
meta = models.JSONField(default=dict)


Expand Down
24 changes: 24 additions & 0 deletions isic/ingest/migrations/0041_alter_metadatafile_blob.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Generated by Django 4.1.10 on 2023-08-16 03:47

import django.core.validators
from django.db import migrations
import s3_file_field.fields


class Migration(migrations.Migration):
dependencies = [
("ingest", "0040_migrate_image_types"),
]

operations = [
migrations.AlterField(
model_name="metadatafile",
name="blob",
field=s3_file_field.fields.S3FileField(
unique=True,
validators=[
django.core.validators.FileExtensionValidator(allowed_extensions=["csv"])
],
),
),
]
2 changes: 1 addition & 1 deletion isic/ingest/models/metadata_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class MetadataFile(CreationSortedTimeStampedModel):
creator = models.ForeignKey(User, on_delete=models.CASCADE)
cohort = models.ForeignKey(Cohort, on_delete=models.CASCADE, related_name="metadata_files")

blob = S3FileField(validators=[FileExtensionValidator(allowed_extensions=["csv"])])
blob = S3FileField(validators=[FileExtensionValidator(allowed_extensions=["csv"])], unique=True)
blob_name = models.CharField(max_length=255, editable=False)
blob_size = models.PositiveBigIntegerField(editable=False)

Expand Down

0 comments on commit 285ebcc

Please sign in to comment.