From 8918b8894dfa0f4392667b84635bd64ef83521ae Mon Sep 17 00:00:00 2001 From: Harshal Dhumal Date: Mon, 8 Aug 2016 16:31:57 +0100 Subject: [PATCH] Fixed privileges parsing issue while editing privileges of existing object. Fixes #1417 --- .../servers/static/js/privilege.js | 1 + .../browser/server_groups/servers/utils.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/web/pgadmin/browser/server_groups/servers/static/js/privilege.js b/web/pgadmin/browser/server_groups/servers/static/js/privilege.js index 70246f6b9..418122ecd 100644 --- a/web/pgadmin/browser/server_groups/servers/static/js/privilege.js +++ b/web/pgadmin/browser/server_groups/servers/static/js/privilege.js @@ -58,6 +58,7 @@ * + privileges - Privileges for that role. **/ var PrivilegeRoleModel = pgNode.PrivilegeRoleModel = pgNode.Model.extend({ + idAttribute: 'grantee', defaults: { grantee: undefined, grantor: undefined, diff --git a/web/pgadmin/browser/server_groups/servers/utils.py b/web/pgadmin/browser/server_groups/servers/utils.py index 356b808e3..4aa04ea32 100644 --- a/web/pgadmin/browser/server_groups/servers/utils.py +++ b/web/pgadmin/browser/server_groups/servers/utils.py @@ -63,6 +63,24 @@ def parse_priv_to_db(str_privileges, allowed_acls=[]): priv_with_grant = [] priv_without_grant = [] + if isinstance(priv['privileges'], dict) and 'changed' in priv['privileges']: + tmp = [] + for p in priv['privileges']['changed']: + tmp_p = {'privilege_type': p['privilege_type'], + 'privilege': False, + 'with_grant': False} + + if 'with_grant' in p: + tmp_p['privilege'] = True + tmp_p['with_grant'] = p['with_grant'] + + if 'privilege' in p: + tmp_p['privilege'] = p['privilege'] + + tmp.append(tmp_p) + + priv['privileges'] = tmp + for privilege in priv['privileges']: if privilege['privilege_type'] not in db_privileges: