From 8c5c6bad1426c411f47e48d2116031132a057b33 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 30 Nov 2015 13:08:02 +0530 Subject: [PATCH] [minor] added throw option to frappe.has_permission --- frappe/__init__.py | 11 +++++++++-- frappe/permissions.py | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index c453cc2f2a..30e4e1d3b3 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -418,7 +418,7 @@ def clear_cache(user=None, doctype=None): frappe.local.role_permissions = {} -def has_permission(doctype, ptype="read", doc=None, user=None, verbose=False): +def has_permission(doctype, ptype="read", doc=None, user=None, verbose=False, throw=False): """Raises `frappe.PermissionError` if not permitted. :param doctype: DocType for which permission is to be check. @@ -426,7 +426,14 @@ def has_permission(doctype, ptype="read", doc=None, user=None, verbose=False): :param doc: [optional] Checks User permissions for given doc. :param user: [optional] Check for given user. Default: current user.""" import frappe.permissions - return frappe.permissions.has_permission(doctype, ptype, doc=doc, verbose=verbose, user=user) + out = frappe.permissions.has_permission(doctype, ptype, doc=doc, verbose=verbose, user=user) + if throw and not out: + if doc: + frappe.throw(_("No permission for {0}").format(doc.doctype + " " + doc.name)) + else: + frappe.throw(_("No permission for {0}").format(doctype)) + + return out def has_website_permission(doctype, ptype="read", doc=None, user=None, verbose=False): """Raises `frappe.PermissionError` if not permitted. diff --git a/frappe/permissions.py b/frappe/permissions.py index 32295182bf..d6a1cdf686 100644 --- a/frappe/permissions.py +++ b/frappe/permissions.py @@ -147,7 +147,7 @@ def update_share_permissions(role_permissions, doc, user): for ptype in share_ptypes: if permissions_by_share[ptype]: role_permissions[ptype] = 1 - + def get_role_permissions(meta, user=None, verbose=False): """Returns dict of evaluated role permissions like `{"read": True, "write":False}`