improvements to WC migration script

This commit is contained in:
Sam
2021-02-25 13:39:13 +00:00
parent 1af79dc801
commit 5829b107f9
2 changed files with 23 additions and 15 deletions

View File

@@ -46,6 +46,7 @@ class Company(models.Model):
is_validated = models.BooleanField('Validado', default=False, null=True, blank=True) is_validated = models.BooleanField('Validado', default=False, null=True, blank=True)
is_active = models.BooleanField('Activado', default=False, null=True, blank=True) is_active = models.BooleanField('Activado', default=False, null=True, blank=True)
credentials = JSONField(null=True) credentials = JSONField(null=True)
shipping_terms = models.TextField('Condiciones de envío', null=True, blank=True)
# internal # internal
created = models.DateTimeField('date of creation', auto_now_add=True) created = models.DateTimeField('date of creation', auto_now_add=True)

View File

@@ -59,7 +59,7 @@ def create_imported_product(info, company, history, user):
'name': info.get('name'), 'name': info.get('name'),
'description': BeautifulSoup(info.get('description', ''), "lxml").text, 'description': BeautifulSoup(info.get('description', ''), "lxml").text,
'sku': info.get('sku'), 'sku': info.get('sku'),
'price': info.get('price'), 'price': None if info.get('price') == '' else info.get('price'),
} }
# alternative method # alternative method
@@ -73,20 +73,27 @@ def create_imported_product(info, company, history, user):
except Exception as e: except Exception as e:
logging.error(f"Could not create product instance: {str(e)}") logging.error(f"Could not create product instance: {str(e)}")
return None return None
if len(info['images']) > 0:
try: try:
# get image # get image
headers={"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} headers={"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
image_url = info['images'][0]['src'] image_url = info['images'][0]['src']
response = requests.get(image_url, stream=True, headers=headers) response = requests.get(image_url, stream=True, headers=headers)
assert(response.status_code==200)
response.raw.decode_content = True response.raw.decode_content = True
image = Image.open(response.raw) image = Image.open(response.raw)
# save using File object # save using File object
img_io = BytesIO() img_io = BytesIO()
image.save(img_io, format='JPEG') image.save(img_io, format=image.format)
new.image.save(f"{new.name}-{new.sku}.jpg", File(img_io), save=False) new.image.save(f"{new.name}-{new.sku}.jpg", File(img_io), save=False)
new.save() new.save()
except AssertionError as e:
logging.error(f"Source image [{info['images'][0]['src']}] not reachable: {response.status_code}")
except Exception as e: except Exception as e:
logging.error(f"Could not add image to product: {str(e)}") logging.error(f"Could not add image to product {new.sku} from [{info['images'][0]['src']}]: {str(e)}")
else:
logging.info(f"No image for Product {new.name}")
return new return new
else: else:
logging.error(f"{serializer.errors}") logging.error(f"{serializer.errors}")