30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
|
|
from django.core.management.base import BaseCommand
|
||
|
|
|
||
|
|
from farm_hub.catalog import CATALOG_SEED_DATA
|
||
|
|
from farm_hub.models import FarmType, Product
|
||
|
|
|
||
|
|
|
||
|
|
class Command(BaseCommand):
|
||
|
|
help = "Seed farm types and products catalog data."
|
||
|
|
|
||
|
|
def handle(self, *args, **options):
|
||
|
|
farm_type_count = 0
|
||
|
|
product_count = 0
|
||
|
|
|
||
|
|
for farm_type_name, products in CATALOG_SEED_DATA.items():
|
||
|
|
farm_type, created = FarmType.objects.get_or_create(name=farm_type_name)
|
||
|
|
farm_type_count += int(created)
|
||
|
|
for product_data in products:
|
||
|
|
_, product_created = Product.objects.update_or_create(
|
||
|
|
farm_type=farm_type,
|
||
|
|
name=product_data["name"],
|
||
|
|
defaults={key: value for key, value in product_data.items() if key != "name"},
|
||
|
|
)
|
||
|
|
product_count += int(product_created)
|
||
|
|
|
||
|
|
self.stdout.write(
|
||
|
|
self.style.SUCCESS(
|
||
|
|
f"Farm catalog seeded successfully. Created farm types: {farm_type_count}, products: {product_count}."
|
||
|
|
)
|
||
|
|
)
|