runbot/runbot_merge/migrations/13.0.1.4/pre-migration.py

36 lines
1.3 KiB
Python

import re
def migrate(cr, version):
""" required_statuses is now a separate object in its own table
"""
# apparently the DDL has already been updated but the reflection gunk
cr.execute("""
DELETE FROM ir_model_fields
WHERE model = 'runbot_merge.pull_requests.tagging'
AND name in ('state_from', 'state_to')
""")
cr.execute("""
CREATE TABLE runbot_merge_repository_status (
id SERIAL NOT NULL PRIMARY KEY,
context VARCHAR NOT NULL,
repo_id INTEGER NOT NULL REFERENCES runbot_merge_repository (id) ON DELETE CASCADE,
prs BOOLEAN,
stagings BOOLEAN
)
""")
cr.execute("""
CREATE TABLE runbot_merge_repository_status_branch (
status_id INTEGER NOT NULL REFERENCES runbot_merge_repository_status (id) ON DELETE CASCADE,
branch_id INTEGER NOT NULL REFERENCES runbot_merge_branch (id) ON DELETE CASCADE
)
""")
cr.execute('select id, required_statuses from runbot_merge_repository')
for repo, statuses in cr.fetchall():
for st in re.split(r',\s*', statuses):
cr.execute("""
INSERT INTO runbot_merge_repository_status (context, repo_id, prs, stagings)
VALUES (%s, %s, true, true)
""", [st, repo])