Blame alembic/versions/208b0cd232ab_colored_tags.py
|
Pierre-Yves Chibon |
717597 |
"""colored tags
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
Revision ID: 208b0cd232ab
|
|
Pierre-Yves Chibon |
717597 |
Revises: 588eabcd394c
|
|
Pierre-Yves Chibon |
717597 |
Create Date: 2016-12-27 11:52:53.355838
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
"""
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
# revision identifiers, used by Alembic.
|
|
Pierre-Yves Chibon |
717597 |
revision = '208b0cd232ab'
|
|
Pierre-Yves Chibon |
717597 |
down_revision = '588eabcd394c'
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
import collections
|
|
Pierre-Yves Chibon |
717597 |
import datetime
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
from alembic import op
|
|
Pierre-Yves Chibon |
717597 |
import sqlalchemy as sa
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
try:
|
|
Pierre-Yves Chibon |
717597 |
from pagure.lib import model
|
|
Pierre-Yves Chibon |
717597 |
except ImportError:
|
|
Pierre-Yves Chibon |
717597 |
import sys
|
|
Pierre-Yves Chibon |
717597 |
sys.path.insert(0, '.')
|
|
Pierre-Yves Chibon |
717597 |
from pagure.lib import model
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
def upgrade():
|
|
Pierre-Yves Chibon |
717597 |
""" Alter the DB schema for the changes related to colored tags. """
|
|
Pierre-Yves Chibon |
717597 |
engine = op.get_bind()
|
|
Pierre-Yves Chibon |
717597 |
Session = sa.orm.scoped_session(sa.orm.sessionmaker())
|
|
Pierre-Yves Chibon |
717597 |
Session.configure(bind=engine)
|
|
Pierre-Yves Chibon |
717597 |
session = Session()
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
projects = collections.defaultdict(list)
|
|
Pierre-Yves Chibon |
717597 |
for issue in session.query(model.Issue).all():
|
|
Pierre-Yves Chibon |
717597 |
for issuetag in issue.old_tags:
|
|
Pierre-Yves Chibon |
717597 |
tag = issuetag.tag
|
|
Pierre-Yves Chibon |
717597 |
# Add the tag to the project if it isn't already there
|
|
Pierre-Yves Chibon |
717597 |
if tag not in projects[issue.project.id]:
|
|
Pierre-Yves Chibon |
717597 |
tagobj = model.TagColored(
|
|
Pierre-Yves Chibon |
717597 |
tag=tag,
|
|
Pierre-Yves Chibon |
717597 |
project_id=issue.project.id)
|
|
Pierre-Yves Chibon |
717597 |
session.add(tagobj)
|
|
Pierre-Yves Chibon |
717597 |
session.flush()
|
|
Pierre-Yves Chibon |
717597 |
projects[issue.project.id].append(tag)
|
|
Pierre-Yves Chibon |
717597 |
else:
|
|
Pierre-Yves Chibon |
717597 |
tagobj = session.query(
|
|
Pierre-Yves Chibon |
717597 |
model.TagColored
|
|
Pierre-Yves Chibon |
717597 |
).filter(
|
|
Pierre-Yves Chibon |
717597 |
model.TagColored.tag == tag
|
|
Pierre-Yves Chibon |
717597 |
).filter(
|
|
Pierre-Yves Chibon |
717597 |
model.TagColored.project_id == issue.project.id
|
|
Pierre-Yves Chibon |
717597 |
).first()
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
# Link the tag to the ticket as it was
|
|
Pierre-Yves Chibon |
717597 |
tagissueobj = model.TagIssueColored(
|
|
Pierre-Yves Chibon |
717597 |
tag_id=tagobj.id,
|
|
Pierre-Yves Chibon |
717597 |
issue_uid=issue.uid,
|
|
Pierre-Yves Chibon |
717597 |
date_created=tagobj.date_created,
|
|
Pierre-Yves Chibon |
717597 |
)
|
|
Pierre-Yves Chibon |
717597 |
session.add(tagissueobj)
|
|
Pierre-Yves Chibon |
717597 |
session.flush()
|
|
Pierre-Yves Chibon |
717597 |
session.commit()
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
|
|
Pierre-Yves Chibon |
717597 |
def downgrade():
|
|
Pierre-Yves Chibon |
717597 |
raise ValueError("The colored tags feature can not be un-done")
|