From 38dc29120a2d14120dffe5cd337a6726a9ab9efe Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 23 Mar 2015 15:25:24 +0530 Subject: [PATCH] Fixed User Permissions for listing and report --- frappe/model/db_query.py | 2 +- frappe/permissions.py | 5 ++--- frappe/public/js/frappe/model/perm.js | 16 +++++++++++----- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index 1df71f870b..19da8c4c38 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -248,7 +248,7 @@ class DatabaseQuery(object): # get user permissions user_permissions = frappe.defaults.get_user_permissions(self.user) self.add_user_permissions(user_permissions, - user_permission_doctypes=role_permissions.get("user_permission_doctypes")) + user_permission_doctypes=role_permissions.get("user_permission_doctypes").get("read")) if as_condition: conditions = "" diff --git a/frappe/permissions.py b/frappe/permissions.py index beb96087b5..31a1e2d275 100644 --- a/frappe/permissions.py +++ b/frappe/permissions.py @@ -93,10 +93,9 @@ def get_role_permissions(meta, user=None): perms["apply_user_permissions"][ptype] = (perms["apply_user_permissions"].get(ptype, 1) and p.get("apply_user_permissions")) - if p.apply_user_permissions: + if p.apply_user_permissions and p.user_permission_doctypes: # set user_permission_doctypes in perms - user_permission_doctypes = (json.loads(p.user_permission_doctypes) - if p.user_permission_doctypes else None) + user_permission_doctypes = json.loads(p.user_permission_doctypes) if user_permission_doctypes: # perms["user_permission_doctypes"][ptype] would be a list of list like [["User", "Blog Post"], ["User"]] diff --git a/frappe/public/js/frappe/model/perm.js b/frappe/public/js/frappe/model/perm.js index e203b39dfa..1c30c17d03 100644 --- a/frappe/public/js/frappe/model/perm.js +++ b/frappe/public/js/frappe/model/perm.js @@ -86,14 +86,20 @@ $.extend(frappe.perm, { if (permlevel===0 && cint(p.apply_user_permissions) && p.user_permission_doctypes) { // set user_permission_doctypes in perms - var user_permission_doctypes = p.user_permission_doctypes - ? JSON.parse(p.user_permission_doctypes) : null; + var user_permission_doctypes = JSON.parse(p.user_permission_doctypes); if (user_permission_doctypes && user_permission_doctypes.length) { if (!perm[permlevel]["user_permission_doctypes"]) { - perm[permlevel]["user_permission_doctypes"] = []; + perm[permlevel]["user_permission_doctypes"] = {}; } - perm[permlevel]["user_permission_doctypes"].push(user_permission_doctypes); + + $.each(frappe.perm.rights, function(i, key) { + if (!perm[permlevel]["user_permission_doctypes"][key]) { + perm[permlevel]["user_permission_doctypes"][key] = []; + } + + perm[permlevel]["user_permission_doctypes"][key].push(user_permission_doctypes); + }); } } } @@ -127,7 +133,7 @@ $.extend(frappe.perm, { var user_permissions = frappe.defaults.get_user_permissions(); if(user_permissions && !$.isEmptyObject(user_permissions)) { - var user_permission_doctypes = me.get_user_permission_doctypes(perm[0].user_permission_doctypes, + var user_permission_doctypes = me.get_user_permission_doctypes(perm[0].user_permission_doctypes[ptype], user_permissions); $.each(user_permission_doctypes, function(i, doctypes) {