first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 22:20:45 +03:00
commit d50f14bcb1
681 changed files with 65020 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
import random
import io
from django.core.management.base import BaseCommand
from django.core.files.base import ContentFile
from faker import Faker
from PIL import Image, ImageDraw
from portfolio.models import Portfolio, Category
class Command(BaseCommand):
help = 'Creates fake portfolio items with images using existing categories'
def generate_image(self, width, height, format='PNG'):
"""Generates a random image."""
color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
image = Image.new('RGB', (width, height), color)
draw = ImageDraw.Draw(image)
# Draw some random shapes
for _ in range(10):
shape_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
x1 = random.randint(0, width)
y1 = random.randint(0, height)
x2 = random.randint(0, width)
y2 = random.randint(0, height)
# Ensure coordinates are in the correct order (x0, y0, x1, y1)
draw.rectangle(
[min(x1, x2), min(y1, y2), max(x1, x2), max(y1, y2)],
fill=shape_color,
outline=None
)
img_io = io.BytesIO()
image.save(img_io, format=format)
return ContentFile(img_io.getvalue(), name=f'fake_image.{format.lower()}')
def handle(self, *args, **options):
fake = Faker()
# Fetch existing categories
categories = list(Category.objects.all())
if not categories:
self.stdout.write(self.style.WARNING('No categories found. Please create some categories first.'))
return
self.stdout.write(f'Found {len(categories)} categories. Creating portfolios...')
for i in range(20):
portfolio = Portfolio(
url=fake.url(),
is_active=True,
)
# Portfolio image: 640x481 (saving as PNG, model might convert to avif)
image_content = self.generate_image(640, 481, 'PNG')
portfolio.image.save(f'port_{i}.png', image_content, save=False)
portfolio.save()
# Assign random existing categories
# Ensure we don't try to sample more categories than exist
num_categories = min(len(categories), random.randint(1, 3))
portfolio.categories.set(random.sample(categories, k=num_categories))
self.stdout.write(self.style.SUCCESS('Successfully created fake portfolio items with images using existing categories.'))