[hub] setup publish items flow
diff --git a/erpnext/hub_node/__init__.py b/erpnext/hub_node/__init__.py
index 993737e..c8e40eb 100644
--- a/erpnext/hub_node/__init__.py
+++ b/erpnext/hub_node/__init__.py
@@ -38,8 +38,6 @@
'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):
@@ -50,6 +48,19 @@
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'
hub_settings = frappe.get_doc('Hub Settings')
diff --git a/erpnext/public/js/hub/hub_listing.js b/erpnext/public/js/hub/hub_listing.js
index 33df23e..eb55806 100644
--- a/erpnext/public/js/hub/hub_listing.js
+++ b/erpnext/public/js/hub/hub_listing.js
@@ -576,11 +576,13 @@
make_wrapper() {
super.make_wrapper();
const title_html = `<b>${__('Select Products to Publish')}</b>`;
- const subtitle_html = `<p class="text-muted">
- ${__(`Only products with an image and description can be published.
+ const info = `<p class="text-muted">${__("Status decided by the 'Publish in Hub' field in Item.")}</p>`;
+ const subtitle_html = `
+ <p class="text-muted">
+ ${__(`Only products with an image, description and category can be published.
Please update them if an item in your inventory does not appear.`)}
</p>`;
- const publish_button_html = `<button class="btn btn-primary btn-sm publish-button">
+ const publish_button_html = `<button class="btn btn-primary btn-sm publish-items">
<i class="visible-xs octicon octicon-check"></i>
<span class="hidden-xs">Publish</span>
</button>`;
@@ -621,6 +623,13 @@
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 @@
}
);
}
+
+ 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_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 @@
const item_html = `
<div class="col-md-3 col-sm-4 col-xs-6">
- <div class="hub-card" ${card_route}>
+ <div class="hub-card ${active ? 'active' : ''}" ${card_route} data-id="${id}">
<div class="hub-card-header">
<div class="title">
<div class="hub-card-title ellipsis bold">${title}</div>
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index f9d0e71..1829b25 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -75,8 +75,8 @@
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'''