lib/actions.py
changeset 57 31271426f879
child 58 004a32370ba5
equal deleted inserted replaced
56:6b31934e5b2e 57:31271426f879
       
     1 import imp
       
     2 import sys
       
     3 import os
       
     4 
       
     5 
       
     6 class ActionsLoader:
       
     7 	def __init__(self):
       
     8 		self._actions = {}
       
     9 	def keys(self):
       
    10 		return self._actions.keys()
       
    11 	def _getmodule(self, name):
       
    12 		modpath = os.path.join(os.path.dirname(__file__), 'actions')
       
    13 		fp, pathname, description = imp.find_module(name, [modpath])
       
    14 		try:
       
    15 			return imp.load_module(name, fp, pathname, description)
       
    16 		finally:
       
    17 			if fp:
       
    18 				fp.close()
       
    19 	def __getitem__(self, item):
       
    20 		mname, fname = self._actions[item]
       
    21 		return self._getmodule(mname).__dict__[fname]
       
    22 	def __setitem__(self, key, value):
       
    23 		self._actions[key] = value
       
    24 		
       
    25 
       
    26 actions = ActionsLoader()
       
    27 actions['default'] = ('index', 'do_it')
       
    28 actions['index'] = ('index', 'do_it')
       
    29 actions['edit'] = ('edit', 'do_it')
       
    30 actions['import'] = ('imp_xbel', 'do_it')
       
    31 actions['add'] = ('add', 'do_it')
       
    32 actions['confirm'] = ('add', 'do_it')