Replace all ~1,086 occurrences of Wizamart/wizamart/WIZAMART/WizaMart with Orion/orion/ORION across 184 files. This includes database identifiers, email addresses, domain references, R2 bucket names, DNS prefixes, encryption salt, Celery app name, config defaults, Docker configs, CI configs, documentation, seed data, and templates. Renames homepage-wizamart.html template to homepage-orion.html. Fixes duplicate file_pattern key in api.yaml architecture rule. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
96 lines
2.3 KiB
Python
Executable File
96 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Create Inventory Entries for Products
|
|
|
|
This script creates inventory entries for all products that don't have inventory.
|
|
Each product gets 100 units in stock.
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Add project root to path
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
import os
|
|
import sqlite3
|
|
from datetime import UTC, datetime
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
# Load environment variables
|
|
load_dotenv()
|
|
|
|
# Get database URL
|
|
database_url = os.getenv("DATABASE_URL", "orion.db")
|
|
db_path = database_url.replace("sqlite:///", "")
|
|
|
|
print(f"📦 Creating inventory entries in {db_path}...")
|
|
|
|
conn = sqlite3.connect(db_path)
|
|
cursor = conn.cursor()
|
|
|
|
# Get products without inventory
|
|
cursor.execute(
|
|
"""
|
|
SELECT p.id, p.store_id, p.product_id
|
|
FROM products p
|
|
LEFT JOIN inventory i ON p.id = i.product_id
|
|
WHERE i.id IS NULL
|
|
"""
|
|
)
|
|
products_without_inventory = cursor.fetchall()
|
|
|
|
if not products_without_inventory:
|
|
print("✅ All products already have inventory entries")
|
|
conn.close()
|
|
sys.exit(0)
|
|
|
|
print(f"📦 Creating inventory for {len(products_without_inventory)} products...")
|
|
|
|
# Create inventory entries
|
|
for product_id, store_id, _sku in products_without_inventory:
|
|
cursor.execute(
|
|
"""
|
|
INSERT INTO inventory (
|
|
store_id,
|
|
product_id,
|
|
location,
|
|
quantity,
|
|
reserved_quantity,
|
|
created_at,
|
|
updated_at
|
|
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
""",
|
|
(
|
|
store_id,
|
|
product_id,
|
|
"Main Warehouse",
|
|
100, # Total quantity
|
|
0, # Reserved quantity
|
|
datetime.now(UTC),
|
|
datetime.now(UTC),
|
|
),
|
|
)
|
|
|
|
conn.commit()
|
|
|
|
print(f"✅ Created inventory entries for {len(products_without_inventory)} products")
|
|
|
|
# Show stats
|
|
cursor.execute("SELECT COUNT(*) FROM inventory")
|
|
total_count = cursor.fetchone()[0]
|
|
print(f"\n📊 Total inventory entries: {total_count}")
|
|
|
|
cursor.execute(
|
|
"SELECT product_id, location, quantity, reserved_quantity FROM inventory LIMIT 5"
|
|
)
|
|
print("\n📦 Sample inventory:")
|
|
for row in cursor.fetchall():
|
|
available = row[2] - row[3]
|
|
print(f" Product ID {row[0]}: {available} available at {row[1]}")
|
|
|
|
conn.close()
|
|
|
|
print("\n✅ Done!")
|