From 42d806f557b6064e38ff3ff53d82175272fa999c Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 22 Feb 2021 10:21:13 +0000 Subject: [PATCH] added command to laod products from woo.enreda.coop, required extra env variables --- back_latienda/settings/base.py | 3 +- core/management/commands/addWCdata.py | 45 +++++++++++++++++++++++++++ example.env | 5 ++- utils/woocommerce.py | 5 +++ 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 core/management/commands/addWCdata.py diff --git a/back_latienda/settings/base.py b/back_latienda/settings/base.py index 7e04aa1..a175b47 100644 --- a/back_latienda/settings/base.py +++ b/back_latienda/settings/base.py @@ -12,12 +12,13 @@ https://docs.djangoproject.com/en/2.2/ref/settings/ import os -import dotenv # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Get variables from .env +import dotenv + dotenv.read_dotenv( dotenv=os.path.join(BASE_DIR, '../.env'), override=True diff --git a/core/management/commands/addWCdata.py b/core/management/commands/addWCdata.py new file mode 100644 index 0000000..2e3206c --- /dev/null +++ b/core/management/commands/addWCdata.py @@ -0,0 +1,45 @@ +import logging +import os + +from django.conf import settings +from django.core.management.base import BaseCommand + +from companies.models import Company + +from utils.woocommerce import migrate_shop_products + +import dotenv + +dotenv.read_dotenv( + dotenv=os.path.join(settings.BASE_DIR, '../.env'), + override=True + ) + +logging.basicConfig( + filename='logs/addtestdata.log', + filemode='w', + format='%(levelname)s:%(message)s', + level=logging.INFO, + ) + + +class Command(BaseCommand): + + url = "https://woo.enreda.coop/" + help = 'Load data from example site https://woo.enreda.coop/ ' + + def handle(self, *args, **kwargs): + print("Migrate data from Enreda WooCommerce...\n") + # find or create company instance + enreda, created = Company.objects.get_or_create(company_name='enreda', web_link=self.url) + # set credentials + credentials = { + 'key': os.getenv('WC_KEY'), + 'secret': os.getenv('WC_SECRET') + } + enreda.credentials = credentials + enreda.save() + # migrate shop + print(f"Starting migration...") + products_created = migrate_shop_products(self.url, credentials['key'], credentials['secret'] ) + print(f"Products created: {len(products_created)}") diff --git a/example.env b/example.env index 93f7397..a2ad913 100644 --- a/example.env +++ b/example.env @@ -9,4 +9,7 @@ AWS_ACCESS_KEY_ID_S3 = '' AWS_SECRET_ACCESS_KEY_S3 = '' S3_BUCKET='' AWS_ACCESS_KEY_ID_SES = '' -AWS_SECRET_ACCESS_KEY_SES = '' \ No newline at end of file +AWS_SECRET_ACCESS_KEY_SES = '' +# WooCommerce test credentials +WC_KEY = '' +WC_SECRET = '' \ No newline at end of file diff --git a/utils/woocommerce.py b/utils/woocommerce.py index c341176..6046176 100644 --- a/utils/woocommerce.py +++ b/utils/woocommerce.py @@ -27,6 +27,11 @@ def get_wcapi_instance(url, key, secret, version="wc/v3"): def migrate_shop_products(url, key, secret, version="wc/v3"): + """Tries to connect to WooCommerce site @ url with given credentials + + If succesful, returns list of Product instances created + + """ # get wcapi wcapi = get_wcapi_instance(url, key, secret, version)