| 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 |
|---|