45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from django.core.management.base import BaseCommand
|
|
from django.db import transaction
|
|
|
|
from mandelstudio.idea_marketplace import seed_idea_marketplace_products
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = (
|
|
"Seed production-ready Oscar idea products and remove obvious demo products "
|
|
"from the catalogue. By default, this also retires non-idea products from public "
|
|
"listing."
|
|
)
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument(
|
|
"--keep-demo-products",
|
|
action="store_true",
|
|
help="Do not delete demo/sample products.",
|
|
)
|
|
parser.add_argument(
|
|
"--keep-non-idea-products-public",
|
|
action="store_true",
|
|
help="Do not retire non-idea products from public listing.",
|
|
)
|
|
|
|
@transaction.atomic
|
|
def handle(self, *args, **options):
|
|
purge_demo = not options["keep_demo_products"]
|
|
retire_non_idea = not options["keep_non_idea_products_public"]
|
|
stats = seed_idea_marketplace_products(
|
|
purge_demo_products=purge_demo,
|
|
retire_non_idea_products=retire_non_idea,
|
|
)
|
|
self.stdout.write(
|
|
self.style.SUCCESS(
|
|
"Idea marketplace seeded: "
|
|
f"created={stats['created']}, "
|
|
f"updated={stats['updated']}, "
|
|
f"deleted_demo={stats['deleted_demo']}, "
|
|
f"retired_non_idea={stats['retired_non_idea']}"
|
|
)
|
|
)
|