diff --git a/companies/models.py b/companies/models.py index 3d0efdd..35a27ca 100644 --- a/companies/models.py +++ b/companies/models.py @@ -46,6 +46,7 @@ class Company(models.Model): is_validated = models.BooleanField('Validado', default=False, null=True, blank=True) is_active = models.BooleanField('Activado', default=False, null=True, blank=True) credentials = JSONField(null=True) + shipping_terms = models.TextField('Condiciones de envĂ­o', null=True, blank=True) # internal created = models.DateTimeField('date of creation', auto_now_add=True) diff --git a/utils/woocommerce.py b/utils/woocommerce.py index 1683651..be2a34c 100644 --- a/utils/woocommerce.py +++ b/utils/woocommerce.py @@ -59,7 +59,7 @@ def create_imported_product(info, company, history, user): 'name': info.get('name'), 'description': BeautifulSoup(info.get('description', ''), "lxml").text, 'sku': info.get('sku'), - 'price': info.get('price'), + 'price': None if info.get('price') == '' else info.get('price'), } # alternative method @@ -73,20 +73,27 @@ def create_imported_product(info, company, history, user): except Exception as e: logging.error(f"Could not create product instance: {str(e)}") return None - try: - # 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"} - image_url = info['images'][0]['src'] - response = requests.get(image_url, stream=True, headers=headers) - response.raw.decode_content = True - image = Image.open(response.raw) - # save using File object - img_io = BytesIO() - image.save(img_io, format='JPEG') - new.image.save(f"{new.name}-{new.sku}.jpg", File(img_io), save=False) - new.save() - except Exception as e: - logging.error(f"Could not add image to product: {str(e)}") + + if len(info['images']) > 0: + try: + # 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"} + image_url = info['images'][0]['src'] + response = requests.get(image_url, stream=True, headers=headers) + assert(response.status_code==200) + response.raw.decode_content = True + image = Image.open(response.raw) + # save using File object + img_io = BytesIO() + image.save(img_io, format=image.format) + 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 else: logging.error(f"{serializer.errors}")