Browse Source

Update label unique constraint

pull/1619/head
Hironsan 3 years ago
parent
commit
80397d31b5
3 changed files with 34 additions and 7 deletions
  1. 21
      backend/api/migrations/0022_auto_20211210_0052.py
  2. 9
      backend/api/models.py
  3. 11
      backend/api/tests/test_models.py

21
backend/api/migrations/0022_auto_20211210_0052.py

@ -0,0 +1,21 @@
# Generated by Django 3.2.8 on 2021-12-10 00:52
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('api', '0021_auto_20211209_0644'),
]
operations = [
migrations.AlterUniqueTogether(
name='label',
unique_together=set(),
),
migrations.AddConstraint(
model_name='label',
constraint=models.UniqueConstraint(fields=('project', 'text', 'task_type'), name='unique_label'),
),
]

9
backend/api/models.py

@ -157,9 +157,12 @@ class Label(models.Model):
super().clean()
class Meta:
unique_together = (
('project', 'text'),
)
constraints = [
models.UniqueConstraint(
fields=['project', 'text', 'task_type'],
name='unique_label'
)
]
ordering = ['created_at']

11
backend/api/tests/test_models.py

@ -58,11 +58,14 @@ class TestSpeech2textProject(TestCase):
class TestLabel(TestCase):
def test_text_uniqueness(self):
label = mommy.make('Label')
mommy.make('Label', text=label.text)
def test_allow_creating_same_text_different_type(self):
label = mommy.make('Label', task_type='Category')
mommy.make('Label', project=label.project, text=label.text, task_type='Span')
def test_deny_creating_same_text_same_type(self):
label = mommy.make('Label', task_type='Category')
with self.assertRaises(IntegrityError):
Label(project=label.project, text=label.text).save()
mommy.make('Label', project=label.project, text=label.text, task_type='Category')
def test_keys_uniqueness(self):
label = mommy.make('Label', prefix_key='ctrl', suffix_key='a')

Loading…
Cancel
Save