Example #1
0
File: db1.py Project: nagyist/agilo
def do_upgrade(env, ver, cursor, db_connector):
    link_table = Table('link',
                       key=('src', 'dest'))[Column('src', type='integer'),
                                            Column('dest', type='integer')]

    create_table_with_cursor(link_table, cursor, db_connector)
    return True
Example #2
0
 def update_backlog_ticket_table(self):
     self.delete_items_without_ticket_id()
     table_name = {'name': 'agilo_backlog_ticket'}
     self.cursor.execute('ALTER TABLE %(name)s RENAME TO %(name)s_old' % table_name)
     self.drop_postgres_primary_key()
     create_table_with_cursor(self.new_table(), self.cursor, self.db_connector)
     self.copy_values_to_new_table()
     self.cursor.execute('DROP TABLE %(name)s_old' % table_name)
Example #3
0
def do_upgrade(env, ver, cursor, db_connector):
    link_table = Table('link', key=('src', 'dest'))[
        Column('src', type='integer'),
        Column('dest', type='integer')
    ]
    
    create_table_with_cursor(link_table, cursor, db_connector)
    return True
Example #4
0
def _create_new_tables(cursor, db_connector):
    contingent = \
        Table('agilo_contingent', key=('name', 'sprint'))[
            Column('name'),
            Column('sprint'),
            Column('amount', type='real'),
            Column('actual', type='real'),
        ]
    create_table_with_cursor(contingent, cursor, db_connector)
Example #5
0
File: db3.py Project: nagyist/agilo
def _create_new_tables(cursor, db_connector):
    contingent = \
        Table('agilo_contingent', key=('name', 'sprint'))[
            Column('name'),
            Column('sprint'),
            Column('amount', type='real'),
            Column('actual', type='real'),
        ]
    create_table_with_cursor(contingent, cursor, db_connector)
Example #6
0
 def create_burndown_changes_table(self):
     burndown_changes_table = Table('agilo_burndown_data_change', key=('id',))[
         Column('id', type='integer', auto_increment=True),
         Column('burndown_type'),
         Column('scope'),
         Column('timestamp', type='int'),
         Column('value')
     ]
     create_table_with_cursor(burndown_changes_table, self.cursor, self.db_connector)
Example #7
0
File: db7.py Project: nagyist/agilo
 def update_backlog_ticket_table(self):
     self.delete_items_without_ticket_id()
     table_name = {'name': 'agilo_backlog_ticket'}
     self.cursor.execute('ALTER TABLE %(name)s RENAME TO %(name)s_old' %
                         table_name)
     self.drop_postgres_primary_key()
     create_table_with_cursor(self.new_table(), self.cursor,
                              self.db_connector)
     self.copy_values_to_new_table()
     self.cursor.execute('DROP TABLE %(name)s_old' % table_name)
Example #8
0
def _rename_column_key_in_team_metrics_entry(env, cursor, db_connector):
    team_metrics_entry = \
        Table('team_metrics_entry', key=('team', 'sprint', 'metrics_key'))[
            Column('team'),
            Column('sprint'),
            Column('metrics_key'),
            Column('value', type='real'),
        ]
    if get_db_type(env) == 'mysql':
        # Agilo 0.7 before final (db version 3) was unable to run with 
        # MySQL. So the table could not be created in db version 2. 
        # Therefore we can just create a new one.
        create_table_with_cursor(team_metrics_entry, cursor, db_connector)
    else:
        old_team_metrics_entry_colum_names = ['team', 'sprint', 'key', 'value']
        recreate_table_with_changed_types(team_metrics_entry, cursor, db_connector, 
                                          old_column_names=old_team_metrics_entry_colum_names)
Example #9
0
def recreate_table_with_changed_types(table, cursor, db_connector, 
                                      old_table_name=None, old_column_names=None):
    if old_table_name == None:
        old_table_name = table.name
    temporary_table_name = old_table_name + '_old'
    
    rename_table_and_drop_all_keys(cursor, old_table_name, temporary_table_name)
    create_table_with_cursor(table, cursor, db_connector)
    
    colum_names = [c.name for c in table.columns]
    if old_column_names == None:
        old_column_names = colum_names
    assert len(colum_names) == len(old_column_names)
    col_string = ', '.join(colum_names)
    old_col_string = ', '.join(old_column_names)
    insert_sql  = 'INSERT INTO %s (%s) SELECT %s FROM %s' % (table.name, col_string, old_col_string, temporary_table_name)
    cursor.execute(insert_sql)
    cursor.execute("DROP TABLE %s" % temporary_table_name)
Example #10
0
File: db3.py Project: nagyist/agilo
def _rename_column_key_in_team_metrics_entry(env, cursor, db_connector):
    team_metrics_entry = \
        Table('team_metrics_entry', key=('team', 'sprint', 'metrics_key'))[
            Column('team'),
            Column('sprint'),
            Column('metrics_key'),
            Column('value', type='real'),
        ]
    if get_db_type(env) == 'mysql':
        # Agilo 0.7 before final (db version 3) was unable to run with
        # MySQL. So the table could not be created in db version 2.
        # Therefore we can just create a new one.
        create_table_with_cursor(team_metrics_entry, cursor, db_connector)
    else:
        old_team_metrics_entry_colum_names = ['team', 'sprint', 'key', 'value']
        recreate_table_with_changed_types(
            team_metrics_entry,
            cursor,
            db_connector,
            old_column_names=old_team_metrics_entry_colum_names)
Example #11
0
def recreate_table_with_changed_types(table,
                                      cursor,
                                      db_connector,
                                      old_table_name=None,
                                      old_column_names=None):
    if old_table_name == None:
        old_table_name = table.name
    temporary_table_name = old_table_name + '_old'

    rename_table_and_drop_all_keys(cursor, old_table_name,
                                   temporary_table_name)
    create_table_with_cursor(table, cursor, db_connector)

    colum_names = [c.name for c in table.columns]
    if old_column_names == None:
        old_column_names = colum_names
    assert len(colum_names) == len(old_column_names)
    col_string = ', '.join(colum_names)
    old_col_string = ', '.join(old_column_names)
    insert_sql = 'INSERT INTO %s (%s) SELECT %s FROM %s' % (
        table.name, col_string, old_col_string, temporary_table_name)
    cursor.execute(insert_sql)
    cursor.execute("DROP TABLE %s" % temporary_table_name)
Example #12
0
def _create_new_tables(env, cursor, db_connector):
    backlog = \
        Table('backlog', key=('name'))[
            Column('name'),
            Column('b_type', type='integer'),
            Column('description'),
            Column('ticket_types'),
            Column('sorting_keys'),
            Column('b_strict', type='integer')
        ]

    backlog_ticket = \
        Table('backlog_ticket', key=('name', 'pos', 'scope'))[
            Column('name'), # The name of the Backlog
            Column('pos', type='integer'), # The position of the ticket
            Column('scope'), # The scope is the name of a Sprint or a Milestone
            Column('level', type='integer'), # The level in the hierarchy of this ticket
            Column('ticket_id', type='integer') # The id of the ticket
        ]

    calendar_entry = \
        Table('calendar_entry', key=('date', 'teammember'))[
            Column('date', type='integer'),
            Column('teammember'),
            Column('hours', type='real'),
        ]

    team = \
        Table('team', key=('name'))[
            Column('name'),
            Column('description'),
        ]

    team_member = \
        Table('team_member', key=('name'))[
            Column('name'),
            Column('team'),
            Column('description'),
            Column('ts_mon', type='real'),
            Column('ts_tue', type='real'),
            Column('ts_wed', type='real'),
            Column('ts_thu', type='real'),
            Column('ts_fri', type='real'),
            Column('ts_sat', type='real'),
            Column('ts_sun', type='real'),
        ]
    new_tables = [
        backlog,
        backlog_ticket,
        calendar_entry,
        team,
        team_member,
    ]

    sprint = \
        Table('sprint', key=('name'))[
            Column('name'),
            Column('description'),
            Column('start', type='integer'),
            Column('end', type='integer'),
            Column('milestone'),
            Column('team'),
        ]
    if get_db_type(env) == 'postgres':
        # For PostgreSQL 'end' is a reserved word. Agilo 0.7 before final
        # (db version 3) therefore were unable to run with PostgreSQL.
        #
        # But we have to create sprints for every milestone in 0.6 and for that
        # we need a sprint table so we just use the table definition from
        # 0.7 final here. db3 will take not to recreate the table.
        end_column = sprint.columns[3]
        assert end_column.name == 'end'
        end_column.name = 'sprint_end'
    new_tables.append(sprint)

    if get_db_type(env) != 'mysql':
        # In MySQL 'key' is a reserved word. Agilo 0.7 before final
        # (db version 3) therefore were unable to run with MySQL. So we
        # just skip the table creation here. db3 will create the table with the
        # correct columns (and fixed column names) for us.
        team_metrics_entry = \
            Table('team_metrics_entry', key=('team', 'sprint', 'key'))[
                Column('team'),
                Column('sprint'),
                Column('key'),
                Column('value', type='real'),
            ]
        new_tables.append(team_metrics_entry)

    for table in new_tables:
        create_table_with_cursor(table, cursor, db_connector)
    return sprint
Example #13
0
def _create_new_tables(env, cursor, db_connector):
    backlog = \
        Table('backlog', key=('name'))[
            Column('name'),
            Column('b_type', type='integer'),
            Column('description'),
            Column('ticket_types'),
            Column('sorting_keys'),
            Column('b_strict', type='integer')
        ]
    
    backlog_ticket = \
        Table('backlog_ticket', key=('name', 'pos', 'scope'))[
            Column('name'), # The name of the Backlog
            Column('pos', type='integer'), # The position of the ticket
            Column('scope'), # The scope is the name of a Sprint or a Milestone
            Column('level', type='integer'), # The level in the hierarchy of this ticket
            Column('ticket_id', type='integer') # The id of the ticket
        ]
    
    calendar_entry = \
        Table('calendar_entry', key=('date', 'teammember'))[
            Column('date', type='integer'),
            Column('teammember'),
            Column('hours', type='real'),
        ]
    
    team = \
        Table('team', key=('name'))[
            Column('name'),
            Column('description'),
        ]
    
    team_member = \
        Table('team_member', key=('name'))[
            Column('name'),
            Column('team'),
            Column('description'),
            Column('ts_mon', type='real'),
            Column('ts_tue', type='real'),
            Column('ts_wed', type='real'),
            Column('ts_thu', type='real'),
            Column('ts_fri', type='real'),
            Column('ts_sat', type='real'),
            Column('ts_sun', type='real'),
        ]
    new_tables = [backlog, backlog_ticket, calendar_entry, team, team_member,]
    
    sprint = \
        Table('sprint', key=('name'))[
            Column('name'),
            Column('description'),
            Column('start', type='integer'),
            Column('end', type='integer'),
            Column('milestone'),
            Column('team'),
        ]
    if get_db_type(env) == 'postgres':
        # For PostgreSQL 'end' is a reserved word. Agilo 0.7 before final 
        # (db version 3) therefore were unable to run with PostgreSQL.
        # 
        # But we have to create sprints for every milestone in 0.6 and for that
        # we need a sprint table so we just use the table definition from 
        # 0.7 final here. db3 will take not to recreate the table.
        end_column = sprint.columns[3]
        assert end_column.name == 'end'
        end_column.name = 'sprint_end'
    new_tables.append(sprint)
    
    if get_db_type(env) != 'mysql':
        # In MySQL 'key' is a reserved word. Agilo 0.7 before final 
        # (db version 3) therefore were unable to run with MySQL. So we 
        # just skip the table creation here. db3 will create the table with the
        # correct columns (and fixed column names) for us.
        team_metrics_entry = \
            Table('team_metrics_entry', key=('team', 'sprint', 'key'))[
                Column('team'),
                Column('sprint'),
                Column('key'),
                Column('value', type='real'),
            ]
        new_tables.append(team_metrics_entry)
    
    for table in new_tables:
        create_table_with_cursor(table, cursor, db_connector)
    return sprint