Skip to content
Snippets Groups Projects
Commit 69c03d8a authored by Valentin Rigal's avatar Valentin Rigal
Browse files

Remove classification source xor verion constraint

parent a7c98b45
No related branches found
No related tags found
No related merge requests found
# Generated by Django 3.1 on 2020-10-14 13:56
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('documents', '0019_corpus_repository'),
]
operations = [
migrations.RemoveConstraint(
model_name='classification',
name='classification_unique_source',
),
migrations.RemoveConstraint(
model_name='classification',
name='classification_unique_worker_version',
),
migrations.RemoveConstraint(
model_name='classification',
name='classification_source_xor_workerversion',
),
migrations.AddConstraint(
model_name='classification',
constraint=models.UniqueConstraint(condition=models.Q(('source_id__isnull', True), ('worker_version_id__isnull', True)), fields=('element', 'ml_class'), name='classification_unique_manual'),
),
migrations.AddConstraint(
model_name='classification',
constraint=models.UniqueConstraint(condition=models.Q(('source_id__isnull', True), ('worker_version_id__isnull', False)), fields=('element', 'ml_class', 'worker_version'), name='classification_unique_worker_version'),
),
]
......@@ -578,19 +578,16 @@ class Classification(models.Model):
class Meta:
constraints = [
# Add class unicity for manual and non manual classifications on an element
models.UniqueConstraint(
fields=['element', 'ml_class', 'source'],
name='classification_unique_source',
condition=Q(worker_version_id__isnull=True),
fields=['element', 'ml_class'],
name='classification_unique_manual',
condition=Q(worker_version_id__isnull=True, source_id__isnull=True),
),
models.UniqueConstraint(
fields=['element', 'ml_class', 'worker_version'],
name='classification_unique_worker_version',
condition=Q(source_id__isnull=True),
),
models.CheckConstraint(
check=Q(source_id__isnull=False, worker_version_id__isnull=True) | Q(source_id__isnull=True, worker_version_id__isnull=False),
name='classification_source_xor_workerversion',
condition=Q(worker_version_id__isnull=False, source_id__isnull=True),
)
]
......
......@@ -144,8 +144,12 @@ class ClassificationCreateSerializer(serializers.ModelSerializer):
read_only_fields = ('id', 'state')
validators = [
UniqueTogetherValidator(
queryset=Classification.objects.filter(source_id__isnull=True),
queryset=Classification.objects.filter(worker_version__isnull=False, source_id__isnull=True),
fields=['element', 'worker_version', 'ml_class']
),
UniqueTogetherValidator(
queryset=Classification.objects.filter(worker_version__isnull=True, source_id__isnull=True),
fields=['element', 'ml_class']
)
]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment