comparison roundup/backends/rdbms_common.py @ 1519:6fede2aa6a12

added ability to restore retired nodes
author Andrey Lebedev <kedder@users.sourceforge.net>
date Sun, 16 Mar 2003 22:24:56 +0000
parents a516bbb9896b
children 63aa7be52d2c
comparison
equal deleted inserted replaced
1518:bb843662b708 1519:6fede2aa6a12
1 # $Id: rdbms_common.py,v 1.43 2003-03-14 02:51:25 richard Exp $ 1 # $Id: rdbms_common.py,v 1.44 2003-03-16 22:24:55 kedder Exp $
2 ''' Relational database (SQL) backend common code. 2 ''' Relational database (SQL) backend common code.
3 3
4 Basics: 4 Basics:
5 5
6 - map roundup classes to relational tables 6 - map roundup classes to relational tables
892 self.do_journal = 1 892 self.do_journal = 1
893 893
894 # do the db-related init stuff 894 # do the db-related init stuff
895 db.addclass(self) 895 db.addclass(self)
896 896
897 self.auditors = {'create': [], 'set': [], 'retire': []} 897 self.auditors = {'create': [], 'set': [], 'retire': [], 'restore': []}
898 self.reactors = {'create': [], 'set': [], 'retire': []} 898 self.reactors = {'create': [], 'set': [], 'retire': [], 'restore': []}
899 899
900 def schema(self): 900 def schema(self):
901 ''' A dumpable version of the schema that we can store in the 901 ''' A dumpable version of the schema that we can store in the
902 database 902 database
903 ''' 903 '''
1471 sql = 'update _%s set __retired__=%s where id=%s'%(self.classname, 1471 sql = 'update _%s set __retired__=%s where id=%s'%(self.classname,
1472 self.db.arg, self.db.arg) 1472 self.db.arg, self.db.arg)
1473 if __debug__: 1473 if __debug__:
1474 print >>hyperdb.DEBUG, 'retire', (self, sql, nodeid) 1474 print >>hyperdb.DEBUG, 'retire', (self, sql, nodeid)
1475 self.db.cursor.execute(sql, (1, nodeid)) 1475 self.db.cursor.execute(sql, (1, nodeid))
1476 if self.do_journal:
1477 self.db.addjournal(self.classname, nodeid, 'retired', None)
1476 1478
1477 self.fireReactors('retire', nodeid, None) 1479 self.fireReactors('retire', nodeid, None)
1478 1480
1481 def restore(self, nodeid):
1482 '''Restpre a retired node.
1483
1484 Make node available for all operations like it was before retirement.
1485 '''
1486 if self.db.journaltag is None:
1487 raise DatabaseError, 'Database open read-only'
1488
1489 self.fireAuditors('restore', nodeid, None)
1490
1491 # use the arg for __retired__ to cope with any odd database type
1492 # conversion (hello, sqlite)
1493 sql = 'update _%s set __retired__=%s where id=%s'%(self.classname,
1494 self.db.arg, self.db.arg)
1495 if __debug__:
1496 print >>hyperdb.DEBUG, 'restore', (self, sql, nodeid)
1497 self.db.cursor.execute(sql, (0, nodeid))
1498 if self.do_journal:
1499 self.db.addjournal(self.classname, nodeid, 'restored', None)
1500
1501 self.fireReactors('restore', nodeid, None)
1502
1479 def is_retired(self, nodeid): 1503 def is_retired(self, nodeid):
1480 '''Return true if the node is rerired 1504 '''Return true if the node is rerired
1481 ''' 1505 '''
1482 sql = 'select __retired__ from _%s where id=%s'%(self.classname, 1506 sql = 'select __retired__ from _%s where id=%s'%(self.classname,
1483 self.db.arg) 1507 self.db.arg)

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