Changeset 16098


Ignore:
Timestamp:
Dec 18, 2016, 2:54:17 PM (7 years ago)
Author:
Peter Suter
Message:

CardsPlugin: Trac 1.3 compatible IEnvironmentSetupParticipant.
Since trac:ticket:11605 the db parameters are not needed anymore.
Since trac:ticket:11901 they are not allowed anymore.
Since trac:ticket:8172 we can use helpers to simplify this a lot.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cardsplugin/trunk/cards/core.py

    r14811 r16098  
    127127
    128128    def environment_created(self):
    129         db_connector, _ = DatabaseManager(self.env).get_connector()
    130         with self.env.db_transaction as db:
    131             cursor = db.cursor()
    132             for table in SCHEMA:
    133                 for stmt in db_connector.to_sql(table):
    134                     cursor.execute(stmt)
    135             cursor.execute("""
    136                 INSERT INTO system (name, value)
    137                 VALUES (%s, %s)
    138                 """, (PLUGIN_NAME, PLUGIN_VERSION))
     129        dbm = DatabaseManager(self.env)
     130        dbm.create_tables(SCHEMA)
     131        dbm.set_database_version(PLUGIN_VERSION, PLUGIN_NAME)
    139132
    140     def environment_needs_upgrade(self, db):
    141         dbver = self.get_db_version()
    142         if dbver == PLUGIN_VERSION:
    143             return False
    144         elif dbver > PLUGIN_VERSION:
    145             self.env.log.info("%s database schema version is %s, should be %s",
    146                          PLUGIN_NAME, dbver, PLUGIN_VERSION)
    147         return True
     133    def environment_needs_upgrade(self):
     134        dbm = DatabaseManager(self.env)
     135        return dbm.needs_upgrade(PLUGIN_VERSION, PLUGIN_NAME)
    148136
    149     def upgrade_environment(self, db):
    150         db_connector, _ = DatabaseManager(self.env).get_connector()
    151         cursor = db.cursor()
    152         dbver = self.get_db_version()
    153         if dbver == 0:
    154             self.env.log.info("Initialize %s database schema to version %s",
    155                          PLUGIN_NAME, PLUGIN_VERSION)
    156             for table in SCHEMA:
    157                 for stmt in db_connector.to_sql(table):
    158                     cursor.execute(stmt)
    159             cursor.execute("""
    160                 INSERT INTO system (name, value)
    161                 VALUES (%s, %s)
    162                 """, (PLUGIN_NAME, PLUGIN_VERSION))
     137    def upgrade_environment(self):
     138        dbm = DatabaseManager(self.env)
     139        if dbm.get_database_version(PLUGIN_NAME) == 0:
     140            dbm.create_tables(SCHEMA)
     141            dbm.set_database_version(PLUGIN_VERSION, PLUGIN_NAME)
    163142        else:
    164             while dbver != PLUGIN_VERSION:
    165                 dbver = dbver + 1
    166                 self.env.log.info("Upgrade %s database schema to version %s",
    167                          PLUGIN_NAME, dbver)
    168                 modulename = 'db%i' % dbver
    169                 upgrades = __import__('cards.upgrades', globals(), locals(), [modulename])
    170                 script = getattr(upgrades, modulename)
    171                 script.do_upgrade(self.env, dbver, cursor)
    172             cursor.execute("""
    173                 UPDATE system
    174                 SET value=%s
    175                 WHERE name=%s
    176                 """, (PLUGIN_VERSION, PLUGIN_NAME))
    177 
    178     def get_db_version(self):
    179         rows = self.env.db_query("""
    180                 SELECT value FROM system WHERE name='%s'
    181                 """ % PLUGIN_NAME)
    182         return int(rows[0][0]) if rows else 0
     143            dbm.upgrade(PLUGIN_VERSION, PLUGIN_NAME, 'cards.upgrades')
    183144
    184145    # ITemplateProvider methods
Note: See TracChangeset for help on using the changeset viewer.