root/cherokee/trunk/admin/Module.py

Revision 2007, 1.5 kB (checked in by taher, 3 months ago)

--

Line 
1 import imp, sys
2 from CherokeeManagement import cherokee_has_plugin
3
4 class Module:
5     def __init__ (self, id, cfg, prefix, submit_url):
6         self._id        = id
7         self._cfg       = cfg
8         self._prefix    = prefix
9         self.submit_url = submit_url
10
11 def module_obj_factory_detailed (mod_type, name, cfg, prefix, submit_url, **kwargs):
12     # Assemble module name
13     mod_name = reduce (lambda x,y: x+y, map(lambda x: x.capitalize(), name.split('_')))
14
15     # Load the module source file
16     mod = imp.load_source (name, "%s%s.py" % (mod_type, mod_name))
17     sys.modules[name] = mod
18
19     # Instance the object
20     src = "mod_obj = mod.%s%s(cfg, prefix, submit_url)" % (mod_type, mod_name)
21     exec(src)
22
23     # Add properties
24     for prop in kwargs:
25         mod_obj.__dict__[prop] = kwargs[prop]
26
27     return mod_obj
28
29 def module_get_help (name):
30     if not name:
31         return []
32     mod_name = reduce (lambda x,y: x+y, map(lambda x: x.capitalize(), name.split('_')))
33     mod = __import__("Module%s" % (mod_name))
34     return getattr (mod, "HELPS", [])
35
36
37 def module_obj_factory (name, cfg, prefix, submit_url, **kwargs):
38     return module_obj_factory_detailed ("Module", name, cfg, prefix, submit_url, **kwargs)
39
40 def modules_available (module_list):
41     new_module_list = []
42
43     for entry in module_list:
44         assert (type(entry) == tuple)
45         assert (len(entry) == 2)
46         plugin, name = entry
47
48         if not len(plugin) or \
49             cherokee_has_plugin (plugin):
50             new_module_list.append(entry)
51
52     return new_module_list
Note: See TracBrowser for help on using the browser.