@@ -11,7 +11,7 @@ from authentication.security import SyncAuthBearer, AsyncAuthBearer from ml_model.models import NeuronModel from ml_model.schemas import NeuronModelLink from tools.media.models import Preset, Voice -from tools.media.schemas import PresetSchema, VoiceSchema +from tools.media.schemas import PresetSchema, UpdateVoiceSchema, VoiceSchema from tools.media.typing import PresetKindEnum router = Router(auth=SyncAuthBearer(), tags=['media']) @@ -70,18 +70,13 @@ async def delete_voice(request, voice_id: UUID): auth=AsyncAuthBearer(), response={200: VoiceSchema, 400: str, 404: str}, ) -async def update_voice_title( - request, - voice_id: UUID, - title: str = Form(...), - transcription: str | None = Form(None), -): +async def update_voice_title(request, voice_id: UUID, body: UpdateVoiceSchema): try: voice = await Voice.objects.aget(uid=voice_id, user=request.auth) except Voice.DoesNotExist: raise HttpError(404, _('Voice not found')) - voice.title = title - voice.transcription = transcription + voice.title = body.title + voice.transcription = body.transcription await voice.asave() return voice @@ -3,6 +3,13 @@ from ninja import ModelSchema from tools.media.models import Preset, Voice +class UpdateVoiceSchema(ModelSchema): + class Meta: + model = Voice + fields = ('title', 'transcription') + fields_optional = ('transcription',) + + class VoiceSchema(ModelSchema): class Meta: model = Voice