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.

Roundup Issue Tracker: http://roundup-tracker.org/