From 9053cbd7777e9522d3d433d84c1bbbfa479cfff4 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 9 Mar 2016 11:45:47 +0530 Subject: [PATCH] [minor] added menu to hide section --- .../core/page/modules_setup/modules_setup.py | 4 +-- .../desk/doctype/desktop_icon/desktop_icon.py | 32 ++++++++++--------- .../doctype/desktop_icon/test_desktop_icon.py | 10 +++--- frappe/desk/moduleview.py | 6 ++++ frappe/desk/page/modules/modules.js | 21 ++++++++++++ 5 files changed, 51 insertions(+), 22 deletions(-) diff --git a/frappe/core/page/modules_setup/modules_setup.py b/frappe/core/page/modules_setup/modules_setup.py index 43704dda88..83892bd4a5 100644 --- a/frappe/core/page/modules_setup/modules_setup.py +++ b/frappe/core/page/modules_setup/modules_setup.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import frappe -from frappe.desk.doctype.desktop_icon.desktop_icon import set_hidden, get_desktop_icons +from frappe.desk.doctype.desktop_icon.desktop_icon import set_hidden_list, get_desktop_icons from frappe.utils.user import UserPermissions @frappe.whitelist() @@ -12,7 +12,7 @@ def update(hidden_list, user=None): if not user: frappe.only_for('System Manager') - set_hidden(hidden_list, user) + set_hidden_list(hidden_list, user) frappe.msgprint(frappe._('Updated')) def get_context(context): diff --git a/frappe/desk/doctype/desktop_icon/desktop_icon.py b/frappe/desk/doctype/desktop_icon/desktop_icon.py index 11ce85a5ae..9632a2af08 100644 --- a/frappe/desk/doctype/desktop_icon/desktop_icon.py +++ b/frappe/desk/doctype/desktop_icon/desktop_icon.py @@ -133,38 +133,40 @@ def set_order(new_order): clear_desktop_icons_cache() -def set_hidden(hidden_list, user=None): +def set_hidden_list(hidden_list, user=None): '''Sets property `hidden`=1 in **Desktop Icon** for given user. If user is None then it will set global values. It will also set the rest of the icons as shown (`hidden` = 0)''' if isinstance(hidden_list, basestring): hidden_list = json.loads(hidden_list) - def set_hidden_value(module_name, hidden): - if user: - icon = get_user_copy(module_name, user) - else: - icon = frappe.get_doc('Desktop Icon', {'standard': 1, 'module_name': module_name}) - - if hidden and icon.custom: - frappe.delete_doc(icon.doctype, icon.name, ignore_permissions=True) - return - - icon.db_set('hidden', hidden) - # set as hidden for module_name in hidden_list: - set_hidden_value(module_name, 1) + set_hidden(module_name, user, 1) # set as seen for module_name in list(set(get_all_icons()) - set(hidden_list)): - set_hidden_value(module_name, 0) + set_hidden(module_name, user, 0) if user: clear_desktop_icons_cache() else: frappe.clear_cache() +def set_hidden(module_name, user, hidden=1): + '''Set module hidden property for given user. If user is not specified, + hide/unhide it globally''' + if user: + icon = get_user_copy(module_name, user) + else: + icon = frappe.get_doc('Desktop Icon', {'standard': 1, 'module_name': module_name}) + + if hidden and icon.custom: + frappe.delete_doc(icon.doctype, icon.name, ignore_permissions=True) + return + + icon.db_set('hidden', hidden) + def get_all_icons(): return [d.module_name for d in frappe.get_all('Desktop Icon', filters={'standard': 1}, fields=['module_name'])] diff --git a/frappe/desk/doctype/desktop_icon/test_desktop_icon.py b/frappe/desk/doctype/desktop_icon/test_desktop_icon.py index 8562490f2f..9ee3c20b44 100644 --- a/frappe/desk/doctype/desktop_icon/test_desktop_icon.py +++ b/frappe/desk/doctype/desktop_icon/test_desktop_icon.py @@ -7,7 +7,7 @@ import frappe import unittest from frappe.desk.doctype.desktop_icon.desktop_icon import (get_desktop_icons, add_user_icon, - set_hidden, set_order, clear_desktop_icons_cache) + set_hidden_list, set_order, clear_desktop_icons_cache) # test_records = frappe.get_test_records('Desktop Icon') @@ -40,7 +40,7 @@ class TestDesktopIcon(unittest.TestCase): self.assertEquals(icon.standard, 0) def test_hide_desktop_icon(self): - set_hidden(["Desk"], 'test@example.com') + set_hidden_list(["Desk"], 'test@example.com') icon = self.get_icon('Desk') self.assertEquals(icon.hidden, 1) @@ -48,21 +48,21 @@ class TestDesktopIcon(unittest.TestCase): def test_remove_custom_desktop_icon_on_hidden(self): self.test_add_desktop_icon() - set_hidden(['User'], 'test@example.com') + set_hidden_list(['User'], 'test@example.com') icon = self.get_icon('User') self.assertEquals(icon, None) def test_show_desktop_icon(self): self.test_hide_desktop_icon() - set_hidden([], 'test@example.com') + set_hidden_list([], 'test@example.com') icon = self.get_icon('Desk') self.assertEquals(icon.hidden, 0) self.assertEquals(icon.standard, 0) def test_globally_hidden_desktop_icon(self): - set_hidden(["Desk"]) + set_hidden_list(["Desk"]) icon = self.get_icon('Desk') self.assertEquals(icon.hidden, 1) diff --git a/frappe/desk/moduleview.py b/frappe/desk/moduleview.py index ace49d6769..e55ee8f706 100644 --- a/frappe/desk/moduleview.py +++ b/frappe/desk/moduleview.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals import frappe from frappe import _ from frappe.boot import get_allowed_pages +from frappe.desk.doctype.desktop_icon.desktop_icon import set_hidden, clear_desktop_icons_cache @frappe.whitelist() def get(module): @@ -18,6 +19,11 @@ def get(module): return out +@frappe.whitelist() +def hide_module(module): + set_hidden(module, frappe.session.user, 1) + clear_desktop_icons_cache() + def get_data(module): """Get module data for the module view `desk/#Module/[name]`""" doctype_info = get_doctype_info(module) diff --git a/frappe/desk/page/modules/modules.js b/frappe/desk/page/modules/modules.js index 9f3d2f82b3..b786749a77 100644 --- a/frappe/desk/page/modules/modules.js +++ b/frappe/desk/page/modules/modules.js @@ -20,6 +20,27 @@ frappe.pages['modules'].on_page_load = function(wrapper) { show_section($(link).attr('data-name')); } + page.add_menu_item(__("Hide this section"), function() { + frappe.call({ + method: "frappe.desk.moduleview.hide_module", + args: { + module: frappe.get_route()[1] + }, + callback: function() { + frappe.set_route('modules', page.wrapper.find('.module-link:first').attr('data-name')); + window.location.reload(); + } + }) + }); + + page.add_menu_item(__("Settings"), function() { + frappe.route_options = { + "user": user + }; + frappe.set_route("modules_setup"); + }); + + var show_section = function(module_name) { if(module_name in page.section_data) { render_section(page.section_data[module_name]);