diff --git a/seed_db.py b/seed_db.py new file mode 100644 index 0000000..80e3513 --- /dev/null +++ b/seed_db.py @@ -0,0 +1,207 @@ +import os +import django +import random +from datetime import date, timedelta + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') +django.setup() + +from django.contrib.auth.models import User +from api.models import SupplierProfile, Product, Order, ReturnRequest, Wallet, WalletTransaction + +def seed(): + print("Clearing existing database tables...") + Product.objects.all().delete() + Order.objects.all().delete() + ReturnRequest.objects.all().delete() + WalletTransaction.objects.all().delete() + Wallet.objects.all().delete() + SupplierProfile.objects.all().delete() + User.objects.filter(username='demo_seller').delete() + + print("Creating demo seller user...") + user = User.objects.create_user( + username='demo_seller', + email='demo@example.com', + password='super_secure_pass_123' + ) + user.save() + + print("Creating supplier profile...") + profile = SupplierProfile.objects.create( + user=user, + phone='9876543210', + phone_verified=True, + email_verified=True, + gstin='29AAAAA1111A1Z1', + is_gstin_verified=True, + aadhar_file='aadhar_card.pdf', + pan_file='pan_card.pdf', + store_name='Teak Wood Craft Store', + business_bio='Premium teak wood hand carved decor and traditional textiles.', + street='123 Handloom Lane', + city='Textile Town', + state='Karnataka', + pincode='560001', + latitude=12.9716, + longitude=77.5946, + is_profile_complete=True + ) + profile.save() + + print("Creating initial product listings...") + products = [ + { + 'title': 'Handwoven Indigo Shawl', + 'category': 'Apparel', + 'price': 85.00, + 'stock': 45, + 'sku': 'SHAWL-IND-01', + 'image': 'https://images.unsplash.com/photo-1544022613-e87ca75a784a?auto=format&fit=crop&q=80&w=100' + }, + { + 'title': 'Terracotta Clay Pot Set', + 'category': 'Home Decor', + 'price': 42.00, + 'stock': 24, + 'sku': 'POT-TER-02', + 'image': 'https://images.unsplash.com/photo-1612196808214-b8e1d6145a8c?auto=format&fit=crop&q=80&w=100' + }, + { + 'title': 'Brass Elephant Figurine', + 'category': 'Sculptures', + 'price': 120.00, + 'stock': 12, + 'sku': 'FIG-ELE-03', + 'image': 'https://images.unsplash.com/photo-1590736969955-71cc94801759?auto=format&fit=crop&q=80&w=100' + } + ] + + for p in products: + Product.objects.create( + supplier=user, + title=p['title'], + category=p['category'], + price=p['price'], + stock=p['stock'], + sku=p['sku'], + image=p['image'] + ) + + print("Creating initial orders...") + orders = [ + { + 'order_id': 'ORD-8492', + 'date': date.today() - timedelta(days=2), + 'item': 'Handwoven Indigo Shawl', + 'quantity': 1, + 'customer': 'Alice Vance', + 'total': 85.00, + 'status': 'Ready to Ship', + 'carrier': 'DHL Express', + 'tracking': 'DHL-9284102', + 'eta': '3 Days' + }, + { + 'order_id': 'ORD-8488', + 'date': date.today() - timedelta(days=3), + 'item': 'Terracotta Clay Pot Set', + 'quantity': 2, + 'customer': 'David Miller', + 'total': 84.00, + 'status': 'Shipped', + 'carrier': 'FedEx Ground', + 'tracking': 'FDX-5829104', + 'eta': 'Delivered' + }, + { + 'order_id': 'ORD-8501', + 'date': date.today() - timedelta(days=1), + 'item': 'Brass Elephant Figurine', + 'quantity': 1, + 'customer': 'Bruce Wayne', + 'total': 120.00, + 'status': 'Pending Acceptance', + 'carrier': 'Pending', + 'tracking': 'Pending', + 'eta': 'N/A' + }, + { + 'order_id': 'ORD-8502', + 'date': date.today(), + 'item': 'Handwoven Indigo Shawl', + 'quantity': 2, + 'customer': 'Clark Kent', + 'total': 170.00, + 'status': 'Pending Acceptance', + 'carrier': 'Pending', + 'tracking': 'Pending', + 'eta': 'N/A' + } + ] + + for o in orders: + Order.objects.create( + supplier=user, + order_id=o['order_id'], + date=o['date'], + item=o['item'], + quantity=o['quantity'], + customer=o['customer'], + total=o['total'], + status=o['status'], + carrier=o['carrier'], + tracking=o['tracking'], + eta=o['eta'] + ) + + print("Creating customer returns...") + ReturnRequest.objects.create( + supplier=user, + return_id='RET-019', + order_id='ORD-8411', + customer='Lillian G.', + item='Handwoven Indigo Shawl', + reason='Slightly different shade than pictured', + status='Pending Approval', + image='https://images.unsplash.com/photo-1544022613-e87ca75a784a?auto=format&fit=crop&q=80&w=100', + returning_tracking='DHL-RET-9031' + ) + ReturnRequest.objects.create( + supplier=user, + return_id='RET-018', + order_id='ORD-8390', + customer='Robert H.', + item='Terracotta Clay Pot Set', + reason='Damaged in transit', + status='In Transit', + image='https://images.unsplash.com/photo-1612196808214-b8e1d6145a8c?auto=format&fit=crop&q=80&w=100', + returning_tracking='FDX-RET-2940' + ) + + print("Creating wallet and payout records...") + wallet = Wallet.objects.create( + supplier=user, + outstanding=850.00, + withdrawn=1250.00 + ) + + WalletTransaction.objects.create( + wallet=wallet, + tx_id='TX-9031', + date=date.today() - timedelta(days=8), + amount=500.00, + status='Transferred' + ) + WalletTransaction.objects.create( + wallet=wallet, + tx_id='TX-9022', + date=date.today() - timedelta(days=25), + amount=750.00, + status='Transferred' + ) + + print("Successfully seeded all dummy/mock data!") + +if __name__ == '__main__': + seed()