massive load of products working

This commit is contained in:
Sam
2021-02-03 13:00:08 +00:00
parent b7ab7eb5d3
commit b4eaa0f287
2 changed files with 31 additions and 15 deletions

View File

@@ -1 +1,10 @@
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"
Can't render this file because it has a wrong number of fields in line 10.

View File

@@ -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,13 +49,15 @@ 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()
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]}"
@@ -64,17 +67,20 @@ def load_coop_products(request):
new_image.write(chunk)
new_image.close()
else:
logging.warninig(f"Image URL did not work: {image_url}")
logging.warning(f"Image URL did not work: {image_url}")
new_image = None
else:
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