root/discussionplugin/0.9/tracdiscussion/init.py

Revision 1253, 1.3 kB (checked in by Blackhex, 2 years ago)

DiscussionPlugin:

Some changes from 0.10 branch ported to 0.9

Line 
1 from trac.core import *
2 from trac.db import *
3 from trac.env import IEnvironmentSetupParticipant
4
5 # Last discussion database shcema version
6 last_db_version = 2
7
8 class DiscussionInit(Component):
9     """ Initialise database and environment for discussion component """
10     implements(IEnvironmentSetupParticipant)
11
12     # IEnvironmentSetupParticipanttr
13     def environment_created(self):
14         pass
15
16     def environment_needs_upgrade(self, db):
17         cursor = db.cursor()
18
19         # Is database up to date?
20         return self._get_db_version(cursor) != last_db_version
21
22     def upgrade_environment(self, db):
23         cursor = db.cursor()
24
25         # Get current database schema version
26         db_version = self._get_db_version(cursor)
27
28         # Perform incremental upgrades
29         for I in range(db_version + 1, last_db_version + 1):
30             script_name  = 'db%i' % (I)
31             module = __import__('tracdiscussion.db.%s' % (script_name),
32             globals(), locals(), ['do_upgrade'])
33             module.do_upgrade(self.env, cursor)
34
35     def _get_db_version(self, cursor):
36         try:
37             sql = "SELECT value FROM system WHERE name='discussion_version'"
38             self.log.debug(sql)
39             cursor.execute(sql)
40             for row in cursor:
41                 return int(row[0])
42             return 0
43         except:
44             return 0
Note: See TracBrowser for help on using the browser.