Selaa lähdekoodia

[added] set_desktop_icons in desktop.py

version-14
Rushabh Mehta 9 vuotta sitten
vanhempi
commit
a612e6e0b5
4 muutettua tiedostoa jossa 49 lisäystä ja 11 poistoa
  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 Näytä tiedosto

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


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




+ 2
- 1
frappe/core/page/desktop/desktop.js Näytä tiedosto

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


+ 42
- 8
frappe/desk/doctype/desktop_icon/desktop_icon.py Näytä tiedosto

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


@frappe.whitelist() @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''' '''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}) 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'): if icon_name and frappe.db.get_value('Desktop Icon', icon_name, 'hidden'):
frappe.db.set_value('Desktop Icon', icon_name, 'hidden', 0) 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 = frappe.db.get_value('DocType', _doctype, 'module')
module_icon = frappe.get_value('Desktop Icon', {'standard':1, 'module_name':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: if not module_icon:
module_icon = frappe._dict() 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 module_icon.reverse = 0 if (len(opts) > 1) else 1


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


return 1
return new_icon.name


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


@frappe.whitelist() @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): if isinstance(new_order, basestring):
new_order = json.loads(new_order) new_order = json.loads(new_order)
for i, module_name in enumerate(new_order): for i, module_name in enumerate(new_order):
if module_name not in ('Explore',): 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) icon.db_set('idx', i)


clear_desktop_icons_cache() 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): def set_hidden_list(hidden_list, user=None):
'''Sets property `hidden`=1 in **Desktop Icon** for given user. '''Sets property `hidden`=1 in **Desktop Icon** for given user.
If user is None then it will set global values. If user is None then it will set global values.


+ 1
- 1
frappe/desk/doctype/desktop_icon/test_desktop_icon.py Näytä tiedosto

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


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


Ladataan…
Peruuta
Tallenna