""" This file holds the functions necesary to: - Connect to seller's shop API - Load information on seller [??] - Load product information """ import logging from woocommerce import API from companies.models import Company from products.models import Product from products.serializers import ProductSerializer def get_wcapi_instance(url, key, secret, version="wc/v3"): wcapi = API( url=url, consumer_key=key, consumer_secret=secret, wp_api=True, version=version ) return wcapi def migrate_shop_products(url, key, secret, 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() if not company: # logging.error(f"Could not find Company with URL: {url}") # print(f"Could not find Company with URL: {url}") # return None # TODO: ELIMINATE THIS AFTER DEBUGGING company = Company.objects.create(web_link=url) logging.error(f"Created Company for testing: {url}") # list products response = wcapi.get('/products/') if response.status_code == 200: products = response.json() elif response.status_code == 401: logging.error(f"{response.status_code} [{response.url}]: {response.json()}") return None else: logging.error(f"Could not load products from {url}: [{response.status_code}]") print(f"Could not load products fom {url}: [{response.status_code}]") return None product_fields = [f.name for f in Product._meta.get_fields()] for product in products: instance_data = {} # remove unwanted fields product.pop('id') for key in product: if key in product_fields: instance_data[key] = product[key] # validate data import ipdb; ipdb.set_trace() serializer = ProductSerializer(**instance_data) if serializer.is_valid(): import ipdb; ipdb.set_trace() Product.objects.create(**serializer.validated_data) else: import ipdb; ipdb.set_trace()