parent
aa2cdbcca9
commit
1a181f7d0e
@ -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')) |
||||
Loading…
Reference in new issue