From a8a813623b09593ce4df1da2ef05cd0f81619aba Mon Sep 17 00:00:00 2001 From: shariquerik Date: Wed, 9 Jun 2021 18:12:44 +0530 Subject: [PATCH] fix: updating workspace of public page fix --- frappe/desk/desktop.py | 28 +++++++++++++++---- .../doctype/internal_wiki/internal_wiki.py | 17 ++++++----- frappe/desk/doctype/workspace/workspace.json | 9 +++++- frappe/public/js/frappe/wiki_blocks/block.js | 3 +- frappe/public/js/frappe/wiki_blocks/card.js | 3 +- frappe/public/js/frappe/wiki_blocks/chart.js | 3 +- .../public/js/frappe/wiki_blocks/shortcut.js | 3 +- 7 files changed, 49 insertions(+), 17 deletions(-) diff --git a/frappe/desk/desktop.py b/frappe/desk/desktop.py index 042093d412..e042e5411c 100644 --- a/frappe/desk/desktop.py +++ b/frappe/desk/desktop.py @@ -110,9 +110,18 @@ class Workspace: def get_page_for_user(self, wiki=False): filters = { 'extends': self.page_name, - 'for_user': frappe.session.user + 'public': 1, + 'for_wiki': wiki + } + user_pages = frappe.get_all("Workspace", filters=filters, limit=1) + if user_pages: + return frappe.get_cached_doc("Workspace", user_pages[0]) + + filters = { + 'extends': self.page_name, + 'for_user': frappe.session.user, + 'for_wiki': wiki } - filters['for_wiki'] = wiki user_pages = frappe.get_all("Workspace", filters=filters, limit=1) if user_pages: return frappe.get_cached_doc("Workspace", user_pages[0]) @@ -476,11 +485,19 @@ def get_custom_workspace_for_user(page, wiki=False): Returns: Object: Document object """ + if wiki: + filters = { + 'extends': page, + 'public': 1 + } + pages = frappe.get_list("Workspace", filters=filters) + if pages: + return frappe.get_doc("Workspace", pages[0]) filters = { 'extends': page, - 'for_user': frappe.session.user + 'for_user': frappe.session.user, + 'for_wiki': wiki } - filters['for_wiki'] = wiki pages = frappe.get_list("Workspace", filters=filters) if pages: return frappe.get_doc("Workspace", pages[0]) @@ -549,7 +566,7 @@ def save_customization(page, config): return True -def save_new_widget(page, blocks, new_widgets): +def save_new_widget(page, blocks, new_widgets, public=False): original_page = frappe.get_doc("Workspace", page) page_doc = get_custom_workspace_for_user(page, True) @@ -569,6 +586,7 @@ def save_new_widget(page, blocks, new_widgets): "charts": original_page.charts, "shortcuts": original_page.shortcuts, "links": original_page.links, + "public": public }) widgets = _dict(loads(new_widgets)) diff --git a/frappe/desk/doctype/internal_wiki/internal_wiki.py b/frappe/desk/doctype/internal_wiki/internal_wiki.py index de7482e434..15524a668c 100644 --- a/frappe/desk/doctype/internal_wiki/internal_wiki.py +++ b/frappe/desk/doctype/internal_wiki/internal_wiki.py @@ -63,13 +63,16 @@ def save_wiki_page(title, parent, public, sb_items, deleted_pages, new_widgets, else: doc = frappe.get_doc("Internal Wiki", frappe.session.user) doc.wiki_pages.extend([new_doc]) + doc.save(ignore_permissions=True) else: - # update the content of Internal Wiki Page of current user - doc = frappe.get_doc("Internal Wiki", frappe.session.user) - for d in doc.wiki_pages: - if d.title == title: - d.content = blocks - doc.save(ignore_permissions=True) + for page in ["Default", frappe.session.user]: + if frappe.db.exists("Internal Wiki", page): + doc = frappe.get_doc("Internal Wiki", page) + for d in doc.wiki_pages: + if d.title == title: + d.content = blocks + break + doc.save(ignore_permissions=True) if json.loads(deleted_pages): return delete_pages(json.loads(deleted_pages)) @@ -78,7 +81,7 @@ def save_wiki_page(title, parent, public, sb_items, deleted_pages, new_widgets, sort_pages(json.loads(sb_items)) if json.loads(new_widgets): - save_new_widget(title, blocks, new_widgets) + save_new_widget(title, blocks, new_widgets, public) return title diff --git a/frappe/desk/doctype/workspace/workspace.json b/frappe/desk/doctype/workspace/workspace.json index 2de8eeef62..6b84b73e6c 100644 --- a/frappe/desk/doctype/workspace/workspace.json +++ b/frappe/desk/doctype/workspace/workspace.json @@ -25,6 +25,7 @@ "pin_to_bottom", "hide_custom", "for_wiki", + "public", "section_break_2", "charts_label", "charts", @@ -222,10 +223,16 @@ "fieldname": "for_wiki", "fieldtype": "Check", "label": "For Wiki" + }, + { + "default": "0", + "fieldname": "public", + "fieldtype": "Check", + "label": "Public" } ], "links": [], - "modified": "2021-06-02 15:35:08.963507", + "modified": "2021-06-09 14:50:41.204381", "modified_by": "Administrator", "module": "Desk", "name": "Workspace", diff --git a/frappe/public/js/frappe/wiki_blocks/block.js b/frappe/public/js/frappe/wiki_blocks/block.js index a3f95890c7..dde93b3887 100644 --- a/frappe/public/js/frappe/wiki_blocks/block.js +++ b/frappe/public/js/frappe/wiki_blocks/block.js @@ -9,7 +9,7 @@ export default class Block { let block_data = this.config.page_data[block+'s'].items.find(obj => { return obj.label == block_name; }); - if (!block_data) return; + if (!block_data) return false; this.wrapper.innerHTML = ''; block_data.in_customize_mode = !this.readOnly; this.block_widget = new frappe.widget.SingleWidgetGroup({ @@ -25,6 +25,7 @@ export default class Block { if (!this.readOnly) { this.block_widget.customize(); } + return true; } rendered() { diff --git a/frappe/public/js/frappe/wiki_blocks/card.js b/frappe/public/js/frappe/wiki_blocks/card.js index 0c8dc4ca82..e8abcea424 100644 --- a/frappe/public/js/frappe/wiki_blocks/card.js +++ b/frappe/public/js/frappe/wiki_blocks/card.js @@ -34,7 +34,8 @@ export default class Card extends Block { this.new('card', 'links'); if (this.data && this.data.card_name) { - this.make('card', this.data.card_name, 'links'); + let has_data = this.make('card', this.data.card_name, 'links'); + if (!has_data) return; } if (!this.readOnly) { diff --git a/frappe/public/js/frappe/wiki_blocks/chart.js b/frappe/public/js/frappe/wiki_blocks/chart.js index 505d03c732..aeaba1d0d3 100644 --- a/frappe/public/js/frappe/wiki_blocks/chart.js +++ b/frappe/public/js/frappe/wiki_blocks/chart.js @@ -34,7 +34,8 @@ export default class Chart extends Block { this.new('chart'); if (this.data && this.data.chart_name) { - this.make('chart', this.data.chart_name); + let has_data = this.make('chart', this.data.chart_name); + if (!has_data) return; } if (!this.readOnly) { diff --git a/frappe/public/js/frappe/wiki_blocks/shortcut.js b/frappe/public/js/frappe/wiki_blocks/shortcut.js index 7de8097715..ffed50e340 100644 --- a/frappe/public/js/frappe/wiki_blocks/shortcut.js +++ b/frappe/public/js/frappe/wiki_blocks/shortcut.js @@ -33,7 +33,8 @@ export default class Shortcut extends Block { this.new('shortcut'); if (this.data && this.data.shortcut_name) { - this.make('shortcut', this.data.shortcut_name); + let has_data = this.make('shortcut', this.data.shortcut_name); + if (!has_data) return; } if (!this.readOnly) {