view tools/migrate-queries.py @ 4781:6e9b9743de89

Implementation for: http://issues.roundup-tracker.org/issue2550731 Add mechanism for the detectors to be able to tell the source of the data changes. Support for tx_Source property on database handle. Can be used by detectors to find out the source of a change in an auditor to block changes arriving by unauthenticated mechanisms (e.g. plain email where headers can be faked). The property db.tx_Source has the following values: * None - Default value set to None. May be valid if it's a script that is created by the user. Otherwise it's an error and indicates that some code path is not properly setting the tx_Source property. * "cli" - this string value is set when using roundup-admin and supplied scripts. * "web" - this string value is set when using any web based technique: html interface, xmlrpc .... * "email" - this string value is set when using an unauthenticated email based technique. * "email-sig-openpgp" - this string value is set when email with a valid pgp signature is used. (*NOTE* the testing for this mode is incomplete. If you have a pgp infrastructure you should test and verify that this is properly set.) This also includes some (possibly incomplete) tests cases for the modes above and an example of using ts_Source in the customization.txt document.
author John Rouillard <rouilj@ieee.org>
date Tue, 23 Apr 2013 23:06:09 -0400
parents a133f03df238
children 64b05e24dbd8
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.
'''
__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/