Spaces:
Sleeping
Sleeping
| from django.core.management.base import BaseCommand | |
| from fitting_system.models import Size, Color, Product, ProductVariant, Inventory | |
| class Command(BaseCommand): | |
| help = 'Populate database with initial data for testing' | |
| def handle(self, *args, **kwargs): | |
| self.stdout.write('Populating database with initial data...') | |
| # Create Sizes | |
| self.stdout.write('Creating sizes...') | |
| sizes_data = [ | |
| {'name': 'S', 'chest_min': 85, 'chest_max': 92, 'waist_min': 70, 'waist_max': 77, | |
| 'shoulder_min': 40, 'shoulder_max': 43, 'height_min': 160, 'height_max': 170}, | |
| {'name': 'M', 'chest_min': 93, 'chest_max': 100, 'waist_min': 78, 'waist_max': 85, | |
| 'shoulder_min': 44, 'shoulder_max': 47, 'height_min': 168, 'height_max': 178}, | |
| {'name': 'L', 'chest_min': 101, 'chest_max': 108, 'waist_min': 86, 'waist_max': 93, | |
| 'shoulder_min': 48, 'shoulder_max': 51, 'height_min': 175, 'height_max': 185}, | |
| {'name': 'XL', 'chest_min': 109, 'chest_max': 116, 'waist_min': 94, 'waist_max': 101, | |
| 'shoulder_min': 52, 'shoulder_max': 55, 'height_min': 180, 'height_max': 190}, | |
| {'name': 'XXL', 'chest_min': 117, 'chest_max': 125, 'waist_min': 102, 'waist_max': 110, | |
| 'shoulder_min': 56, 'shoulder_max': 60, 'height_min': 185, 'height_max': 195}, | |
| ] | |
| for size_data in sizes_data: | |
| Size.objects.get_or_create(name=size_data['name'], defaults=size_data) | |
| # Create Colors | |
| self.stdout.write('Creating colors...') | |
| colors_data = [ | |
| # Light skin tone colors | |
| {'name': 'Pastel Pink', 'hex_code': '#FFD1DC', 'category': 'light'}, | |
| {'name': 'Light Blue', 'hex_code': '#ADD8E6', 'category': 'light'}, | |
| {'name': 'Lavender', 'hex_code': '#E6E6FA', 'category': 'light'}, | |
| {'name': 'Mint Green', 'hex_code': '#98FF98', 'category': 'light'}, | |
| # Medium skin tone colors | |
| {'name': 'Earth Brown', 'hex_code': '#8B4513', 'category': 'medium'}, | |
| {'name': 'Olive Green', 'hex_code': '#808000', 'category': 'medium'}, | |
| {'name': 'Burgundy', 'hex_code': '#800020', 'category': 'medium'}, | |
| {'name': 'Mustard Yellow', 'hex_code': '#FFDB58', 'category': 'medium'}, | |
| # Dark skin tone colors | |
| {'name': 'Bright White', 'hex_code': '#FFFFFF', 'category': 'dark'}, | |
| {'name': 'Vibrant Red', 'hex_code': '#FF0000', 'category': 'dark'}, | |
| {'name': 'Electric Blue', 'hex_code': '#7DF9FF', 'category': 'dark'}, | |
| {'name': 'Sunny Yellow', 'hex_code': '#FFD700', 'category': 'dark'}, | |
| # Neutral colors | |
| {'name': 'Black', 'hex_code': '#000000', 'category': 'neutral'}, | |
| {'name': 'White', 'hex_code': '#FFFFFF', 'category': 'neutral'}, | |
| {'name': 'Gray', 'hex_code': '#808080', 'category': 'neutral'}, | |
| {'name': 'Navy Blue', 'hex_code': '#000080', 'category': 'neutral'}, | |
| ] | |
| for color_data in colors_data: | |
| Color.objects.get_or_create(name=color_data['name'], defaults=color_data) | |
| # Create Products | |
| self.stdout.write('Creating products...') | |
| products_data = [ | |
| # Men's products | |
| {'name': 'Classic Cotton Shirt', 'category': 'shirt', 'fit_type': 'regular', 'gender': 'men', | |
| 'price': 49.99, 'description': 'A timeless classic cotton shirt perfect for any occasion. Made from 100% premium cotton for maximum comfort.'}, | |
| {'name': 'Slim Fit Dress Shirt', 'category': 'shirt', 'fit_type': 'slim', 'gender': 'men', | |
| 'price': 59.99, 'description': 'Modern slim fit dress shirt with a tailored silhouette. Perfect for professional settings.'}, | |
| {'name': 'Casual Denim Jeans', 'category': 'pants', 'fit_type': 'regular', 'gender': 'men', | |
| 'price': 79.99, 'description': 'Comfortable denim jeans with a classic fit. Durable and stylish for everyday wear.'}, | |
| {'name': 'Slim Fit Chinos', 'category': 'pants', 'fit_type': 'slim', 'gender': 'men', | |
| 'price': 69.99, 'description': 'Versatile slim fit chinos that pair well with any outfit. Perfect blend of style and comfort.'}, | |
| {'name': 'Leather Jacket', 'category': 'jacket', 'fit_type': 'regular', 'gender': 'men', | |
| 'price': 199.99, 'description': 'Premium leather jacket with a classic design. Timeless piece that never goes out of style.'}, | |
| # Women's products | |
| {'name': 'Elegant Blouse', 'category': 'shirt', 'fit_type': 'regular', 'gender': 'women', | |
| 'price': 54.99, 'description': 'Sophisticated blouse with delicate details. Perfect for both office and evening wear.'}, | |
| {'name': 'Fitted Blazer', 'category': 'jacket', 'fit_type': 'slim', 'gender': 'women', | |
| 'price': 129.99, 'description': 'Tailored blazer that adds polish to any outfit. Professional yet stylish.'}, | |
| {'name': 'High-Waist Trousers', 'category': 'pants', 'fit_type': 'regular', 'gender': 'women', | |
| 'price': 74.99, 'description': 'Flattering high-waist trousers with a comfortable fit. Versatile for any occasion.'}, | |
| {'name': 'Summer Dress', 'category': 'dress', 'fit_type': 'regular', 'gender': 'women', | |
| 'price': 89.99, 'description': 'Light and breezy summer dress perfect for warm weather. Comfortable and stylish.'}, | |
| {'name': 'Pencil Skirt', 'category': 'skirt', 'fit_type': 'slim', 'gender': 'women', | |
| 'price': 49.99, 'description': 'Classic pencil skirt with a flattering silhouette. Essential wardrobe piece.'}, | |
| ] | |
| products = [] | |
| for product_data in products_data: | |
| product, created = Product.objects.get_or_create( | |
| name=product_data['name'], | |
| defaults=product_data | |
| ) | |
| products.append(product) | |
| # Create Product Variants and Inventory | |
| self.stdout.write('Creating product variants and inventory...') | |
| sizes = Size.objects.all() | |
| colors = Color.objects.all()[:8] # Use first 8 colors | |
| for product in products: | |
| # Create 2-3 size variants per product | |
| product_sizes = list(sizes)[1:4] # M, L, XL | |
| product_colors = list(colors)[:3] # First 3 colors | |
| counter = 1 | |
| for size in product_sizes: | |
| for color in product_colors: | |
| sku = f"{product.id}-{size.name}-{color.id}-{counter}" | |
| variant, created = ProductVariant.objects.get_or_create( | |
| product=product, | |
| size=size, | |
| color=color, | |
| defaults={'sku': sku} | |
| ) | |
| counter += 1 | |
| # Create inventory for this variant | |
| if created: | |
| import random | |
| quantity = random.randint(0, 20) # Random stock between 0-20 | |
| Inventory.objects.create( | |
| product_variant=variant, | |
| quantity=quantity, | |
| low_stock_threshold=5 | |
| ) | |
| self.stdout.write(self.style.SUCCESS('Successfully populated database!')) | |
| self.stdout.write(f'Created {Size.objects.count()} sizes') | |
| self.stdout.write(f'Created {Color.objects.count()} colors') | |
| self.stdout.write(f'Created {Product.objects.count()} products') | |
| self.stdout.write(f'Created {ProductVariant.objects.count()} product variants') | |
| self.stdout.write(f'Created {Inventory.objects.count()} inventory records') | |