Files
consumocuidado-server/core/management/commands/addtestdata.py
2021-02-10 13:52:39 +00:00

79 lines
2.5 KiB
Python

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")