view tools/migrate-queries.py @ 5650:e8ca7072c629

Fix Python 3 issues in REST code. * Need to use .get not .getheader for HTTP headers (see hg commit fec18298ae02, "Python 3 preparation: HTTP headers handling in roundup_server.py."). * Need to use key not cmp with sort (see hg commit 3fa026621f69, "Python 3 preparation: comparisons."). * dispatch output must be bytes, not str, otherwise writing it to the socket (e.g. in roundup-server) will fail. This fixes issues shown up attempting to access the REST interface with a browser with Python 3 (as opposed to with the Roundup testsuite, which also has known REST issues with Python 3).
author Joseph Myers <jsm@polyomino.org.uk>
date Sun, 17 Mar 2019 16:25:36 +0000
parents 64b05e24dbd8
children fed0f839c260
line wrap: on
line source

#! /usr/bin/env python
'''
migrate-queries <instance-home> [<instance-home> *]

Migrate old queries in the specified instances to Roundup 0.6.0+ by
removing the leading ? from their URLs. 0.6.0+ queries do not carry a
leading ?; it is added by the 0.6.0 templating, so old queries lead
to query URLs with a double leading ?? and a consequent 404 Not Found.
'''
from __future__ import print_function
__author__ = 'James Kew <jkew@mediabright.co.uk>'

import sys
import roundup.instance

if len(sys.argv) == 1:
    print(__doc__)
    sys.exit(1)

# Iterate over all instance homes specified in argv.
for home in sys.argv[1:]:
    # Do some basic exception handling to catch bad arguments.
    try:
        instance = roundup.instance.open(home)
    except:
        print('Cannot open instance home directory %s!' % home)
        continue

    db = instance.open('admin')
    db.tx_Source = "cli"

    print('Migrating active queries in %s (%s):'%(
        instance.config.TRACKER_NAME, home))
    for query in db.query.list():
        url = db.query.get(query, 'url')
        if url[0] == '?':
            url = url[1:]
            print('  Migrating query%s (%s)'%(query,
                db.query.get(query, 'name')))
            db.query.set(query, url=url)

    db.commit()
    db.close()


Roundup Issue Tracker: http://roundup-tracker.org/