import logging import json import requests from django.core.management.base import BaseCommand from django.contrib.gis.geos import GEOSGeometry, MultiPolygon from faker import Faker from companies.factories import CompanyFactory from companies.models import Company from products.factories import ProductFactory from products.models import Product logging.basicConfig( filename='logs/addtestdata.log', filemode='w', format='%(levelname)s:%(message)s', level=logging.INFO, ) class Command(BaseCommand): logo_url = "https://picsum.photos/200/300" help = 'Creates fake companies and related products in database' def handle(self, *args, **kwargs): print("Create fake data to populate database\n") print("Deleting existing Product and Company instances") Product.objects.all().delete() Company.objects.all().delete() # start faker fake = Faker() Faker.seed(0) # companies created new_companies = [] logging.info("Creating fake companies") print("Creating fake companies") for i in range(10): name = f"{fake.company()} {fake.company_suffix()}" company = CompanyFactory(company_name=name) new_companies.append(company) logging.debug(f"New Company {company.company_name} created") print(f"\t- {name}") print('') logging.info("Creating fake products") # create and assign products to companies 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): name = fake.last_name_nonbinary() description = fake.paragraph(nb_sentences=5) # TODO: apply tags from tag list image= None """ # TODO: write image to S3 storage response = requests.get(self.logo_url) if response.status_code == 200: response.raw.decode_content = True image = response.raw else: logging.warning(f"Got {response.status_code} querying {self.logo_url}") """ product = ProductFactory(name=name, description=description, image=image) logging.debug(f"New Product {product.name} created") print("*", end = '.') print('') print("Dataset creation finished")