@@ -1351,6 +1351,10 @@ msgstr "Пресет" msgid "Presets" msgstr "Пресеты" +#: tools/media/models.py:0 +msgid "Instrumental" +msgstr "Инструментал" + #: tools/media/models.py:88 msgid "Only MP3, OGG, and WAV audio files are allowed." msgstr "Разрешены только аудиофайлы MP3, OGG и WAV." @@ -0,0 +1,18 @@ +# Generated by Django 5.0.11 on 2026-04-02 09:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('media', '0005_remove_preset_id_preset_created_at_preset_uid_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='preset', + name='kind', + field=models.CharField(choices=[('voice', 'Voice'), ('instrumental', 'Instrumental')], default='voice', max_length=20, verbose_name='Kind'), + ), + ] @@ -12,6 +12,7 @@ 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.typing import PresetKindEnum router = Router(auth=SyncAuthBearer(), tags=['media']) @@ -80,5 +81,6 @@ async def update_voice_title(request, voice_id: UUID, title: str): auth=AsyncAuthBearer(), response=List[PresetSchema], ) -async def list_presets(request): - return [preset async for preset in Preset.objects.all()] +async def list_presets(request, kind: PresetKindEnum | None = None): + qs = Preset.objects.filter(kind=kind) if kind else Preset.objects.all() + return [preset async for preset in qs] @@ -50,8 +50,19 @@ def message_file_upload(instance: 'Preset', filename: str): return f'{filename}' +class PresetKind(models.TextChoices): + VOICE = ('voice', _('Voice')) + INSTRUMENTAL = ('instrumental', _('Instrumental')) + + class Preset(BaseModel): title = models.CharField(max_length=50, verbose_name=_('Title')) + kind = models.CharField( + max_length=20, + verbose_name=_('Kind'), + choices=PresetKind.choices, + default=PresetKind.VOICE, + ) slug = models.SlugField( verbose_name=_('Slug'), unique=True, @@ -0,0 +1,6 @@ +from enum import Enum + + +class PresetKindEnum(str, Enum): + voice = 'voice' + instrumental = 'instrumental' \ No newline at end of file