From 61033a58d643a74c02fbec928419e8111616343b Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Fri, 27 Jun 2025 02:19:54 +0300 Subject: [PATCH] Features: 1) Add `method` parameter to `prepare_for_stock_update` to support multiple actions (deactivate, delete, update description); Fixes: None; Extra: 1) Add `QuerySet` import to support type hinting; 2) Improve error handling with descriptive `ValueError` for invalid method. --- core/vendors/__init__.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/core/vendors/__init__.py b/core/vendors/__init__.py index 216c03b6..78a30e98 100644 --- a/core/vendors/__init__.py +++ b/core/vendors/__init__.py @@ -283,8 +283,18 @@ class AbstractVendor: product__in=self.get_products_queryset(), product__orderproduct__isnull=True ) - def prepare_for_stock_update(self): - self.get_products_queryset().update(is_active=False) + def prepare_for_stock_update(self, method: str = "deactivate") -> None: + products = self.get_products_queryset() + + match method: + case "deactivate": + products.update(is_active=False) + case "delete": + products.delete() + case "description": + products.update(description="EVIBES_DELETED_PRODUCT") + case _: + raise ValueError(f"Invalid method {method!r} for stock update...") def delete_inactives(self): self.get_products_queryset().filter(is_active=False).delete()