Mercurial > p > roundup > code
diff roundup/backends/back_metakit.py @ 3489:87e512f87bae
common initialization code and detectors interface
moved to hyperdb.py (patch from rfe [SF#413165])
| author | Alexander Smishlajev <a1s@users.sourceforge.net> |
|---|---|
| date | Tue, 24 Jan 2006 08:27:54 +0000 |
| parents | 34ada15b9936 |
| children | 0e5f15520e70 |
line wrap: on
line diff
--- a/roundup/backends/back_metakit.py Tue Jan 24 08:22:42 2006 +0000 +++ b/roundup/backends/back_metakit.py Tue Jan 24 08:27:54 2006 +0000 @@ -1,4 +1,4 @@ -# $Id: back_metakit.py,v 1.100 2006-01-23 05:24:33 richard Exp $ +# $Id: back_metakit.py,v 1.101 2006-01-24 08:27:05 a1s Exp $ '''Metakit backend for Roundup, originally by Gordon McMillan. Known Current Bugs: @@ -399,27 +399,18 @@ privateprops = None def __init__(self, db, classname, **properties): - if (properties.has_key('creation') or properties.has_key('activity') - or properties.has_key('creator') or properties.has_key('actor')): - raise ValueError, '"creation", "activity" and "creator" are '\ - 'reserved' if hasattr(db, classname): raise ValueError, "Class %s already exists"%classname - - self.db = db - self.classname = classname + hyperdb.Class.__init__ (self, db, classname, **properties) + self.db = db # why isn't this a weakref as for other backends?? self.key = None - self.ruprops = properties + self.ruprops = self.properties self.privateprops = { 'id' : hyperdb.String(), 'activity' : hyperdb.Date(), 'actor' : hyperdb.Link('user'), 'creation' : hyperdb.Date(), 'creator' : hyperdb.Link('user') } - # event -> list of callables - self.auditors = {'create': [], 'set': [], 'retire': [], 'restore': []} - self.reactors = {'create': [], 'set': [], 'retire': [], 'restore': []} - view = self.__getview() self.maxid = 1 if view: @@ -429,13 +420,8 @@ self.rbactions = [] # people reach inside!! - self.properties = self.ruprops - self.db.addclass(self) self.idcache = {} - # default is to journal changes - self.do_journal = 1 - def setid(self, maxid): self.maxid = maxid + 1 @@ -449,35 +435,6 @@ ''' self.do_journal = 0 - # - # Detector/reactor interface - # - def audit(self, event, detector): - '''Register a detector - ''' - l = self.auditors[event] - if detector not in l: - self.auditors[event].append(detector) - - def fireAuditors(self, action, nodeid, newvalues): - '''Fire all registered auditors. - ''' - for audit in self.auditors[action]: - audit(self.db, self, nodeid, newvalues) - - def react(self, event, detector): - '''Register a reactor - ''' - l = self.reactors[event] - if detector not in l: - self.reactors[event].append(detector) - - def fireReactors(self, action, nodeid, oldvalues): - '''Fire all registered reactors. - ''' - for react in self.reactors[action]: - react(self.db, self, nodeid, oldvalues) - # --- the hyperdb.Class methods def create(self, **propvalues): ''' Create a new node of this class and return its id.
