diff --git a/src/backend/core/migrations/0006_remove_recording_unique_active_recording_per_room_and_more.py b/src/backend/core/migrations/0006_remove_recording_unique_active_recording_per_room_and_more.py new file mode 100644 index 00000000..e740f1a1 --- /dev/null +++ b/src/backend/core/migrations/0006_remove_recording_unique_active_recording_per_room_and_more.py @@ -0,0 +1,36 @@ +# Generated by Django 5.1.1 on 2024-10-31 21:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0005_alter_user_language_recording'), + ] + + operations = [ + migrations.RemoveConstraint( + model_name='recording', + name='unique_active_recording_per_room', + ), + migrations.AlterField( + model_name='recording', + name='mode', + field=models.CharField(choices=[('screen_recording', 'SCREEN_RECORDING'), ('transcript', 'TRANSCRIPT')], help_text='Defines the kind of worker being called.', max_length=20, verbose_name='Worker kind'), + ), + migrations.AlterField( + model_name='recording', + name='status', + field=models.CharField(choices=[('active', 'Active'), ('initiated', 'Initiated'), ('stopped', 'Stopped'), ('aborted', 'Aborted'), ('saved', 'Saved'), ('failed_to_start', 'Failed to Start'), ('failed_to_stop', 'Failed to Stop')], default='initiated', max_length=20), + ), + migrations.AlterField( + model_name='user', + name='language', + field=models.CharField(choices="(('en-us', 'English'), ('fr-fr', 'French'))", default='en-us', help_text='The language in which the user wants to see the interface.', max_length=10, verbose_name='language'), + ), + migrations.AddConstraint( + model_name='recording', + constraint=models.UniqueConstraint(condition=models.Q(('status', 'active'), ('status', 'initiated'), _connector='OR'), fields=('room',), name='unique_initiated_or_active_recording_per_room'), + ), + ] diff --git a/src/backend/core/models.py b/src/backend/core/models.py index d329f699..7d44170a 100644 --- a/src/backend/core/models.py +++ b/src/backend/core/models.py @@ -41,10 +41,11 @@ class RoleChoices(models.TextChoices): class RecordingStatusChoices(models.TextChoices): """Recording status choices.""" + INITIATED = "initiated", _("Initiated") ACTIVE = "active", _("Active") STOPPED = "stopped", _("Stopped") - ABORTED = "aborted", _("Aborted") SAVED = "saved", _("Saved") + ABORTED = "aborted", _("Aborted") FAILED_TO_START = "failed_to_start", _("Failed to Start") FAILED_TO_STOP = "failed_to_stop", _("Failed to Stop") @@ -380,7 +381,7 @@ class Recording(BaseModel): status = models.CharField( max_length=20, choices=RecordingStatusChoices.choices, - default=RecordingStatusChoices.ACTIVE, + default=RecordingStatusChoices.INITIATED, ) mode = models.CharField( max_length=20, @@ -407,8 +408,9 @@ class Recording(BaseModel): constraints = [ models.UniqueConstraint( fields=["room"], - condition=models.Q(status=RecordingStatusChoices.ACTIVE), - name="unique_active_recording_per_room", + condition=models.Q(status=RecordingStatusChoices.ACTIVE) + | models.Q(status=RecordingStatusChoices.INITIATED), + name="unique_initiated_or_active_recording_per_room", ) ]