diff --git a/shop/management/commands/__init__.py b/shop/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/shop/management/commands/create_initial_shop_data.py b/shop/management/commands/create_initial_shop_data.py new file mode 100644 index 0000000..8e90930 --- /dev/null +++ b/shop/management/commands/create_initial_shop_data.py @@ -0,0 +1,114 @@ +from django.core.management.base import BaseCommand +from shop.models import Color, Size, Product +from django.core.files.base import ContentFile +import os +import urllib.request + +class Command(BaseCommand): + help = 'Creates initial data for the shop' + + def handle(self, *args, **kwargs): + # Create colors + self.stdout.write('Creating colors...') + colors = { + 'Black': '#000000', + 'White': '#FFFFFF', + 'Red': '#FF0000', + 'Blue': '#0000FF', + 'Green': '#00FF00', + 'Yellow': '#FFFF00' + } + + color_objects = {} + for name, hex_code in colors.items(): + color, created = Color.objects.get_or_create( + name=name, + defaults={'colorHex': hex_code} + ) + color_objects[name] = color + if created: + self.stdout.write(f'Created color: {name}') + else: + self.stdout.write(f'Color already exists: {name}') + + # Create sizes + self.stdout.write('Creating sizes...') + sizes = ['XS', 'S', 'M', 'L', 'XL', 'XXL'] + + size_objects = {} + for name in sizes: + size, created = Size.objects.get_or_create(name=name) + size_objects[name] = size + if created: + self.stdout.write(f'Created size: {name}') + else: + self.stdout.write(f'Size already exists: {name}') + + # Create products + self.stdout.write('Creating products...') + products = [ + { + 'title': 'Tennis Racket Pro', + 'price': 99.99, + 'ordering_value': 1, + 'cut': 2, # Men + 'colors': ['Black', 'White', 'Red'], + 'sizes': ['M', 'L', 'XL'], + 'image_url': 'https://example.com/images/tennis_racket.jpg' + }, + { + 'title': 'Sports T-Shirt', + 'price': 29.99, + 'ordering_value': 2, + 'cut': 1, # Women + 'colors': ['Black', 'White', 'Blue', 'Red'], + 'sizes': ['XS', 'S', 'M', 'L', 'XL'], + 'image_url': 'https://example.com/images/tshirt.jpg' + }, + { + 'title': 'Kids Tennis Shorts', + 'price': 19.99, + 'ordering_value': 3, + 'cut': 3, # Kids + 'colors': ['Blue', 'White'], + 'sizes': ['XS', 'S', 'M'], + 'image_url': 'https://example.com/images/kids_shorts.jpg' + } + ] + + for product_data in products: + product, created = Product.objects.get_or_create( + title=product_data['title'], + defaults={ + 'price': product_data['price'], + 'ordering_value': product_data['ordering_value'], + 'cut': product_data['cut'] + } + ) + + if created: + self.stdout.write(f'Created product: {product_data["title"]}') + + # Add colors + for color_name in product_data['colors']: + product.colors.add(color_objects[color_name]) + + # Add sizes + for size_name in product_data['sizes']: + product.sizes.add(size_objects[size_name]) + + # Add image (commented out, use if needed) + """ + try: + result = urllib.request.urlretrieve(product_data['image_url']) + product.image.save( + os.path.basename(product_data['image_url']), + ContentFile(open(result[0], 'rb').read()) + ) + except Exception as e: + self.stdout.write(f'Error downloading image: {e}') + """ + else: + self.stdout.write(f'Product already exists: {product_data["title"]}') + + self.stdout.write(self.style.SUCCESS('Successfully created initial shop data'))