[hub] sync in progress
diff --git a/erpnext/hub_node/__init__.py b/erpnext/hub_node/__init__.py
index 5c86bb9..f913239 100644
--- a/erpnext/hub_node/__init__.py
+++ b/erpnext/hub_node/__init__.py
@@ -2,7 +2,7 @@
# For license information, please see license.txt
from __future__ import unicode_literals
-import frappe, requests, json
+import frappe, requests, json, time
from frappe.utils import now, nowdate, cint
from frappe.utils.nestedset import get_root_of
from frappe.contacts.doctype.contact.contact import get_default_contact
@@ -35,7 +35,8 @@
@frappe.whitelist()
def get_valid_items(search_value=''):
items = frappe.get_list(
- 'Item', fields=["*"],
+ 'Item',
+ fields=["*"],
filters={
'item_name': ['like', '%' + search_value + '%'],
'publish_in_hub': 0
@@ -53,12 +54,14 @@
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)
+def publish_selected_items(items_to_publish):
+ # for item_code in json.loads(items_to_publish):
+ # frappe.db.set_value('Item', item_code, 'publish_in_hub', 1)
- hub_settings = frappe.get_doc('Hub Settings')
- hub_settings.sync()
+ time.sleep(3)
+
+ # hub_settings = frappe.get_doc('Hub Settings')
+ # hub_settings.sync()
return
diff --git a/erpnext/hub_node/doctype/hub_settings/hub_settings.js b/erpnext/hub_node/doctype/hub_settings/hub_settings.js
index 29d870b..4bd3333 100644
--- a/erpnext/hub_node/doctype/hub_settings/hub_settings.js
+++ b/erpnext/hub_node/doctype/hub_settings/hub_settings.js
@@ -1,53 +1,23 @@
frappe.ui.form.on("Hub Settings", {
refresh: function(frm) {
+ frm.disable_save();
frm.add_custom_button(__('Logs'),
() => frappe.set_route('List', 'Data Migration Run', {
data_migration_plan: 'Hub Sync'
}));
- frm.trigger("enabled");
-
if (frm.doc.enabled) {
frm.add_custom_button(__('Sync'),
() => frm.call('sync'));
}
},
- onload: function(frm) {
- let token = frappe.urllib.get_arg("access_token");
- if(token) {
- let email = frm.get_field("user");
- console.log('token', frappe.urllib.get_arg("access_token"));
-
- get_user_details(frm, token, email);
- let row = frappe.model.add_child(frm.doc, "Hub Users", "users");
- row.user = frappe.session.user;
- }
-
- if(!frm.doc.country) {
- frm.set_value("country", frappe.defaults.get_default("Country"));
- }
- if(!frm.doc.company) {
- frm.set_value("company", frappe.defaults.get_default("Company"));
- }
- if(!frm.doc.user) {
- frm.set_value("user", frappe.session.user);
- }
- },
+ onload: function(frm) { },
onload_post_render: function(frm) {
if(frm.get_field("unregister_from_hub").$input)
frm.get_field("unregister_from_hub").$input.addClass("btn-danger");
},
on_update: function(frm) {
},
- enabled: function(frm) {
- if(!frm.doc.enabled) {
- frm.trigger("set_enable_hub_primary_button");
- } else {
- frm.page.set_primary_action(__("Save Settings"), () => {
- frm.save();
- });
- }
- },
hub_user_email: function(frm) {
if(frm.doc.hub_user_email){
@@ -55,39 +25,6 @@
}
},
- set_enable_hub_primary_button: (frm) => {
- frm.page.set_primary_action(__("Enable Hub"), () => {
- if(frappe.session.user === "Administrator") {
- frappe.msgprint(__("Please login as another user."))
- } else {
- // frappe.verify_password(() => {
-
- // } );
-
- frm.trigger("call_pre_reg");
- // frm.trigger("call_register");
-
- }
- });
- },
-
- call_pre_reg: (frm) => {
- this.frm.call({
- doc: this.frm.doc,
- method: "pre_reg",
- args: {},
- freeze: true,
- callback: function(r) {
- console.log(r.message);
- authorize(frm, r.message.client_id, r.message.redirect_uri);
- },
- onerror: function() {
- frappe.msgprint(__("Wrong Password"));
- frm.set_value("enabled", 0);
- }
- });
- },
-
call_register: (frm) => {
this.frm.call({
doc: this.frm.doc,
@@ -111,67 +48,3 @@
});
},
});
-
-// let hub_url = 'https://hubmarket.org'
-let hub_url = 'http://159.89.175.122'
-// let hub_url = 'http://erpnext.hub:8000'
-
-function authorize(frm, client_id, redirect_uri) {
-
- // queryStringData is details of OAuth Client (Implicit Grant) on Custom App
- var queryStringData = {
- response_type : "token",
- client_id : client_id,
- redirect_uri : redirect_uri
- }
-
- // Get current raw route and build url
- const route = "/desk#" + frappe.get_raw_route_str();
- localStorage.removeItem("route"); // Clear previously set route if any
- localStorage.setItem("route", route);
-
- // Go authorize!
- let api_route = "/api/method/frappe.integrations.oauth2.authorize?";
- let url = hub_url + api_route + $.param(queryStringData);
- window.location.replace(url, 'test');
-}
-
-function get_user_details(frm, token, email) {
- console.log('user_details');
- var route = localStorage.getItem("route");
- if (token && route) {
- // Clean up access token from route
- frappe.set_route(frappe.get_route().join("/"))
-
- // query protected resource e.g. Hub Items with token
- var call = {
- "async": true,
- "crossDomain": true,
- "url": hub_url + "/api/resource/User",
- "method": "GET",
- "data": {
- // "email": email,
- "fields": '["name", "first_name", "language"]',
- "limit_page_length": 1
- },
- "headers": {
- "authorization": "Bearer " + token,
- "content-type": "application/x-www-form-urlencoded"
- }
- }
- $.ajax(call).done(function (response) {
- // display openid profile
- console.log('response', response);
-
- let data = response.data[0];
- frm.set_value("enabled", 1);
- frm.set_value("hub_username", data.first_name);
- frm.set_value("hub_user_status", "Starter");
- frm.set_value("language", data.language);
- frm.save();
-
- // clear route from localStorage
- localStorage.removeItem("route");
- });
- }
-}
diff --git a/erpnext/hub_node/doctype/hub_settings/hub_settings.json b/erpnext/hub_node/doctype/hub_settings/hub_settings.json
index c742c57..61ef48c 100644
--- a/erpnext/hub_node/doctype/hub_settings/hub_settings.json
+++ b/erpnext/hub_node/doctype/hub_settings/hub_settings.json
@@ -51,6 +51,38 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
+ "fieldname": "sync_in_progress",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Sync in Progress",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
"fieldname": "company_registered",
"fieldtype": "Check",
"hidden": 0,
@@ -611,7 +643,7 @@
"issingle": 1,
"istable": 0,
"max_attachments": 0,
- "modified": "2018-07-24 18:53:09.442523",
+ "modified": "2018-07-26 15:56:36.104768",
"modified_by": "cave@aperture.com",
"module": "Hub Node",
"name": "Hub Settings",
diff --git a/erpnext/public/js/hub/hub_listing.js b/erpnext/public/js/hub/hub_listing.js
index 6d0f3e9..7a71c11 100644
--- a/erpnext/public/js/hub/hub_listing.js
+++ b/erpnext/public/js/hub/hub_listing.js
@@ -138,11 +138,14 @@
}
if (route[1] === 'profile' && !this.subpages.profile) {
- this.subpages.profile = new erpnext.hub.Profile(this.$body, this.hub_settings);
+ this.subpages.profile = new erpnext.hub.Profile(this.$body, {data: this.hub_settings});
}
if (route[1] === 'publish' && !this.subpages.publish) {
- this.subpages.publish = new erpnext.hub.Publish(this.$body);
+ this.subpages.publish = new erpnext.hub.Publish(
+ this.$body,
+ {sync_in_progress: this.hub_settings.sync_in_progress}
+ );
}
if (!Object.keys(this.subpages).includes(route[1])) {
@@ -157,9 +160,9 @@
}
class SubPage {
- constructor(parent) {
+ constructor(parent, options) {
this.$parent = $(parent);
- this.make_wrapper();
+ this.make_wrapper(options);
}
make_wrapper() {
@@ -621,8 +624,14 @@
render() {}
}
erpnext.hub.Publish = class Publish extends SubPage {
- make_wrapper() {
+ make_wrapper(options) {
super.make_wrapper();
+ this.sync_in_progress = options.sync_in_progress;
+
+ this.load_publish_page();
+ }
+
+ load_publish_page() {
const title_html = `<b>${__('Select Products to Publish')}</b>`;
const info = `<p class="text-muted">${__("Status decided by the 'Publish in Hub' field in Item.")}</p>`;
const subtitle_html = `
@@ -660,17 +669,10 @@
}
setup_events() {
- // this.$wrapper.find('.select-all').on('click', () => {
- // this.$wrapper.find('.hub-card').addClass('active');
- // });
-
- // this.$wrapper.find('.deselect-all').on('click', () => {
- // this.$wrapper.find('.hub-card').removeClass('active');
- // });
-
this.$wrapper.find('.publish-items').on('click', () => {
this.publish_selected_items()
.then(r => {
+ this.load_publishing_state();
frappe.msgprint('check');
});
});
@@ -687,6 +689,11 @@
}
get_items_and_render() {
+ if(this.sync_in_progress) {
+ this.load_publishing_state();
+ return;
+ }
+
this.$wrapper.find('.hub-card-container').empty();
this.get_valid_items()
.then(r => {
@@ -703,6 +710,18 @@
items_container.addClass('static').on('click', '.hub-card', (e) => {
const $target = $(e.currentTarget);
$target.toggleClass('active');
+
+ // Get total items
+ const total_items = this.$wrapper.find('.hub-card.active').length;
+ const more_than_one = total_items > 1;
+ this.$wrapper.find('.publish-items')
+ .html(__('Publish ' + total_items + ' item' + (more_than_one ? 's' : '')));
+
+ // if($target.hasClass('active')) {
+ // $target.addClass('active');
+ // } else {
+ // $target.removeClass('active');
+ // }
});
this.$wrapper.append(items_container);
@@ -717,24 +736,22 @@
);
}
+ load_publishing_state() {
+ this.$wrapper.html(`<div>
+ <b>Publishing</b>
+ </div>`);
+ }
+
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"));
- }
+ this.$wrapper.find('.hub-card.active').map(function () {
+ items_to_publish.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
+ items_to_publish: items_to_publish
}
);
}