in migrations/versions/14340f1e0d6b_.py [0:0]
def upgrade():
tm3_org_name = "TM3"
tm3_validator_team = "TM3-validators"
tm3_pm_team = "TM3-project-managers"
conn = op.get_bind()
# Create an undefined organisation
conn.execute("insert into organisations (name) values('" + tm3_org_name + "');")
fetch_org_id = "select * from organisations where name = '" + tm3_org_name + "';"
org_id = [r[0] for r in conn.execute(fetch_org_id)][0]
# Create two new teams associated to `undefined` organisation
create_validator_team = (
"insert into teams (visibility,invite_only,organisation_id,name) values (1,true,"
+ str(org_id)
+ ",'"
+ tm3_validator_team
+ "');"
)
conn.execute(create_validator_team)
validator_team_id = [
r[0] for r in conn.execute("select id from teams order by id desc limit 1;")
][0]
create_pm_team = (
"insert into teams (visibility,invite_only,organisation_id,name) values (1,true,"
+ str(org_id)
+ ",'"
+ tm3_pm_team
+ "');"
)
conn.execute(create_pm_team)
project_manager_team_id = [
r[0] for r in conn.execute("select id from teams order by id desc limit 1;")
][0]
# Fetch all TM3 users who are validators; role = 4
# Add them as members to the new team created for validators
existing_validators = conn.execute("select id from users where role = 4;")
for validator in existing_validators:
validator_user_id = validator[0]
# team function = 2(member) backend/models/postgis/statuses.py/TeamMemberFunctions
update_validator_team = (
"insert into team_members (active,function,team_id,user_id) values (true,2,"
+ str(validator_team_id)
+ ","
+ str(validator_user_id)
+ ");"
)
conn.execute(update_validator_team)
# Fetch all TM3 projects that has validation_permission = 2(TEAMS) or 3(TEAMS_LEVEL)
# Refer to backend/models/postgis/statuses.py/ValidationPermission
# Map the validator team to these projects with validator role
# This is applicable only for legacy TM3 projects for easy transition
existing_projects = conn.execute(
"select id from projects where validation_permission in (2,3)"
)
for project in existing_projects:
project_id = project[0]
# role = 1 (validator) backend/models/postgis/statuses.py/TeamRoles
update_project_team = (
"insert into project_teams (role, team_id, project_id) values (1,"
+ str(validator_team_id)
+ ","
+ str(project_id)
+ ");"
)
conn.execute(update_project_team)
# Fetch all users who are project managers; role = 2
# Add them as members to the new team created for project managers
# This team is only to store legacy information and is not used anywhere internally
existing_pms = conn.execute("select id from users where role = 2;")
for project_manager in existing_pms:
pm_user_id = project_manager[0]
# team function = 2(member) backend/models/postgis/statuses.py/TeamMemberFunctions
update_pm_team = (
"insert into team_members (active,function,team_id,user_id) values (true,2,"
+ str(project_manager_team_id)
+ ","
+ str(pm_user_id)
+ ");"
)
conn.execute(update_pm_team)
# Set all users role = 0 (mapper)
conn.execute("update users set role = 0 where role in (2,4);")