diff --git a/datasets/test_products.csv b/datasets/test_products.csv index d3ee8b5..68499ce 100644 --- a/datasets/test_products.csv +++ b/datasets/test_products.csv @@ -1 +1,10 @@ -id,nombre-producto,descripcion,imagen,url,precio,gastos-envio,cond-envio,descuento,stock,tags,categoria,identificadores \ No newline at end of file +id,nombre-producto,descripcion,imagen,url,precio,gastos-envio,cond-envio,descuento,stock,tags,categoria,identificadores +,,mi-descripcion,,coop.com,10.00,5.01,"condiciones de envio, una cosa, y la otra",4.05,1000,"color/rojo, talla/xxl", limpio, "alto, forma/redondo" +,mi-nombre,,,coop.com,10.00,5.01,"condiciones de envio, una cosa, y la otra",4.05,1000,"color/rojo, talla/xxl", limpio, "alto, forma/redondo" +,mi-nombre,mi-descripcion,,coop.com,,5.01,"condiciones de envio, una cosa, y la otra",4.05,1000,"color/rojo, talla/xxl", limpio, "alto, forma/redondo" +,mi-nombre,mi-descripcion,,coop.com,10.00,5.01,"condiciones de envio, una cosa, y la otra",4.05,1000,"color/rojo, talla/xxl", limpio, "alto, forma/redondo" +,mi-nombre,mi-descripcion,,coop.com,10.00,5.01,"condiciones de envio, una cosa, y la otra",4.05,1000,"color/rojo, talla/xxl", limpio, "alto, forma/redondo" +,mi-nombre,mi-descripcion,,coop.com,10.00,5.01,"condiciones de envio, una cosa, y la otra",4.05,1000,"color/rojo, talla/xxl", limpio, "alto, forma/redondo" +,mi-nombre,mi-descripcion,,coop.com,10.00,5.01,"condiciones de envio, una cosa, y la otra",4.05,1000,"color/rojo, talla/xxl", limpio, "alto, forma/redondo" +,mi-nombre,mi-descripcion,,coop.com,10.00,5.01,"condiciones de envio, una cosa, y la otra",4.05,1000,"color/rojo, talla/xxl", limpio, "alto, forma/redondo" +,mi-nombre,mi-descripcion,,coop.com,10.00,5.01,"condiciones de envio, una cosa, y la otra",4.05,1000,"color/rojo, talla/xxl" \ No newline at end of file diff --git a/products/views.py b/products/views.py index 39789e7..d4af09b 100644 --- a/products/views.py +++ b/products/views.py @@ -14,6 +14,7 @@ import requests from products.models import Product from products.serializers import ProductSerializer +from companies.models import Company from back_latienda.permissions import IsCreator @@ -48,33 +49,38 @@ def load_coop_products(request): decoded_file = csv_file.read().decode('utf-8').splitlines() csv_reader = csv.DictReader(decoded_file, delimiter=',') counter = 0 + for row in csv_reader: - if '' in (row['nombre-producto'], row['descripcion'], row['precio']): + if '' in (row['nombre-producto'], row['descripcion'], row['precio'], row['categoria']): logging.error(f"Required data missing: {row}") continue try: # download image references in csv - image_url = row['image'].strip() - response = requests.get(image_url, stream=True) - if response.status_code == 200: - path = f"{setting.BASE_DIR}media/{row['nombre-producto'].strip()}.{image.url.split('/')[-1]}" - logging.info(f"Saving product image to: {path}") - new_image = open(path, 'wb') - for chunk in response: - new_image.write(chunk) - new_image.close() + if row['imagen'].strip() != '': + image_url = row['imagen'].strip() + response = requests.get(image_url, stream=True) + if response.status_code == 200: + path = f"{setting.BASE_DIR}media/{row['nombre-producto'].strip()}.{image.url.split('/')[-1]}" + logging.info(f"Saving product image to: {path}") + new_image = open(path, 'wb') + for chunk in response: + new_image.write(chunk) + new_image.close() + else: + logging.warning(f"Image URL did not work: {image_url}") + new_image = None else: - logging.warninig(f"Image URL did not work: {image_url}") new_image = None # assemble instance data + product_data = { 'id': None if row['id'].strip()=='' else row['id'].strip(), - 'name': row['nombre-coop'].strip(), - 'short_name': row['nombre-producto'].strip(), + 'company': Company.objects.filter(creator=request.user).first(), + 'name': row['nombre-producto'].strip(), 'description': row['descripcion'].strip(), 'image': new_image, 'url': row['url'].strip(), - 'precio': row['precio'].strip(), + 'price': row['precio'].strip(), 'shipping_cost': row['gastos-envio'].strip(), 'shipping_terms': row['cond-envio'].strip(), 'discount': row['descuento'].strip(), @@ -83,6 +89,7 @@ def load_coop_products(request): 'category': row['categoria'].strip(), 'identifiers': row['identificadores'].strip(), } + Product.objects.create(**product_data) logging.info(f"Created Product: {product_data}") counter += 1