From dbc9fe87c6d06651a976e7e98b7b8ec4ae09153c Mon Sep 17 00:00:00 2001 From: Mandel Olaiya Date: Mon, 6 Apr 2026 02:38:02 +0200 Subject: [PATCH] Make demo purge independent of Elasticsearch --- .../management/commands/purge_demo_data.py | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/mandelstudio/management/commands/purge_demo_data.py b/mandelstudio/management/commands/purge_demo_data.py index 2e079b3..6e75f46 100644 --- a/mandelstudio/management/commands/purge_demo_data.py +++ b/mandelstudio/management/commands/purge_demo_data.py @@ -94,6 +94,10 @@ class Command(BaseCommand): def _purge_products(self, *, dry_run: bool, keep_only_idea_products: bool) -> int: from oscar.core.loading import get_model + from oscar_elasticsearch.search.signal_handlers import ( + deregister_signal_handlers, + register_signal_handlers, + ) Product = get_model("catalogue", "Product") products = Product.objects.all() @@ -110,11 +114,20 @@ class Command(BaseCommand): removed = 0 iterable = candidates if isinstance(candidates, list) else list(candidates) - for product in iterable: - removed += 1 - self.stdout.write( - f"PRODUCT {'[dry-run] ' if dry_run else ''}delete id={product.id} title={product.title}" - ) - if not dry_run: + if dry_run: + for product in iterable: + removed += 1 + self.stdout.write( + f"PRODUCT [dry-run] delete id={product.id} title={product.title}" + ) + return removed + + deregister_signal_handlers() + try: + for product in iterable: + removed += 1 + self.stdout.write(f"PRODUCT delete id={product.id} title={product.title}") product.delete() + finally: + register_signal_handlers() return removed