From bdc899857c97d58911fe6d853fbba9f94a5071f0 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Tue, 22 Oct 2019 12:31:56 +0530 Subject: [PATCH] Fix: Shopify payload operations logging (#19366) * fix: payload logging for shopify * fix: remove print statements --- .../connectors/shopify_connection.py | 15 +++++---- .../doctype/shopify_log/shopify_log.py | 33 ++++++++++++++----- .../shopify_settings/shopify_settings.py | 7 ---- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/erpnext/erpnext_integrations/connectors/shopify_connection.py b/erpnext/erpnext_integrations/connectors/shopify_connection.py index bd980374b6..3be08a2757 100644 --- a/erpnext/erpnext_integrations/connectors/shopify_connection.py +++ b/erpnext/erpnext_integrations/connectors/shopify_connection.py @@ -29,7 +29,8 @@ def sync_sales_order(order, request_id=None): validate_item(order, shopify_settings) create_order(order, shopify_settings) except Exception as e: - make_shopify_log(status="Error", message=e.message, exception=False) + make_shopify_log(status="Error", exception=e) + else: make_shopify_log(status="Success") @@ -42,9 +43,9 @@ def prepare_sales_invoice(order, request_id=None): sales_order = get_sales_order(cstr(order['id'])) if sales_order: create_sales_invoice(order, shopify_settings, sales_order) - make_shopify_log(status="Success") - except Exception: - make_shopify_log(status="Error", exception=True) + make_shopify_log(status="Success") + except Exception as e: + make_shopify_log(status="Error", exception=e, rollback=True) def prepare_delivery_note(order, request_id=None): frappe.set_user('Administrator') @@ -56,8 +57,8 @@ def prepare_delivery_note(order, request_id=None): if sales_order: create_delivery_note(order, shopify_settings, sales_order) make_shopify_log(status="Success") - except Exception: - make_shopify_log(status="Error", exception=True) + except Exception as e: + make_shopify_log(status="Error", exception=e, rollback=True) def get_sales_order(shopify_order_id): sales_order = frappe.db.get_value("Sales Order", filters={"shopify_order_id": shopify_order_id}) @@ -97,7 +98,7 @@ def create_sales_order(shopify_order, shopify_settings, company=None): message = 'Following items are exists in order but relevant record not found in Product master' message += "\n" + ", ".join(product_not_exists) - make_shopify_log(status="Error", message=message, exception=True) + make_shopify_log(status="Error", exception=e, rollback=True) return '' diff --git a/erpnext/erpnext_integrations/doctype/shopify_log/shopify_log.py b/erpnext/erpnext_integrations/doctype/shopify_log/shopify_log.py index 0c821e031d..7d3f572978 100644 --- a/erpnext/erpnext_integrations/doctype/shopify_log/shopify_log.py +++ b/erpnext/erpnext_integrations/doctype/shopify_log/shopify_log.py @@ -12,23 +12,38 @@ class ShopifyLog(Document): pass -def make_shopify_log(status="Queued", message=None, exception=False): +def make_shopify_log(status="Queued", exception=None, rollback=False): # if name not provided by log calling method then fetch existing queued state log + make_new = False + if not frappe.flags.request_id: - return + make_new = True - log = frappe.get_doc("Shopify Log", frappe.flags.request_id) - - if exception: + if rollback: frappe.db.rollback() - log = frappe.get_doc({"doctype":"Shopify Log"}).insert(ignore_permissions=True) - log.message = message if message else '' + if make_new: + log = frappe.get_doc({"doctype":"Shopify Log"}).insert(ignore_permissions=True) + else: + log = log = frappe.get_doc("Shopify Log", frappe.flags.request_id) + + log.message = get_message(exception) log.traceback = frappe.get_traceback() log.status = status log.save(ignore_permissions=True) frappe.db.commit() +def get_message(exception): + message = None + + if hasattr(exception, 'message'): + message = exception.message + elif hasattr(exception, '__str__'): + message = e.__str__() + else: + message = "Something went wrong while syncing" + return message + def dump_request_data(data, event="create/order"): event_mapper = { "orders/create": get_webhook_address(connector_name='shopify_connection', method="sync_sales_order", exclude_uri=True), @@ -43,11 +58,11 @@ def dump_request_data(data, event="create/order"): }).insert(ignore_permissions=True) frappe.db.commit() - frappe.enqueue(method=event_mapper[event], queue='short', timeout=300, is_async=True, + frappe.enqueue(method=event_mapper[event], queue='short', timeout=300, is_async=True, **{"order": data, "request_id": log.name}) @frappe.whitelist() def resync(method, name, request_data): frappe.db.set_value("Shopify Log", name, "status", "Queued", update_modified=False) - frappe.enqueue(method=method, queue='short', timeout=300, is_async=True, + frappe.enqueue(method=method, queue='short', timeout=300, is_async=True, **{"order": json.loads(request_data), "request_id": name}) diff --git a/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py b/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py index e2f6d497d2..a4332b199e 100644 --- a/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py +++ b/erpnext/erpnext_integrations/doctype/shopify_settings/shopify_settings.py @@ -30,13 +30,9 @@ class ShopifySettings(Document): # url = get_shopify_url('admin/webhooks.json', self) created_webhooks = [d.method for d in self.webhooks] url = get_shopify_url('admin/api/2019-04/webhooks.json', self) - print('url', url) for method in webhooks: - print('method', method) session = get_request_session() - print('session', session) try: - print(get_header(self)) d = session.post(url, data=json.dumps({ "webhook": { "topic": method, @@ -44,7 +40,6 @@ class ShopifySettings(Document): "format": "json" } }), headers=get_header(self)) - print('d', d.json()) d.raise_for_status() self.update_webhook_table(method, d.json()) except Exception as e: @@ -67,7 +62,6 @@ class ShopifySettings(Document): self.remove(d) def update_webhook_table(self, method, res): - print('update') self.append("webhooks", { "webhook_id": res['webhook']['id'], "method": method @@ -75,7 +69,6 @@ class ShopifySettings(Document): def get_shopify_url(path, settings): if settings.app_type == "Private": - print(settings.api_key, settings.get_password('password'), settings.shopify_url, path) return 'https://{}:{}@{}/{}'.format(settings.api_key, settings.get_password('password'), settings.shopify_url, path) else: return 'https://{}/{}'.format(settings.shopify_url, path)