From d17839abed1d3ae9ed4da77a2468c00e984ee6f1 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 2 Jul 2025 17:28:05 +0300 Subject: [PATCH] Features: 1) Implement safeguard to trim `resolving_name` exceeding 255 characters; 2) Introduce character limit enforcement for `key` within Attribute creation; Fixes: 1) None; Extra: Refactor handling of oversized strings to improve robustness and avoid potential errors; --- core/vendors/__init__.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/vendors/__init__.py b/core/vendors/__init__.py index c188b966..61933bd3 100644 --- a/core/vendors/__init__.py +++ b/core/vendors/__init__.py @@ -148,6 +148,8 @@ class AbstractVendor: def auto_resolver_helper(model: Brand | Category, resolving_name: str) -> Brand | Category | None: queryset = model.objects.filter(name=resolving_name) if not queryset.exists(): + if len(resolving_name) > 255: + resolving_name = resolving_name[:255] return model.objects.get_or_create(name=resolving_name, defaults={"is_active": False})[0] elif queryset.filter(is_active=True).count() > 1: queryset = queryset.filter(is_active=True) @@ -326,6 +328,9 @@ class AbstractVendor: is_created = False + if len(key) > 255: + key = key[:255] + try: attribute, is_created = Attribute.objects.get_or_create( name=key,