Woocommerce and some fixes

This commit is contained in:
Diego Calvo
2021-04-08 15:12:05 +02:00
parent 06bababfa6
commit 2ecab694b9
10 changed files with 1456 additions and 26 deletions

View File

@@ -65,15 +65,29 @@ def create_imported_product(info, company, history, user):
# alternative method
serializer = ProductSerializer(data=instance_data)
if serializer.is_valid():
try:
new = Product.objects.create(**serializer.validated_data)
new.tags = tags
new.attributes = attributes
new.save()
except Exception as e:
logging.error(f"Could not create product instance: {str(e)}")
return None
# try:
# new = Product.objects.create(**serializer.validated_data)
# new.tags = tags
# new.attributes = attributes
# new.save()
# except Exception as e:
# logging.error(f"Could not create product instance: {str(e)}")
# return None
new, created = Product.objects.get_or_create(
company=company,
creator=user if user is not None else None,
history=history,
url=instance_data['url'],
stock=instance_data['stock'],
name=instance_data['name'],
description=instance_data['description'],
sku=instance_data['sku'],
price=instance_data['price']
)
new.tags = tags
new.attributes = attributes
new.save()
if len(info['images']) > 0:
try:
# get image
@@ -109,11 +123,13 @@ def migrate_shop_products(url, key, secret, user=None, version="wc/v3"):
# get wcapi
wcapi = get_wcapi_instance(url, key, secret, version)
consumer_key = 'ck_565539bb25b472b1ff7a209eb157ca11c0a26397'
consumer_secret = 'cs_9c1690ba5da0dd70f51d61c395628fa14d1a104c'
# get company fom url
company = Company.objects.filter(web_link=url).first()
company = Company.objects.filter(shop_link=url).first()
if not company:
logging.error(f"Could not find Company with URL: {url}")
@@ -122,8 +138,11 @@ def migrate_shop_products(url, key, secret, user=None, version="wc/v3"):
new_products = []
page = 1
attemps = 0
error = False
# list products
while True:
try:
response = wcapi.get('products/', params={'per_page': 10, 'page': page})
page += 1
@@ -131,15 +150,19 @@ def migrate_shop_products(url, key, secret, user=None, version="wc/v3"):
products = response.json()
elif response.status_code == 401:
logging.error(f"{response.status_code} [{response.url}]: {response.json()}")
return None
error = True
else:
logging.error(f"Could not load products from {response.url}: [{response.status_code}]")
print(f"Could not load products fom {response.url}: [{response.status_code}]")
return None
error = True
except requests.exceptions.ReadTimeout as e:
logging.error(f"Timeout reading backend: {str(e)}")
# skip and try next
continue
attemps += 1
if attemps>4:
break
else:
continue
# exit loop if no more products
if not products:
break
@@ -149,7 +172,6 @@ def migrate_shop_products(url, key, secret, user=None, version="wc/v3"):
company=company,
sync_date=datetime.datetime.now(),
)
counter = 0
for product in products:
# check if exists
@@ -169,11 +191,12 @@ def migrate_shop_products(url, key, secret, user=None, version="wc/v3"):
# update history.quantity
history.quantity = counter
history.save()
logging.info(f"Products created: {len(new_products)}")
print(f"Products created: {len(new_products)}")
return new_products
return {"new_products": new_products, "error": error}