diff --git a/.vscode/PythonImportHelper-v2-Completion.json b/.vscode/PythonImportHelper-v2-Completion.json index f79ecd6..7dd0d90 100644 --- a/.vscode/PythonImportHelper-v2-Completion.json +++ b/.vscode/PythonImportHelper-v2-Completion.json @@ -522,6 +522,14 @@ "detail": "django.core.exceptions", "documentation": {} }, + { + "label": "ValidationError", + "importPath": "django.core.exceptions", + "description": "django.core.exceptions", + "isExtraImport": true, + "detail": "django.core.exceptions", + "documentation": {} + }, { "label": "django_filters", "kind": 6, @@ -1121,10 +1129,19 @@ "kind": 6, "importPath": "back.object.serializers", "description": "back.object.serializers", - "peekOfCode": "class ClickableAreaSerializer(serializers.ModelSerializer):\n class Meta:\n model = ClickableArea\n fields = \"__all__\"", + "peekOfCode": "class ClickableAreaSerializer(serializers.ModelSerializer):\n class Meta:\n model = ClickableArea\n fields = ['image']", "detail": "back.object.serializers", "documentation": {} }, + { + "label": "validate_image_size", + "kind": 2, + "importPath": "back.object.validators", + "description": "back.object.validators", + "peekOfCode": "def validate_image_size(image):\n max_size = 2 * 1024 * 1024 # Максимальный размер файла в байтах (2MB)\n if image.file.size > max_size:\n raise ValidationError(f\"Размер файла не должен превышать {max_size / (1024 * 1024)}MB\")", + "detail": "back.object.validators", + "documentation": {} + }, { "label": "NumberInFilter", "kind": 6, diff --git a/back/object/models.py b/back/object/models.py index 1e52b30..c558502 100644 --- a/back/object/models.py +++ b/back/object/models.py @@ -1,7 +1,11 @@ from PIL import Image from django.db import models from django.core.validators import MinValueValidator, MaxValueValidator +<<<<<<< HEAD from django.core.exceptions import ValidationError +======= +from .validators import validate_image_size +>>>>>>> 7a21fd252e5a313c5b0016012151e6a6b25378da import logging logger = logging.getLogger("root") @@ -79,6 +83,7 @@ class ClickableArea(models.Model): Element3D, on_delete=models.PROTECT, ) +<<<<<<< HEAD image = models.ImageField( "Картинка", upload_to=group_based_upload_to, @@ -89,5 +94,9 @@ class ClickableArea(models.Model): null=True, ) +======= + image = models.ImageField(upload_to='images/', validators=[validate_image_size], blank=True, null=True) + +>>>>>>> 7a21fd252e5a313c5b0016012151e6a6b25378da def __str__(self): return self.name diff --git a/back/object/serializers.py b/back/object/serializers.py index 3c40d60..8890b7d 100644 --- a/back/object/serializers.py +++ b/back/object/serializers.py @@ -25,6 +25,6 @@ class Scene3DSerializer(serializers.ModelSerializer): class ClickableAreaSerializer(serializers.ModelSerializer): class Meta: model = ClickableArea - fields = "__all__" + fields = ['image'] diff --git a/back/object/validators.py b/back/object/validators.py new file mode 100644 index 0000000..b294a99 --- /dev/null +++ b/back/object/validators.py @@ -0,0 +1,6 @@ +from django.core.exceptions import ValidationError + +def validate_image_size(image): + max_size = 2 * 1024 * 1024 # Максимальный размер файла в байтах (2MB) + if image.file.size > max_size: + raise ValidationError(f"Размер файла не должен превышать {max_size / (1024 * 1024)}MB") \ No newline at end of file