feat: Add add_user dialog and methods
- wip
This commit is contained in:
parent
b2b745fc7a
commit
68129df74c
@ -33,8 +33,15 @@ def register_marketplace(company):
|
|||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def register_user(username, first_name, company):
|
def register_users(user_list):
|
||||||
pass
|
user_list = json.loads(user_list)
|
||||||
|
|
||||||
|
settings = frappe.get_single('Marketplace Settings')
|
||||||
|
|
||||||
|
for user in user_list:
|
||||||
|
settings.add_hub_user(user)
|
||||||
|
|
||||||
|
return user_list
|
||||||
|
|
||||||
|
|
||||||
def validate_registerer():
|
def validate_registerer():
|
||||||
@ -195,15 +202,11 @@ def load_base64_image_from_items(items):
|
|||||||
def get_hub_connection():
|
def get_hub_connection():
|
||||||
settings = frappe.get_single('Marketplace Settings')
|
settings = frappe.get_single('Marketplace Settings')
|
||||||
marketplace_url = settings.marketplace_url
|
marketplace_url = settings.marketplace_url
|
||||||
current_user_records = filter(
|
hub_user = settings.get_hub_user(frappe.session.user)
|
||||||
lambda x: x.user == current_user and x.password,
|
|
||||||
settings.users
|
|
||||||
)
|
|
||||||
|
|
||||||
if current_user_records:
|
if hub_user:
|
||||||
record = current_user_records[0]
|
password = hub_user.get_password()
|
||||||
password = frappe.get_doc('Hub User', current_user).get_password()
|
hub_connection = FrappeClient(marketplace_url, hub_user.user, password)
|
||||||
hub_connection = FrappeClient(marketplace_url, record.user, password)
|
|
||||||
return hub_connection
|
return hub_connection
|
||||||
else:
|
else:
|
||||||
read_only_hub_connection = FrappeClient(marketplace_url)
|
read_only_hub_connection = FrappeClient(marketplace_url)
|
||||||
|
@ -40,6 +40,10 @@ class MarketplaceSettings(Document):
|
|||||||
|
|
||||||
|
|
||||||
def add_hub_user(self, user_email):
|
def add_hub_user(self, user_email):
|
||||||
|
'''Create a Hub User and User record on hub server
|
||||||
|
and if successfull append it to Hub User table
|
||||||
|
'''
|
||||||
|
|
||||||
if not self.registered:
|
if not self.registered:
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -63,6 +67,17 @@ class MarketplaceSettings(Document):
|
|||||||
|
|
||||||
self.insert()
|
self.insert()
|
||||||
|
|
||||||
|
def get_hub_user(self, user):
|
||||||
|
'''Return the Hub User doc from the `users` table if password is set'''
|
||||||
|
|
||||||
|
filtered_users = filter(
|
||||||
|
lambda x: x.user == user and x.password,
|
||||||
|
self.users
|
||||||
|
)
|
||||||
|
|
||||||
|
if filtered_users:
|
||||||
|
return filtered_users[0]
|
||||||
|
|
||||||
|
|
||||||
def get_connection(self):
|
def get_connection(self):
|
||||||
return FrappeClient(self.marketplace_url)
|
return FrappeClient(self.marketplace_url)
|
||||||
|
@ -31,6 +31,8 @@ erpnext.hub.Marketplace = class Marketplace {
|
|||||||
this.refresh();
|
this.refresh();
|
||||||
if (!is_registered && !is_registered_seller && frappe.user_roles.includes('System Manager')) {
|
if (!is_registered && !is_registered_seller && frappe.user_roles.includes('System Manager')) {
|
||||||
this.page.set_primary_action('Become a Seller', this.show_register_dialog.bind(this))
|
this.page.set_primary_action('Become a Seller', this.show_register_dialog.bind(this))
|
||||||
|
} else {
|
||||||
|
this.page.set_secondary_action('Add Users', this.show_add_user_dialog.bind(this));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -115,4 +117,46 @@ erpnext.hub.Marketplace = class Marketplace {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_add_user_dialog() {
|
||||||
|
const user_list = Object.keys(frappe.boot.user_info)
|
||||||
|
.filter(user => !['Administrator', 'Guest', frappe.session.user].includes(user));
|
||||||
|
const d = new frappe.ui.Dialog({
|
||||||
|
title: __('Add Users to Marketplace'),
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
label: __('Users'),
|
||||||
|
fieldname: 'users',
|
||||||
|
fieldtype: 'MultiSelect',
|
||||||
|
reqd: 1,
|
||||||
|
get_data() {
|
||||||
|
return user_list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
primary_action({ users }) {
|
||||||
|
const selected_users = users.split(',').map(d => d.trim()).filter(Boolean);
|
||||||
|
|
||||||
|
if (!selected_users.every(user => user_list.includes(user))) {
|
||||||
|
d.set_df_property('users', 'description', __('Some emails are invalid'));
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
d.set_df_property('users', 'description', '');
|
||||||
|
}
|
||||||
|
|
||||||
|
frappe.call('erpnext.hub_node.api.register_users', {
|
||||||
|
user_list: selected_users
|
||||||
|
})
|
||||||
|
.then(r => {
|
||||||
|
d.hide();
|
||||||
|
|
||||||
|
if (r.message && r.message.length) {
|
||||||
|
frappe.show_alert('Added {0} users', [r.message.length]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
d.show();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user