annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3346
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
1 #! /usr/bin/env python
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
2 '''
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
3 migrate-queries <instance-home> [<instance-home> *]
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
4
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
5 Migrate old queries in the specified instances to Roundup 0.6.0+ by
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
6 removing the leading ? from their URLs. 0.6.0+ queries do not carry a
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
7 leading ?; it is added by the 0.6.0 templating, so old queries lead
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
8 to query URLs with a double leading ?? and a consequent 404 Not Found.
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
9 '''
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
10 __author__ = 'James Kew <jkew@mediabright.co.uk>'
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
11
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
12 import sys
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
13 import roundup.instance
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
14
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
15 if len(sys.argv) == 1:
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
16 print __doc__
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
17 sys.exit(1)
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
18
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
19 # Iterate over all instance homes specified in argv.
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
20 for home in sys.argv[1:]:
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
21 # Do some basic exception handling to catch bad arguments.
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
22 try:
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
23 instance = roundup.instance.open(home)
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
24 except:
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
25 print 'Cannot open instance home directory %s!' % home
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
26 continue
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
27
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
28 db = instance.open('admin')
4781
6e9b9743de89 Implementation for:
John Rouillard <rouilj@ieee.org>
parents: 3346
diff changeset
29 db.tx_Source = "cli"
3346
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
30
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
31 print 'Migrating active queries in %s (%s):'%(
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
32 instance.config.TRACKER_NAME, home)
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
33 for query in db.query.list():
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
34 url = db.query.get(query, 'url')
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
35 if url[0] == '?':
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
36 url = url[1:]
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
37 print ' Migrating query%s (%s)'%(query,
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
38 db.query.get(query, 'name'))
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
39 db.query.set(query, url=url)
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
40
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
41 db.commit()
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
42 db.close()
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
43

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