From 37c0867ab7d4bbafc011925dcb0d4e00189ca78e Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 13 May 2025 02:48:56 +0300 Subject: [PATCH] Features: 1) Add support for `defaults` in `get_or_create` for `auto_resolver_helper`; 2) Modularize Sentry `ignore_errors` configuration with a dedicated variable; Fixes: None; Extra: 1) Minor code refactor to streamline `ignore_errors` handling in Sentry setup; --- core/vendors/__init__.py | 2 +- evibes/settings/base.py | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/core/vendors/__init__.py b/core/vendors/__init__.py index 5e291dce..85065064 100644 --- a/core/vendors/__init__.py +++ b/core/vendors/__init__.py @@ -102,7 +102,7 @@ class AbstractVendor: def auto_resolver_helper(model: type[Brand] | type[Category], resolving_name: str): queryset = model.objects.filter(name=resolving_name) if not queryset.exists(): - return model.objects.create(name=resolving_name, is_active=False) + return model.objects.get_or_create(name=resolving_name, defaults={"is_active": False}) elif queryset.filter(is_active=True).count() > 1: queryset = queryset.filter(is_active=True) elif queryset.filter(is_active=False).count() > 1: diff --git a/evibes/settings/base.py b/evibes/settings/base.py index 926eeec4..72c96fb7 100644 --- a/evibes/settings/base.py +++ b/evibes/settings/base.py @@ -294,6 +294,17 @@ if getenv("SENTRY_DSN"): from sentry_sdk.integrations.logging import LoggingIntegration from sentry_sdk.integrations.redis import RedisIntegration + ignore_errors = [ + "flower.views.error.NotFoundErrorHandler", + "django.http.response.Http404", + "billiard.exceptions.SoftTimeLimitExceeded", + "billiard.exceptions.WorkerLostError", + "core.models.Product.DoesNotExist", + "core.models.Category.DoesNotExist", + "core.models.Brand.DoesNotExist", + "blog.models.Post.DoesNotExist", + ] + sentry_sdk.init( dsn=getenv("SENTRY_DSN"), traces_sample_rate=1.0 if DEBUG else 0.2, @@ -305,15 +316,7 @@ if getenv("SENTRY_DSN"): environment="dev" if DEBUG else "prod", debug=DEBUG, release=f"evibes@{EVIBES_VERSION}", - ignore_errors=[ - "flower.views.error.NotFoundErrorHandler", - "django.http.response.Http404", - "billiard.exceptions.SoftTimeLimitExceeded", - "core.models.Product.DoesNotExist", - "core.models.Category.DoesNotExist", - "core.models.Brand.DoesNotExist", - "blog.models.Post.DoesNotExist", - ], + ignore_errors=ignore_errors, ) SESSION_COOKIE_HTTPONLY = True