root/qPloneTabs/tags/0.2.1/utils.py

Revision 486 (checked in by piv, 2 years ago)

reverting: updated version.txt 0.2.1

  • Property svn:eol-style set to native
Line 
1 """
2    Utility functions for portal_tab actions modifications.
3 """
4 from Products.CMFCore.Expression import Expression
5 from Products.CMFCore.utils import getToolByName
6
7 def getPortalTabs(self):
8     """ Return all portal actions with 'portal_tabs' category """
9     return filter(lambda a: a.category == 'portal_tabs', getToolByName(self, 'portal_actions')._cloneActions())
10
11 def editAction(self, num, name, id, action='', condition=''):
12     """ Function for editing given action """
13     actions = getToolByName(self, 'portal_actions')._actions
14     tabs = filter(lambda a: a.category == 'portal_tabs', actions)
15     tab = tabs[int(num)]
16     if id: tab.id = id
17     if name: tab.title = name
18     if isinstance(condition, basestring): tab.condition = Expression(condition)
19     if isinstance(action, basestring): tab.setActionExpression(Expression(action))
20     return True
21
22 def reorderActions(self, idxs):
23     """ Reorder portal_tabs actions in given order """
24     idxs = list(map(int,idxs))
25     portal_actions = getToolByName(self, 'portal_actions')
26     actions = portal_actions._cloneActions()
27     tabs = [[action, actions.index(action)] for action in actions if action.category == 'portal_tabs']
28     for idx in range(len(idxs)):
29         actions[tabs[idx][1]] = tabs[idxs[idx]][0]
30     portal_actions._actions = tuple(actions)
31     return idxs
32
33 def deleteAction(self, idx, id):
34     """ Delete portal_tabs action with given index """
35     portal_actions = getToolByName(self, 'portal_actions')
36     actions = portal_actions._cloneActions()
37     tabs = filter(lambda a: a.category == 'portal_tabs', actions)
38     if tabs[int(idx)].id == id:
39         portal_actions.deleteActions([actions.index(tabs[int(idx)]),])
40     return id
Note: See TracBrowser for help on using the browser.