]> jfr.im git - erebus.git/blame - ctlmod.py
Starting to work on users in DB
[erebus.git] / ctlmod.py
CommitLineData
db50981b 1import sys
2
3modules = {}
4
5def isloaded(modname): return modname in modules
6def modhas(modname, attname): return getattr(self.modules[modname], attname, None) is not None
7
8def load(parent, modname):
9 if not isloaded(modname):
10 mod = __import__(modname)
11 modules[modname] = mod
12 ret = mod.modstart(parent)
13 if not ret:
14 del modules[modname]
15 return ret
16 else:
17 return -1
18
19def unload(parent, modname):
20 if isloaded(modname):
21 self.modules[modname].modstop(parent)
22 else:
23 return -1
24
25def reloadmod(parent, modname):
26 if isloaded(modname):
27 if modhas(modname, 'modrestart'): self.modules[modname].modrestart(parent)
28 else: self.modules[modname].modstop(parent)
29
30 reload(self.modules[modname])
31
32 if modhas(modname, 'modrestarted'): self.modules[modname].modrestarted(parent)
33 else: self.modules[modname].modstart(parent)
34
35 else:
36 load(parent, modname)
37
38def loadall(parent, modlist):
39 for m in modlist: load(parent, m)
40def unloadall(parent, modlist):
41 for m in modlist: unload(parent, m)
42def reloadall(parent, modlist):
43 for m in modlist: reloadmod(parent, m)
44
45sys.path.append('modules')