♻️(backend) encapsulate recording key and extension logic as properties

Move logic for calculating recording keys and file extensions into proper
properties on recording objects. Simplifies access to Minio storage keys
and clearly documents expected behavior when saving recordings across the
application.
This commit is contained in:
lebaudantoine
2025-04-11 13:50:30 +02:00
committed by aleb_the_flash
parent d74dd967af
commit 3671f2a0dd
3 changed files with 53 additions and 4 deletions
+17
View File
@@ -18,6 +18,8 @@ from django.utils.translation import gettext_lazy as _
from timezone_field import TimeZoneField
from .recording.enums import FileExtension
logger = getLogger(__name__)
@@ -576,6 +578,21 @@ class Recording(BaseModel):
RecordingStatusChoices.STOPPED,
}
@property
def extension(self):
"""Get recording extension based on its mode."""
extensions = {
RecordingModeChoices.TRANSCRIPT: FileExtension.OGG.value,
RecordingModeChoices.SCREEN_RECORDING: FileExtension.MP4.value,
}
return extensions.get(self.mode, FileExtension.MP4.value)
@property
def key(self):
"""Generate the file key based on recording mode."""
return f"{settings.RECORDING_OUTPUT_FOLDER}/{self.id}.{self.extension}"
class RecordingAccess(BaseAccess):
"""Relation model to give access to a recording for a user or a team with a role."""