From 89a77016a5319ed15d0ebdc5f29f807f18d5d28a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 25 Oct 2016 10:59:41 +0530 Subject: [PATCH] [minor] dont show disabled roles in permission manager (#2180) --- frappe/__init__.py | 2 +- frappe/client.py | 24 +++++++++++++------ .../permission_manager/permission_manager.py | 4 ++-- frappe/tests/test_client.py | 15 ++++++++++++ 4 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 frappe/tests/test_client.py diff --git a/frappe/__init__.py b/frappe/__init__.py index c56c06ba45..3eafc9df1c 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -564,7 +564,7 @@ def new_doc(doctype, parent_doc=None, parentfield=None, as_dict=False): from frappe.model.create_new import get_new_doc return get_new_doc(doctype, parent_doc, parentfield, as_dict=as_dict) -def set_value(doctype, docname, fieldname, value): +def set_value(doctype, docname, fieldname, value=None): """Set document value. Calls `frappe.client.set_value`""" import frappe.client return frappe.client.set_value(doctype, docname, fieldname, value) diff --git a/frappe/client.py b/frappe/client.py index 037c78edfa..81bec3787c 100644 --- a/frappe/client.py +++ b/frappe/client.py @@ -47,22 +47,32 @@ def get_value(doctype, fieldname, filters=None, as_dict=True, debug=False): return frappe.db.get_value(doctype, filters, fieldname, as_dict=as_dict, debug=debug) @frappe.whitelist() -def set_value(doctype, name, fieldname, value): +def set_value(doctype, name, fieldname, value=None): + '''Set a value using get_doc, group of values + + :param doctype: DocType of the document + :param name: name of the document + :param fieldname: fieldname string or JSON / dict with key value pair + :param value: value if fieldname is JSON / dict''' + if fieldname!="idx" and fieldname in frappe.model.default_fields: frappe.throw(_("Cannot edit standard fields")) + if not value: + values = fieldname + if isinstance(fieldname, basestring): + values = json.loads(fieldname) + else: + values = {fieldname: value} + doc = frappe.db.get_value(doctype, name, ["parenttype", "parent"], as_dict=True) if doc and doc.parent and doc.parenttype: doc = frappe.get_doc(doc.parenttype, doc.parent) child = doc.getone({"doctype": doctype, "name": name}) - child.set(fieldname, value) + child.update(values) else: doc = frappe.get_doc(doctype, name) - df = doc.meta.get_field(fieldname) - if df.fieldtype == "Read Only" or df.read_only: - frappe.throw(_("Can not edit Read Only fields")) - else: - doc.set(fieldname, value) + doc.update(values) doc.save() diff --git a/frappe/core/page/permission_manager/permission_manager.py b/frappe/core/page/permission_manager/permission_manager.py index 7b3549e271..18e7057d4b 100644 --- a/frappe/core/page/permission_manager/permission_manager.py +++ b/frappe/core/page/permission_manager/permission_manager.py @@ -18,8 +18,8 @@ def get_roles_and_doctypes(): istable=0 and name not in ('DocType') and exists(select * from `tabDocField` where parent=dt.name)""")], - "roles": [d[0] for d in frappe.db.sql("""select name from tabRole where name not in - ('Administrator')""")] + "roles": [d[0] for d in frappe.db.sql("""select name from tabRole where + name != 'Administrator' and disabled=0""")] } @frappe.whitelist() diff --git a/frappe/tests/test_client.py b/frappe/tests/test_client.py new file mode 100644 index 0000000000..a98a71cbc0 --- /dev/null +++ b/frappe/tests/test_client.py @@ -0,0 +1,15 @@ +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors + +from __future__ import unicode_literals + +import unittest, frappe + +class TestClient(unittest.TestCase): + def test_set_value(self): + todo = frappe.get_doc(dict(doctype='ToDo', description='test')).insert() + frappe.set_value('ToDo', todo.name, 'description', 'test 1') + self.assertEquals(frappe.get_value('ToDo', todo.name, 'description'), 'test 1') + + frappe.set_value('ToDo', todo.name, {'description': 'test 2'}) + self.assertEquals(frappe.get_value('ToDo', todo.name, 'description'), 'test 2') +