Example #1
0
def _remove_views_which_depend_on_link_table(env, cursor):
    if get_db_type(env) == 'postgres':
        # These views were created by Agilo 0.6. As they create references to
        # the link table, we can not prefix it with 'agilo_' later. These views
        # are not needed for Agilo 0.7 so we just drop them.
        cursor.execute('DROP VIEW aggregated_user_stories')
        cursor.execute('DROP VIEW aggregated_rt')
Example #2
0
File: db3.py Project: nagyist/agilo
def _remove_views_which_depend_on_link_table(env, cursor):
    if get_db_type(env) == 'postgres':
        # These views were created by Agilo 0.6. As they create references to
        # the link table, we can not prefix it with 'agilo_' later. These views
        # are not needed for Agilo 0.7 so we just drop them.
        cursor.execute('DROP VIEW aggregated_user_stories')
        cursor.execute('DROP VIEW aggregated_rt')
Example #3
0
File: db7.py Project: nagyist/agilo
 def drop_postgres_primary_key(self):
     if get_db_type(self.env) != 'postgres':
         return
     if not self.has_postgres_primary_key('agilo_backlog_ticket_pk'):
         return
     self.cursor.execute(
         'ALTER TABLE agilo_backlog_ticket_old DROP CONSTRAINT agilo_backlog_ticket_pk'
     )
Example #4
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 #5
0
def _rename_column_end_in_sprint_table(env, cursor, db_connector):
    if get_db_type(env) != 'postgres':
        # Agilo 0.7 before final (db version 3) was unable to run with 
        # PostgreSQL. As we need the sprint table in db2 already, we had to 
        # create it with the new table layout. Therefore we don't change the
        # postgres table here.
        sprint = \
            Table('sprint', key=('name'))[
                Column('name'),
                Column('description'),
                Column('start', type='integer'),
                Column('sprint_end', type='integer'),
                Column('milestone'),
                Column('team'),
            ]
        old_sprint_column_names = ['name', 'description', 'start', 'end', 
                                   'milestone', 'team']
        recreate_table_with_changed_types(sprint, cursor, db_connector, 
                                          old_column_names=old_sprint_column_names)
Example #6
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 #7
0
File: db3.py Project: nagyist/agilo
def _rename_column_end_in_sprint_table(env, cursor, db_connector):
    if get_db_type(env) != 'postgres':
        # Agilo 0.7 before final (db version 3) was unable to run with
        # PostgreSQL. As we need the sprint table in db2 already, we had to
        # create it with the new table layout. Therefore we don't change the
        # postgres table here.
        sprint = \
            Table('sprint', key=('name'))[
                Column('name'),
                Column('description'),
                Column('start', type='integer'),
                Column('sprint_end', type='integer'),
                Column('milestone'),
                Column('team'),
            ]
        old_sprint_column_names = [
            'name', 'description', 'start', 'end', 'milestone', 'team'
        ]
        recreate_table_with_changed_types(
            sprint,
            cursor,
            db_connector,
            old_column_names=old_sprint_column_names)
Example #8
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 #9
0
 def drop_postgres_primary_key(self):
     if get_db_type(self.env) != 'postgres':
         return
     if not self.has_postgres_primary_key('agilo_backlog_ticket_pk'):
         return
     self.cursor.execute('ALTER TABLE agilo_backlog_ticket_old DROP CONSTRAINT agilo_backlog_ticket_pk')
Example #10
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