Ticket #70: agiletrac-70-iteration-tickets.patch

File agiletrac-70-iteration-tickets.patch, 2.2 KB (added by dfraser, 3 years ago)

Patch to the plugin to adjust the database

  • agiletrac/env.py

     
    22from trac.env import IEnvironmentSetupParticipant 
    33from trac.db import * 
    44 
    5 current_db_version = 1 
     5current_db_version = 2 
    66 
    77class AgileTracSetup(Component): 
    88    """Central functionality for the Agile-Trac plugin.""" 
  • agiletrac/db/db2.py

     
     1from trac.db import Table, Column, Index, DatabaseManager 
     2 
     3def do_upgrade(env, cursor): 
     4 
     5    """Upgrade the iteration table 
     6    """ 
     7    cursor.execute("CREATE TEMPORARY TABLE iteration_old AS SELECT * FROM iteration") 
     8    cursor.execute("DROP TABLE iteration") 
     9 
     10    iteration_table = Table('iteration', key='id')[ 
     11        Column('id', auto_increment=True), 
     12        Column('summary'), 
     13        Column('start_date', type='int'), 
     14        Column('end_date', type='int'), 
     15        Index(['start_date']), 
     16        Index(['end_date'])] 
     17 
     18    iteration_ticket_table = Table('iteration_ticket')[ 
     19        Column('iteration_id', type='int'), 
     20        Column('ticket_id', type='int'), 
     21        Index(['iteration_id']), 
     22        Index(['ticket_id'])] 
     23 
     24    db_connector, _ = DatabaseManager(env)._get_connector() 
     25    for stmt in db_connector.to_sql(iteration_table): 
     26        cursor.execute(stmt) 
     27 
     28    for stmt in db_connector.to_sql(iteration_ticket_table): 
     29        cursor.execute(stmt) 
     30 
     31    cursor.execute("INSERT INTO iteration (id, summary, start_date, end_date) " 
     32                   "SELECT id, summary, start_date, end_date FROM iteration_old") 
     33    cursor.execute("SELECT id, tickets FROM iteration_old") 
     34    for iteration_id, tickets in cursor.fetchall(): 
     35        tickets = [int(i) for i in tickets.split() if i.strip()] 
     36        for ticket_id in tickets: 
     37            cursor.execute("INSERT INTO iteration_ticket (iteration_id, ticket_id) " 
     38                           "VALUES (%s, %s)" % (iteration_id, ticket_id)) 
     39    cursor.execute("DROP TABLE iteration_old") 
     40    # Set database schema version. 
     41    cursor.execute("UPDATE system SET value=2 WHERE name='agiletrac_version' ") 
     42