diff --git a/erpnext/hub_node/data_migration_mapping/item_to_hub_item/__init__.py b/erpnext/hub_node/data_migration_mapping/item_to_hub_item/__init__.py index e981b2dc45f..eb57f3a98a0 100644 --- a/erpnext/hub_node/data_migration_mapping/item_to_hub_item/__init__.py +++ b/erpnext/hub_node/data_migration_mapping/item_to_hub_item/__init__.py @@ -1,4 +1,5 @@ -import frappe, io, base64, urllib, os +import frappe, io, base64, urllib, os, json +from frappe.utils.file_manager import get_file_path def pre_process(doc): @@ -9,11 +10,17 @@ def pre_process(doc): url = file_path file_path = os.path.join('/tmp', file_name) urllib.urlretrieve(url, file_path) + else: + file_path = os.path.abspath(get_file_path(file_path)) - with io.open(file_path, 'rb') as f: - doc.image = base64.b64encode(f.read()) - - doc.image_file_name = file_name + try: + with io.open(file_path, 'rb') as f: + doc.image = json.dumps({ + 'file_name': file_name, + 'base64': base64.b64encode(f.read()) + }) + except Exception as e: + frappe.log_error(title='Hub Sync Error') cached_details = frappe.get_doc('Hub Tracked Item', doc.item_code) diff --git a/erpnext/hub_node/doctype/hub_settings/hub_settings.py b/erpnext/hub_node/doctype/hub_settings/hub_settings.py index f7e940c16e1..96e3148c13e 100644 --- a/erpnext/hub_node/doctype/hub_settings/hub_settings.py +++ b/erpnext/hub_node/doctype/hub_settings/hub_settings.py @@ -67,6 +67,7 @@ class HubSettings(Document): def create_hub_connector(self, message): if frappe.db.exists('Data Migration Connector', 'Hub Connector'): hub_connector = frappe.get_doc('Data Migration Connector', 'Hub Connector') + hub_connector.hostname = self.get_hub_url() hub_connector.username = message['email'] hub_connector.password = message['password'] hub_connector.save() diff --git a/erpnext/hub_node/doctype/hub_tracked_item/test_hub_tracked_item.js b/erpnext/hub_node/doctype/hub_tracked_item/test_hub_tracked_item.js deleted file mode 100644 index 9f7314d399f..00000000000 --- a/erpnext/hub_node/doctype/hub_tracked_item/test_hub_tracked_item.js +++ /dev/null @@ -1,23 +0,0 @@ -/* eslint-disable */ -// rename this file from _test_[name] to test_[name] to activate -// and remove above this line - -QUnit.test("test: Hub Tracked Item", function (assert) { - let done = assert.async(); - - // number of asserts - assert.expect(1); - - frappe.run_serially([ - // insert a new Hub Tracked Item - () => frappe.tests.make('Hub Tracked Item', [ - // values to be set - {key: 'value'} - ]), - () => { - assert.equal(cur_frm.doc.key, 'value'); - }, - () => done() - ]); - -}); diff --git a/erpnext/public/js/hub/components/item_card.js b/erpnext/public/js/hub/components/item_card.js index 9f5a6ef6834..a1b0ae022d1 100644 --- a/erpnext/public/js/hub/components/item_card.js +++ b/erpnext/public/js/hub/components/item_card.js @@ -21,7 +21,7 @@ function get_item_card_html(item) { } const item_html = ` -
+
@@ -74,7 +74,7 @@ function get_local_item_card_html(item) {
`; const item_html = ` -
+
diff --git a/erpnext/public/js/hub/marketplace.js b/erpnext/public/js/hub/marketplace.js index 953efe4c71a..a7b7761f26f 100644 --- a/erpnext/public/js/hub/marketplace.js +++ b/erpnext/public/js/hub/marketplace.js @@ -149,8 +149,10 @@ erpnext.hub.Marketplace = class Marketplace { update_sidebar() { const route = frappe.get_route(); - const route_str = route.slice(0, 2).join('/'); - const $sidebar_item = this.$sidebar.find(`[data-route="${route_str}"]`); + const route_str = route.join('/'); + const part_route_str = route.slice(0, 2).join('/'); + const $sidebar_item = this.$sidebar.find(`[data-route="${route_str}"], [data-route="${part_route_str}"]`); + const $siblings = this.$sidebar.find('[data-route]'); $siblings.removeClass('active').addClass('text-muted'); diff --git a/erpnext/public/js/hub/pages/item.js b/erpnext/public/js/hub/pages/item.js index 421d7ef29f7..9f409714762 100644 --- a/erpnext/public/js/hub/pages/item.js +++ b/erpnext/public/js/hub/pages/item.js @@ -113,7 +113,7 @@ erpnext.hub.Item = class Item extends SubPage { }) .then(() => { d.hide(); - frappe.set_route('marketplace', 'messages'); + frappe.set_route('marketplace', 'buy', this.item.hub_item_code); erpnext.hub.trigger('action:send_message') }); } diff --git a/erpnext/public/js/hub/pages/publish.js b/erpnext/public/js/hub/pages/publish.js index 9c5fc24c5ba..f49365833e6 100644 --- a/erpnext/public/js/hub/pages/publish.js +++ b/erpnext/public/js/hub/pages/publish.js @@ -185,7 +185,7 @@ erpnext.hub.Publish = class Publish extends SubPage { show_publish_progress() { const items_to_publish = this.items_data_to_publish.length ? this.items_data_to_publish - : JSON.parse(hub.settings.custom_data); + : JSON.parse(hub.settings.custom_data || '[]'); const $publish_progress = $(`

${__(`Syncing ${items_to_publish.length} Products`)}

@@ -226,7 +226,14 @@ erpnext.hub.Publish = class Publish extends SubPage { items.map(item => { this.fetched_items_dict[item.item_code] = item; - }) + }); + + // remove the items which doesn't have a valid image + setTimeout(() => { + items_container.find('.no-image').each(function() { + $(this).closest('.hub-card-container').remove(); + }); + }, 1000); } get_valid_items() {