From 299831d209b0568efcecf80df09aee5e84c21161 Mon Sep 17 00:00:00 2001 From: marination Date: Wed, 16 Nov 2022 19:24:12 +0530 Subject: [PATCH] fix: server method to return evaluated dict of perms for a document --- frappe/client.py | 9 +++++++++ .../js/frappe/views/kanban/kanban_board.bundle.js | 10 ++++++---- frappe/public/js/frappe/views/kanban/kanban_view.js | 1 + 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/frappe/client.py b/frappe/client.py index 404617b68c..afbb0df5ee 100644 --- a/frappe/client.py +++ b/frappe/client.py @@ -302,6 +302,15 @@ def has_permission(doctype, docname, perm_type="read"): # perm_type can be one of read, write, create, submit, cancel, report return {"has_permission": frappe.has_permission(doctype, perm_type.lower(), docname)} +@frappe.whitelist() +def get_doc_permissions(doctype, docname): + """Returns an evaluated document permissions dict like `{"read":1, "write":1}` + + :param doctype: DocType of the document to be evaluated + :param docname: `name` of the document to be evaluated + """ + doc = frappe.get_doc(doctype, docname) + return {"permissions": frappe.permissions.get_doc_permissions(doc)} @frappe.whitelist() def get_password(doctype, name, fieldname): diff --git a/frappe/public/js/frappe/views/kanban/kanban_board.bundle.js b/frappe/public/js/frappe/views/kanban/kanban_board.bundle.js index 11e7fba198..971081f5b9 100644 --- a/frappe/public/js/frappe/views/kanban/kanban_board.bundle.js +++ b/frappe/public/js/frappe/views/kanban/kanban_board.bundle.js @@ -333,12 +333,13 @@ frappe.provide("frappe.views"); if (self.$kanban_board.length === 0) { self.$kanban_board = $(frappe.render_template("kanban_board")); + // add column self.$kanban_board.appendTo(self.wrapper); } self.$filter_area = self.cur_list.$page.find(".active-tag-filters"); bind_events(); - setup_sortable(); + setup_sortable(); // column } function make_columns() { @@ -355,7 +356,7 @@ frappe.provide("frappe.views"); bind_clickdrag(); } - function setup_sortable() { + function setup_sortable() { // drag column var sortable = new Sortable(self.$kanban_board.get(0), { group: "columns", animation: 150, @@ -518,7 +519,7 @@ frappe.provide("frappe.views"); function init() { make_dom(); - setup_sortable(); + // setup_sortable(); // drag card make_cards(); store.watch((state, getters) => { return state.cards; @@ -535,6 +536,7 @@ frappe.provide("frappe.views"); indicator: frappe.scrub(column.indicator, "-"), }) ).appendTo(wrapper); + // add task, archive self.$kanban_cards = self.$kanban_column.find(".kanban-cards"); } @@ -564,7 +566,7 @@ frappe.provide("frappe.views"); } } - function setup_sortable() { + function setup_sortable() { // drag card Sortable.create(self.$kanban_cards.get(0), { group: "cards", animation: 150, diff --git a/frappe/public/js/frappe/views/kanban/kanban_view.js b/frappe/public/js/frappe/views/kanban/kanban_view.js index 7eccd7ebf8..f1be1d2849 100644 --- a/frappe/public/js/frappe/views/kanban/kanban_view.js +++ b/frappe/public/js/frappe/views/kanban/kanban_view.js @@ -56,6 +56,7 @@ frappe.views.KanbanView = class KanbanView extends frappe.views.ListView { this.card_meta = this.get_card_meta(); this.page_length = 0; + // frappe run serially get/set perms > push menu items > get_board this.menu_items.push( ...[ {