@@ -341,6 +341,13 @@ YANDEX_CLOUD_ID = env.str('YANDEX_CLOUD_ID', 'defaultapikey') OPENAI_PROXY_HOST = env.str('OPENAI_PROXY_HOST', 'neuron-proxy:8080') UPSCALE_MULTIPLIER_HOST = env.str('UPSCALE_MULTIPLIER_HOST', 'packet:8080') + +MAX_UPLOAD_SIZE_PER_MODEL = { + 'raifgpt': 50, + 'default': 8, +} + + # Payments YOOKASSA_ACCOUNT_ID = env.str('YOOKASSA_ACCOUNT_ID', default='defaultapikey') YOOKASSA_SECRET_KEY = env.str('YOOKASSA_SECRET_KEY', default='defaultapikey') @@ -1,4 +1,7 @@ -from django.core.files.uploadedfile import UploadedFile +from typing import Dict, Any + +from backend import settings + from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from rest_framework.serializers import ValidationError @@ -35,10 +38,15 @@ class MessageSerializer(serializers.ModelSerializer): 'info', ] - def validate_file(self, file: UploadedFile | None) -> UploadedFile: - max_mb_size = 52 + def validate(self, data: Dict[str, Any]) -> Dict[str, Any]: + file = data.get('file') + version = data.get('info').get('version') + max_mb_size = settings.MAX_UPLOAD_SIZE_PER_MODEL.get( + version, + settings.MAX_UPLOAD_SIZE_PER_MODEL['default'] + ) if file and file.size > (max_mb_size << 10 << 10): raise ValidationError( _('The file size cannot exceed %(max_mb_size)d MB') % {'max_mb_size': max_mb_size} ) - return file + return data