diff --git a/core/management/commands/addtestdata.py b/core/management/commands/addtestdata.py index c4ad2c0..fbccecc 100644 --- a/core/management/commands/addtestdata.py +++ b/core/management/commands/addtestdata.py @@ -1,12 +1,16 @@ import logging import json +import shutil import requests +from django.core.files import File from django.core.management.base import BaseCommand from django.contrib.gis.geos import GEOSGeometry, MultiPolygon +from django.conf import settings from faker import Faker +from PIL import Image from companies.factories import CompanyFactory from companies.models import Company @@ -23,7 +27,7 @@ logging.basicConfig( class Command(BaseCommand): - logo_url = "https://picsum.photos/200/300" + logo_url = "https://picsum.photos/300/200" help = 'Creates fake companies and related products in database' def handle(self, *args, **kwargs): @@ -55,23 +59,46 @@ class Command(BaseCommand): for company in new_companies: print("Creating fake products for {company.company_name}") logging.info(f"Creating Products for {company.company_name}") - for i in range(100): + # for i in range(100): + for i in range(10): name = fake.last_name_nonbinary() description = fake.paragraph(nb_sentences=5) # TODO: apply tags from tag list + image_path = settings.MEDIA_ROOT + company.company_name + '.jpg' - image= None - """ # TODO: write image to S3 storage - response = requests.get(self.logo_url) + response = requests.get(self.logo_url, stream=True) + # import ipdb; ipdb.set_trace() + # write image to disk + ''' if response.status_code == 200: - response.raw.decode_content = True - image = response.raw.read() + with open(image_path, 'wb') as f: + for chunk in response: + import ipdb; ipdb.set_trace() + # f.write(chunk)) else: logging.warning(f"Got {response.status_code} querying {self.logo_url}") - """ + ''' - product = ProductFactory(name=name, description=description, image=image) + if response.status_code == 200: + with open(image_path, 'wb') as f: + response.raw.decode_content = True + shutil.copyfileobj(response.raw, f) + image = response.raw.read() + else: + logging.warning(f"Got {response.status_code} querying {self.logo_url}") + continue + + image = Image.open(image_path) + + # import ipdb; ipdb.set_trace() + product = ProductFactory(name=name, description=description) + product.image.save( + image_path, + # image, + File(open(image_path, 'rb')), + save=True) # image=Image.open(image_path)) + product.save() logging.debug(f"New Product {product.name} created") print("*", end = '.') print('')