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
try:
# get image if len(info['images']) > 0:
headers={"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} try:
image_url = info['images'][0]['src'] # get image
response = requests.get(image_url, stream=True, headers=headers) headers={"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
response.raw.decode_content = True image_url = info['images'][0]['src']
image = Image.open(response.raw) response = requests.get(image_url, stream=True, headers=headers)
# save using File object assert(response.status_code==200)
img_io = BytesIO() response.raw.decode_content = True
image.save(img_io, format='JPEG') image = Image.open(response.raw)
new.image.save(f"{new.name}-{new.sku}.jpg", File(img_io), save=False) # save using File object
new.save() img_io = BytesIO()
except Exception as e: image.save(img_io, format=image.format)
logging.error(f"Could not add image to product: {str(e)}") new.image.save(f"{new.name}-{new.sku}.jpg", File(img_io), save=False)
new.save()
except AssertionError as e:
logging.error(f"Source image [{info['images'][0]['src']}] not reachable: {response.status_code}")
except Exception as 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}")