| | 1 | from trac.db import Table, Column, Index, DatabaseManager |
| | 2 | |
| | 3 | def 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 | |