def do_upgrade(env, ver, cursor): """Upgrade the reports to better handle the new workflow capabilities""" db = env.get_db_cnx() owner = 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))