diff --git a/arkindex/training/migrations/0008_dataset_unique_elements.py b/arkindex/training/migrations/0008_dataset_unique_elements.py new file mode 100644 index 0000000000000000000000000000000000000000..44224cfde6ebd29ee514783991791619e44eaea4 --- /dev/null +++ b/arkindex/training/migrations/0008_dataset_unique_elements.py @@ -0,0 +1,38 @@ +# Generated by Django 4.1.7 on 2024-03-28 14:54 + +from django.db import migrations, models + + +def update_unique_elements(apps, schema_editor): + """Update unique_elements to False when some elements are already duplicated""" + Dataset = apps.get_model("training", "Dataset") + DatasetElement = apps.get_model("training", "DatasetElement") + Dataset.objects.filter( + models.Exists( + DatasetElement.objects + .filter(set__dataset_id=models.OuterRef("pk")) + .values("element") + .annotate(dups=models.Count("element")) + .filter(dups__gte=2) + ) + ).update(unique_elements=False) + + +class Migration(migrations.Migration): + + dependencies = [ + ("training", "0007_datasetset_model"), + ] + + operations = [ + migrations.AddField( + model_name="dataset", + name="unique_elements", + field=models.BooleanField(default=True), + ), + migrations.RunPython( + update_unique_elements, + reverse_code=migrations.RunPython.noop, + elidable=True, + ), + ]