From f26177bdbc6491902478dc7793d660b2a07fecbb Mon Sep 17 00:00:00 2001 From: Prateeksha Singh Date: Thu, 26 Jul 2018 10:38:11 +0530 Subject: [PATCH] [hub] setup publish items flow --- erpnext/hub_node/__init__.py | 15 ++++++++-- erpnext/public/js/hub/hub_listing.js | 45 ++++++++++++++++++++++++---- erpnext/stock/doctype/item/item.py | 4 +-- 3 files changed, 55 insertions(+), 9 deletions(-) diff --git a/erpnext/hub_node/__init__.py b/erpnext/hub_node/__init__.py index 993737e147..c8e40eb8e8 100644 --- a/erpnext/hub_node/__init__.py +++ b/erpnext/hub_node/__init__.py @@ -38,8 +38,6 @@ def get_valid_items(search_value=''): 'item_name': ['like', '%' + search_value + '%'] }) - print([d.item_name for d in items]) - valid_items = filter(lambda x: x.image and x.description, items) def attach_source_type(item): @@ -49,6 +47,19 @@ def get_valid_items(search_value=''): valid_items = map(lambda x: attach_source_type(x), valid_items) return valid_items +@frappe.whitelist() +def publish_selected_items(items_to_publish, items_to_unpublish): + for item_code in json.loads(items_to_publish): + frappe.db.set_value('Item', item_code, 'publish_in_hub', 1) + + for item_code in json.loads(items_to_unpublish): + frappe.db.set_value('Item', item_code, 'publish_in_hub', 0) + + hub_settings = frappe.get_doc('Hub Settings') + hub_settings.sync() + + return + @frappe.whitelist() def get_item_favourites(start=0, limit=20, fields=["*"], order_by=None): doctype = 'Hub Item' diff --git a/erpnext/public/js/hub/hub_listing.js b/erpnext/public/js/hub/hub_listing.js index 33df23e0c5..eb55806784 100644 --- a/erpnext/public/js/hub/hub_listing.js +++ b/erpnext/public/js/hub/hub_listing.js @@ -576,11 +576,13 @@ erpnext.hub.Publish = class Publish extends SubPage { make_wrapper() { super.make_wrapper(); const title_html = `${__('Select Products to Publish')}`; - const subtitle_html = `

- ${__(`Only products with an image and description can be published. + const info = `

${__("Status decided by the 'Publish in Hub' field in Item.")}

`; + const subtitle_html = ` +

+ ${__(`Only products with an image, description and category can be published. Please update them if an item in your inventory does not appear.`)}

`; - const publish_button_html = ``; @@ -621,6 +623,13 @@ erpnext.hub.Publish = class Publish extends SubPage { this.$wrapper.find('.hub-card').removeClass('active'); }); + this.$wrapper.find('.publish-items').on('click', () => { + this.publish_selected_items() + .then(r => { + frappe.msgprint('check'); + }); + }); + const $search_input = this.$wrapper.find('.hub-search-container input'); this.search_value = ''; @@ -662,6 +671,28 @@ erpnext.hub.Publish = class Publish extends SubPage { } ); } + + publish_selected_items() { + const items_to_publish = []; + const items_to_unpublish = []; + this.$wrapper.find('.hub-card').map(function () { + const active = $(this).hasClass('active'); + + if(active) { + items_to_publish.push($(this).attr("data-id")); + } else { + items_to_unpublish.push($(this).attr("data-id")); + } + }); + + return frappe.call( + 'erpnext.hub_node.publish_selected_items', + { + items_to_publish: items_to_publish, + items_to_unpublish: items_to_unpublish + } + ); + } } function get_item_card_container_html(items, title='') { @@ -680,10 +711,14 @@ function get_item_card_container_html(items, title='') { function get_item_card_html(item) { const item_name = item.item_name || item.name; const title = strip_html(item_name); - const img_url = item.image; + const company_name = item.company_name; + const active = item.publish_in_hub; + + const id = item.hub_item_code || item.item_code; + // Subtitle let subtitle = [comment_when(item.creation)]; const rating = get_rating(item); @@ -713,7 +748,7 @@ function get_item_card_html(item) { const item_html = `
-
+
${title}
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index f9d0e7121c..1829b25e8e 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -75,8 +75,8 @@ class Item(WebsiteGenerator): if not self.description: self.description = self.item_name - if self.is_sales_item and not self.get('is_item_from_hub'): - self.publish_in_hub = 1 + # if self.is_sales_item and not self.get('is_item_from_hub'): + # self.publish_in_hub = 1 def after_insert(self): '''set opening stock and item price'''