blob: ac29688a07e4d29a983ed1071e1adf41067e23ff [file] [log] [blame]
# -*- coding: utf-8 -*-
#
# Copyright (C) 2007-2013 Edgewall Software
# All rights reserved.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at http://trac.edgewall.com/license.html.
#
# This software consists of voluntary contributions made by many
# individuals. For the exact contribution history, see the revision
# history and logs, available at http://trac.edgewall.org/.
def do_upgrade(env, ver, cursor):
"""Upgrade the reports to better handle the new workflow capabilities"""
owner = env.get_read_db().concat('owner', "' *'")
cursor.execute('SELECT id, query, description FROM report')
reports = cursor.fetchall()
for report, query, description in reports:
q, d = query, description
if query:
# All states other than 'closed' are "active".
q = q.replace("IN ('new', 'assigned', 'reopened')", "<> 'closed'")
# Add a status column instead of adding an '*' to the owner's name
# for the 'assigned' state.
q = q.replace("(CASE status WHEN 'assigned' THEN %s "
"ELSE owner END) AS owner" % owner, "owner, status")
if description:
d = d.replace(" * If a ticket has been accepted, a '*' is"
" appended after the owner's name\n", '')
if q != query or d != description:
cursor.execute("""
UPDATE report SET query=%s, description=%s WHERE id=%s
""", (q, d, report))