diff --git a/back_latienda/settings/development.py b/back_latienda/settings/development.py index fda1182..57d96b8 100644 --- a/back_latienda/settings/development.py +++ b/back_latienda/settings/development.py @@ -21,9 +21,11 @@ DATABASES = { }, } -MEDIA_ROOT = BASE_DIR + '/../media/' MEDIA_URL = '/media/' +MEDIA_ROOT = BASE_DIR + '/../media/' GEOIP_PATH = BASE_DIR + '/../datasets/' +# MEDIA_ROOT = os.path.join(BASE_DIR, '/../media/') +# GEOIP_PATH = os.path.join(BASE_DIR, '/../datasets/') # JWT SETTINGS SIMPLE_JWT = { diff --git a/core/management/commands/addtestdata.py b/core/management/commands/addtestdata.py index fbccecc..ca88287 100644 --- a/core/management/commands/addtestdata.py +++ b/core/management/commands/addtestdata.py @@ -1,6 +1,7 @@ import logging import json import shutil +from io import BytesIO import requests @@ -8,6 +9,7 @@ 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 django.core.files.uploadedfile import InMemoryUploadedFile from faker import Faker from PIL import Image @@ -25,6 +27,7 @@ logging.basicConfig( level=logging.INFO, ) + class Command(BaseCommand): logo_url = "https://picsum.photos/300/200" @@ -61,44 +64,32 @@ class Command(BaseCommand): logging.info(f"Creating Products for {company.company_name}") # for i in range(100): for i in range(10): + # make up data 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' - + # TODO: apply automatic tags from tag list # TODO: write image to S3 storage - response = requests.get(self.logo_url, stream=True) - # import ipdb; ipdb.set_trace() - # write image to disk - ''' - if response.status_code == 200: - 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}") - ''' - - 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() + # create instance product = ProductFactory(name=name, description=description) - product.image.save( - image_path, - # image, - File(open(image_path, 'rb')), - save=True) # image=Image.open(image_path)) + + # get image + response = requests.get(self.logo_url, stream=True) + response.raw.decode_content = True + image = Image.open(response.raw) + + # read image from memory + img_io = BytesIO() + image.save(img_io, format='JPEG') + product.image = InMemoryUploadedFile( + BytesIO(), + field_name=None, + name=f"{company.company_name}-{name}.jpg", + content_type='image/jpeg', + size=img_io.tell, + charset=None + ) product.save() + logging.debug(f"New Product {product.name} created") print("*", end = '.') print('') diff --git a/products/tests.py b/products/tests.py index 0c79054..a71db66 100644 --- a/products/tests.py +++ b/products/tests.py @@ -485,7 +485,6 @@ class ProductSearchTest(TestCase): # check for filters self.assertNotEquals([], payload['filters']['singles']) self.assertTrue(len(payload['filters']) >= 2 ) - import ipdb; ipdb.set_trace() class MyProductsViewTest(APITestCase): diff --git a/products/utils.py b/products/utils.py index 13b04aa..7a08a70 100644 --- a/products/utils.py +++ b/products/utils.py @@ -15,7 +15,6 @@ def extract_search_filters(result_set): 'singles': set(), } for item in result_set: - # import ipdb; ipdb.set_trace() try: # extract tags tags = item.tags.all()