Woocommerce and some fixes
This commit is contained in:
@@ -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}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user