[minor] added menu to hide section

This commit is contained in:
Rushabh Mehta 2016-03-09 11:45:47 +05:30
parent b6262c1639
commit 9053cbd777
5 changed files with 51 additions and 22 deletions

View file

@ -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):

View file

@ -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'])]

View file

@ -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)

View file

@ -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)

View file

@ -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]);