From f4884f810885ada0359b7a069a2318590c91604b Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Thu, 26 Jul 2018 18:37:01 +0530 Subject: [PATCH] Marketplace - Cache hub calls - call_hub_method using FrappeClient connection - Become a seller UX fixes --- erpnext/hub_node/__init__.py | 13 + .../doctype/hub_settings/hub_settings.py | 20 +- erpnext/public/js/hub/marketplace.js | 844 ++++++++++++++++++ 3 files changed, 867 insertions(+), 10 deletions(-) create mode 100644 erpnext/public/js/hub/marketplace.js diff --git a/erpnext/hub_node/__init__.py b/erpnext/hub_node/__init__.py index c8e40eb8e8..d15785f279 100644 --- a/erpnext/hub_node/__init__.py +++ b/erpnext/hub_node/__init__.py @@ -14,6 +14,19 @@ def enable_hub(): frappe.db.commit() return hub_settings +@frappe.whitelist() +def call_hub_method(method, params=None): + connection = get_client_connection() + + params = json.loads(params) + params.update({ + 'cmd': 'hub.hub.api.' + method + }) + + response = connection.post_api('hub.hub.api.' + method, params) + response = connection.post_request(params) + return response + @frappe.whitelist() def get_list(doctype, start=0, limit=20, fields=["*"], filters="{}", order_by=None): connection = get_client_connection() diff --git a/erpnext/hub_node/doctype/hub_settings/hub_settings.py b/erpnext/hub_node/doctype/hub_settings/hub_settings.py index 551423c8a2..561f1f0faa 100644 --- a/erpnext/hub_node/doctype/hub_settings/hub_settings.py +++ b/erpnext/hub_node/doctype/hub_settings/hub_settings.py @@ -86,15 +86,20 @@ class HubSettings(Document): post_url = hub_url + '/api/method/hub.hub.api.register' response = requests.post(post_url, data=data, headers = {'accept': 'application/json'}) - + response.raise_for_status() - + if response.ok: message = response.json().get('message') else: frappe.throw(json.loads(response.text)) - return message.get('password') if message else None + if message.get('email'): + self.create_hub_connector(message) + self.registered = 1 + self.save() + + return message or None def unregister(self): """ Disable the User on hub.erpnext.org""" @@ -149,11 +154,6 @@ def sync(): def register_seller(**kwargs): settings = frappe.get_doc('Hub Settings') settings.update(kwargs) - password = settings.register() + message = settings.register() - print(password) - - # if password: - # self.create_hub_connector(message) - # self.registered = 1 - # self.save() + return message.get('email') diff --git a/erpnext/public/js/hub/marketplace.js b/erpnext/public/js/hub/marketplace.js new file mode 100644 index 0000000000..2526b95eaf --- /dev/null +++ b/erpnext/public/js/hub/marketplace.js @@ -0,0 +1,844 @@ +frappe.provide('hub'); +frappe.provide('erpnext.hub'); + +erpnext.hub.Marketplace = class Marketplace { + constructor({ parent }) { + this.$parent = $(parent); + this.page = parent.page; + + frappe.db.get_doc('Hub Settings') + .then(doc => { + this.hub_settings = doc; + this.registered = doc.registered; + + this.setup_header(); + this.make_sidebar(); + this.make_body(); + this.setup_events(); + this.refresh(); + }); + } + + setup_header() { + this.page.set_title(__('Marketplace')); + } + + setup_events() { + this.$parent.on('click', '[data-route]', (e) => { + const $target = $(e.currentTarget); + const route = $target.data().route; + frappe.set_route(route); + + e.stopPropagation(); + }); + } + + make_sidebar() { + this.$sidebar = this.$parent.find('.layout-side-section').addClass('hidden-xs'); + + this.make_sidebar_nav_buttons(); + this.make_sidebar_categories(); + } + + make_sidebar_nav_buttons() { + let $nav_group = this.$sidebar.find('[data-nav-buttons]'); + if (!$nav_group.length) { + $nav_group = $('