浏览代码

[added] set_desktop_icons in desktop.py

version-14
Rushabh Mehta 9 年前
父节点
当前提交
a612e6e0b5
共有 4 个文件被更改,包括 49 次插入11 次删除
  1. +4
    -1
      frappe/commands.py
  2. +2
    -1
      frappe/core/page/desktop/desktop.js
  3. +42
    -8
      frappe/desk/doctype/desktop_icon/desktop_icon.py
  4. +1
    -1
      frappe/desk/doctype/desktop_icon/test_desktop_icon.py

+ 4
- 1
frappe/commands.py 查看文件

@@ -467,7 +467,10 @@ def execute(context, method, args=None, kwargs=None):
frappe.connect()

if args:
args = eval(args)
try:
args = eval(args)
except NameError:
args = [args]
else:
args = ()



+ 2
- 1
frappe/core/page/desktop/desktop.js 查看文件

@@ -115,7 +115,8 @@ $.extend(frappe.desktop, {
frappe.call({
method: 'frappe.desk.doctype.desktop_icon.desktop_icon.set_order',
args: {
'new_order': new_order
'new_order': new_order,
'user': frappe.session.user
},
quiet: true
});


+ 42
- 8
frappe/desk/doctype/desktop_icon/desktop_icon.py 查看文件

@@ -88,8 +88,12 @@ def get_desktop_icons(user=None):
return user_icons

@frappe.whitelist()
def add_user_icon(label, link, type, _doctype):
def add_user_icon(_doctype, label=None, link=None, type='link'):
'''Add a new user desktop icon to the desktop'''

if not label: label = frappe._(_doctype)
if not link: link = 'List/{0}'.format(_doctype)

icon_name = frappe.db.exists('Desktop Icon', {'standard': 0, 'link': link, 'owner': frappe.session.user})
if icon_name and frappe.db.get_value('Desktop Icon', icon_name, 'hidden'):
frappe.db.set_value('Desktop Icon', icon_name, 'hidden', 0)
@@ -102,7 +106,7 @@ def add_user_icon(label, link, type, _doctype):

module = frappe.db.get_value('DocType', _doctype, 'module')
module_icon = frappe.get_value('Desktop Icon', {'standard':1, 'module_name':module},
['icon', 'color', 'reverse'], as_dict=True)
['name', 'icon', 'color', 'reverse'], as_dict=True)

if not module_icon:
module_icon = frappe._dict()
@@ -111,7 +115,7 @@ def add_user_icon(label, link, type, _doctype):
module_icon.reverse = 0 if (len(opts) > 1) else 1

try:
frappe.get_doc({
new_icon = frappe.get_doc({
'doctype': 'Desktop Icon',
'label': label,
'module_name': label,
@@ -127,25 +131,55 @@ def add_user_icon(label, link, type, _doctype):
}).insert(ignore_permissions=True)
clear_desktop_icons_cache()

return 1
return new_icon.name

except Exception, e:
raise e
else:
return 1
return icon_name

@frappe.whitelist()
def set_order(new_order):
'''set new order by duplicating user icons'''
def set_order(new_order, user=None):
'''set new order by duplicating user icons (if user is set) or set global order'''
if isinstance(new_order, basestring):
new_order = json.loads(new_order)
for i, module_name in enumerate(new_order):
if module_name not in ('Explore',):
icon = get_user_copy(module_name, frappe.session.user)
if user:
icon = get_user_copy(module_name, user)
else:
icon = frappe.get_doc('Desktop Icon', {'module_name': module_name, 'standard': 1})
icon.db_set('idx', i)

clear_desktop_icons_cache()

def set_desktop_icons(visible_list):
'''Resets all lists and makes only the given one standard,
if the desktop icon does not exist and the name is a DocType, then will create
an icon for the doctype'''

# clear all custom
frappe.db.sql('delete from `tabDesktop Icon` where standard=0')

# set all as blocked
frappe.db.sql('update `tabDesktop Icon` set blocked=1, hidden=0')

# set as visible if present, or add icon
for module_name in visible_list:
if frappe.db.get_value('Desktop Icon', {'module_name': module_name}):
set_hidden(module_name, None, 0)
else:
if frappe.db.exists('DocType', module_name):
icon_name = add_user_icon(module_name)

# make it standard
frappe.db.set_value('Desktop Icon', icon_name, 'standard', 1)

# set the order
set_order(visible_list)

clear_desktop_icons_cache()

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.


+ 1
- 1
frappe/desk/doctype/desktop_icon/test_desktop_icon.py 查看文件

@@ -74,7 +74,7 @@ class TestDesktopIcon(unittest.TestCase):
def test_re_order_desktop_icons(self):
icons = [d.module_name for d in get_desktop_icons()]
m0, m1 = icons[0], icons[1]
set_order([m1, m0] + icons[2:])
set_order([m1, m0] + icons[2:], frappe.session.user)

# reload
icons = [d.module_name for d in get_desktop_icons()]


正在加载...
取消
保存