diff --git a/core/management/commands/delete_never_ordered_products.py b/core/management/commands/delete_never_ordered_products.py index c90e3533..84c94183 100644 --- a/core/management/commands/delete_never_ordered_products.py +++ b/core/management/commands/delete_never_ordered_products.py @@ -2,16 +2,24 @@ from django.core.management.base import BaseCommand from core.models import AttributeValue, Product, ProductImage -CHUNK_SIZE = 5000 - class Command(BaseCommand): help = "Delete Product rows with no OrderProduct, in batches" + def add_arguments(self, parser): + parser.add_argument( + "-s", + "--size", + required=False, + default=5000, + help="Chunk size to delete", + ) + def handle(self, *args, **options): + size = options["size"] while True: batch_ids = list( - Product.objects.filter(orderproduct__isnull=True).values_list("pk", flat=True)[:CHUNK_SIZE] + Product.objects.filter(orderproduct__isnull=True).values_list("pk", flat=True)[:size] ) if not batch_ids: break @@ -19,7 +27,8 @@ class Command(BaseCommand): AttributeValue.objects.filter(product_id__in=batch_ids).delete() ProductImage.objects.filter(product_id__in=batch_ids).delete() Product.objects.filter(pk__in=batch_ids).delete() - except Exception: + except Exception as e: + self.stdout.write("Couldn't delete some of the products(will retry later): %s" % str(e)) continue self.stdout.write(f"Deleted {len(batch_ids)} products…")