Selaa lähdekoodia

[Enhance] Role permission for page and report, added reset roles button

version-14
Rohit Waghchaure 8 vuotta sitten
vanhempi
commit
da424049a1
6 muutettua tiedostoa jossa 91 lisäystä ja 89 poistoa
  1. +6
    -6
      frappe/boot.py
  2. +44
    -6
      frappe/core/doctype/role_permission_for_page_and_report/role_permission_for_page_and_report.js
  3. +4
    -61
      frappe/core/doctype/role_permission_for_page_and_report/role_permission_for_page_and_report.json
  4. +27
    -8
      frappe/core/doctype/role_permission_for_page_and_report/role_permission_for_page_and_report.py
  5. +1
    -1
      frappe/core/doctype/user/user.js
  6. +9
    -7
      frappe/public/js/frappe/roles_editor.js

+ 6
- 6
frappe/boot.py Näytä tiedosto

@@ -121,13 +121,13 @@ def get_user_page_or_report(parent):

has_role[p.name] = {"modified":p.modified, "title": p.title}

# pages or reports where role is not set are also allowed
for p in frappe.db.sql("""select name, modified, {field} as title
from `tab{parent}` where
(select count(*) from `tabHas Role`
where `tabHas Role`.parent=tab{parent}.name) = 0""".format(parent=parent, field=field), as_dict=1):
# pages or reports where role is not set are also allowed
for p in frappe.db.sql("""select name, modified, {field} as title
from `tab{parent}` where
(select count(*) from `tabHas Role`
where `tabHas Role`.parent=tab{parent}.name) = 0""".format(parent=parent, field=field), as_dict=1):

has_role[p.name] = {"modified":p.modified, "title": p.title}
has_role[p.name] = {"modified":p.modified, "title": p.title}

return has_role



+ 44
- 6
frappe/core/doctype/role_permission_for_page_and_report/role_permission_for_page_and_report.js Näytä tiedosto

@@ -5,16 +5,30 @@ frappe.ui.form.on('Role Permission for Page and Report', {
refresh: function(frm) {
frm.disable_save();
frm.role_area.hide();
frm.add_custom_button(__("Reset to defaults"),
function(){ frm.trigger("reset_roles") });
frm.add_custom_button(__("Update"),
function(){ frm.trigger("update_roles") }).addClass('btn-primary');
},
onload: function(frm) {
if(!frm.roles_editor) {
frm.role_area = $('<div style="min-height: 300px">')
.appendTo(frm.fields_dict.roles_html.wrapper);
frm.roles_editor = new frappe.RoleEditor(frm.role_area);
frm.roles_editor = new frappe.RoleEditor(frm.role_area, frm);
}
},

set_role_for: function(frm) {
frm.trigger("clear_fields")
frm.toggle_display('roles_html', false)
},

clear_fields: function(frm) {
field = (frm.doc.set_role_for == 'Report') ? 'page' : 'report';
frm.set_value(field, '')
},

page: function(frm) {
frm.trigger("get_roles")
},
@@ -24,9 +38,10 @@ frappe.ui.form.on('Role Permission for Page and Report', {
},

get_roles: function(frm) {
frm.toggle_display('roles_html', true)
frm.role_area.show();

return frappe.call({
return frm.call({
method:"get_custom_roles",
doc: frm.doc,
callback: function(r) {
@@ -36,20 +51,43 @@ frappe.ui.form.on('Role Permission for Page and Report', {
})
},

update: function(frm) {
update_roles: function(frm) {
frm.trigger("validate_mandatory_fields")
if(frm.roles_editor) {
frm.roles_editor.set_roles_in_table()
}

return frappe.call({
return frm.call({
method:"set_custom_roles",
doc: frm.doc,
callback: function(r) {
refresh_field('roles')
frm.roles_editor.show()
frappe.msgprint(__("Successfully Updated"))
frm.reload_doc()
}
})
},

reset_roles: function(frm) {
frm.trigger("validate_mandatory_fields")
return frm.call({
method:"reset_roles",
doc: frm.doc,
callback: function(r) {
refresh_field('roles')
frm.roles_editor.show()
frappe.msgprint(__("Successfully Updated"))
}
})
},

validate_mandatory_fields: function(frm) {
if(!frm.doc.set_role_for){
frappe.throw(__("Mandatory field: set role for"))
}
if(frm.doc.set_role_for && !frm.doc[frm.doc.set_role_for.toLocaleLowerCase()]) {
frappe.throw(__("Mandatory field: {0}", [frm.doc.set_role_for]))
}
}
});

+ 4
- 61
frappe/core/doctype/role_permission_for_page_and_report/role_permission_for_page_and_report.json Näytä tiedosto

@@ -1,5 +1,6 @@
{
"allow_copy": 1,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 0,
@@ -36,7 +37,7 @@
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
@@ -191,77 +192,19 @@
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "section_break_8",
"fieldtype": "Section Break",
"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,
"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,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "update",
"fieldtype": "Button",
"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": "Update",
"length": 0,
"no_copy": 0,
"options": "",
"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,
"unique": 0
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 1,
"idx": 0,
"image_view": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 1,
"istable": 0,
"max_attachments": 0,
"modified": "2017-03-02 16:06:16.295111",
"modified": "2017-03-11 02:35:32.369043",
"modified_by": "Administrator",
"module": "Core",
"name": "Role Permission for Page and Report",


+ 27
- 8
frappe/core/doctype/role_permission_for_page_and_report/role_permission_for_page_and_report.py Näytä tiedosto

@@ -14,12 +14,22 @@ class RolePermissionforPageandReport(Document):
name = frappe.db.get_value('Custom Role', args, "name")
if name:
doc = frappe.get_doc('Custom Role', name)
roles = doc.roles
else:
doctype = self.set_role_for
docname = self.page if self.set_role_for == 'Page' else self.report
doc = frappe.get_doc(doctype, docname)
roles = self.get_standard_roles()

self.set('roles', doc.roles)
self.set('roles', roles)
def get_standard_roles(self):
doctype = self.set_role_for
docname = self.page if self.set_role_for == 'Page' else self.report
doc = frappe.get_doc(doctype, docname)
return doc.roles

def reset_roles(self):
roles = self.get_standard_roles()
self.set('roles', roles)
self.set_custom_roles()

def set_custom_roles(self):
args = self.get_args()
@@ -27,13 +37,13 @@ class RolePermissionforPageandReport(Document):

args.update({
'doctype': 'Custom Role',
'roles': self.roles
'roles': self.get_roles()
})

if name:
doc = frappe.get_doc("Custom Role", name)
doc.set('roles', self.roles)
doc.save()
custom_role = frappe.get_doc("Custom Role", name)
custom_role.set('roles', self.get_roles())
custom_role.save()
else:
frappe.get_doc(args).insert()

@@ -45,5 +55,14 @@ class RolePermissionforPageandReport(Document):
check_for_field: name
}
def get_roles(self):
roles = []
for data in self.roles:
roles.append({
'role': data.role,
'parenttype': 'Custom Role'
})
return roles

def update_status(self):
return frappe.render_template

+ 1
- 1
frappe/core/doctype/user/user.js Näytä tiedosto

@@ -22,7 +22,7 @@ frappe.ui.form.on('User', {
if(!frm.roles_editor) {
var role_area = $('<div style="min-height: 300px">')
.appendTo(frm.fields_dict.roles_html.wrapper);
frm.roles_editor = new frappe.RoleEditor(role_area);
frm.roles_editor = new frappe.RoleEditor(role_area, frm);

var module_area = $('<div style="min-height: 300px">')
.appendTo(frm.fields_dict.modules_html.wrapper);


+ 9
- 7
frappe/public/js/frappe/roles_editor.js Näytä tiedosto

@@ -1,6 +1,7 @@
frappe.RoleEditor = Class.extend({
init: function(wrapper) {
init: function(wrapper, frm) {
var me = this;
this.frm = frm;
this.wrapper = wrapper;
$(wrapper).html('<div class="help">' + __("Loading") + '...</div>')
return frappe.call({
@@ -11,8 +12,8 @@ frappe.RoleEditor = Class.extend({

// refresh call could've already happened
// when all role checkboxes weren't created
if(cur_frm.doc) {
cur_frm.roles_editor.show();
if(me.frm.doc) {
me.frm.roles_editor.show();
}
}
});
@@ -53,7 +54,7 @@ frappe.RoleEditor = Class.extend({

$(this.wrapper).find('input[type="checkbox"]').change(function() {
me.set_roles_in_table();
cur_frm.dirty();
me.frm.dirty();
});
$(this.wrapper).find('.user-role a').click(function() {
me.show_permissions($(this).parent().attr('data-user-role'))
@@ -68,7 +69,7 @@ frappe.RoleEditor = Class.extend({
.each(function(i, checkbox) { checkbox.checked = false; });

// set user roles as checked
$.each((cur_frm.doc.roles || []), function(i, user_role) {
$.each((me.frm.doc.roles || []), function(i, user_role) {
var checkbox = $(me.wrapper)
.find('[data-user-role="'+user_role.role+'"] input[type="checkbox"]').get(0);
if(checkbox) checkbox.checked = true;
@@ -78,8 +79,9 @@ frappe.RoleEditor = Class.extend({
var opts = this.get_roles();
var existing_roles_map = {};
var existing_roles_list = [];
var me = this;

$.each((cur_frm.doc.roles || []), function(i, user_role) {
$.each((me.frm.doc.roles || []), function(i, user_role) {
existing_roles_map[user_role.role] = user_role.name;
existing_roles_list.push(user_role.role);
});
@@ -94,7 +96,7 @@ frappe.RoleEditor = Class.extend({
// add new roles that are checked
$.each(opts.checked_roles, function(i, role) {
if(existing_roles_list.indexOf(role)==-1) {
var user_role = frappe.model.add_child(cur_frm.doc, "Has Role", "roles");
var user_role = frappe.model.add_child(me.frm.doc, "Has Role", "roles");
user_role.role = role;
}
});


Ladataan…
Peruuta
Tallenna