Mercurial > p > roundup > code
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) |
