From 2489bf4c7ad9ad3e84bfef5909560dcf4c60fa95 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Thu, 14 Jun 2018 10:53:58 +0530 Subject: [PATCH] Check if user permission already exists (#5676) * Check if user permission already exists * Optimize code to check duplicate * Replace frappe.db.exists with frappe.db.getall since ['!=', name] filter was not working with frappe.db.exists --- frappe/core/doctype/user_permission/user_permission.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/frappe/core/doctype/user_permission/user_permission.py b/frappe/core/doctype/user_permission/user_permission.py index bd13968ba5..5ad65075e1 100644 --- a/frappe/core/doctype/user_permission/user_permission.py +++ b/frappe/core/doctype/user_permission/user_permission.py @@ -9,6 +9,16 @@ from frappe.permissions import (get_valid_perms, update_permission_property) from frappe import _ class UserPermission(Document): + def validate(self): + duplicate_exists = frappe.db.get_all(self.doctype, filters={ + 'allow': self.allow, + 'for_value': self.for_value, + 'user': self.user, + 'name': ['!=', self.name] + }, limit=1) + if duplicate_exists: + frappe.msgprint(_("User permission already exists"), raise_exception=True) + def on_update(self): frappe.cache().delete_value('user_permissions') frappe.publish_realtime('update_user_permissions')