annotate tools/migrate-queries.py @ 7211:506c86823abb

Add config argument to more password.Password invocations. The work done to allow password_pbkdf2_default_rounds to be overridden for testing requires that calls to password.Password include a config argument. This was needed because using the real value more than quadrupled testing runtime. However there are still a few places where config was not being set when Password was called. I think this fixes all of the ones that are called from a function that have access to a db.config object. The remaining ones all call Password(encrypted=x). This results in Password.unpack() being called. If x is not a propertly formatted password string ("{scheme}...", it calls encodePassword. It then should end up raising the ConfigNotSet exception. This is probably what we want as it means the shape of "x" is not correct. I don't understand why Password.unpack() attempts to encrypt the value of encrypted if it doesn't match the right form. According to codecov, this encryption branch is being used, so somewhere x is of the wrong form. Hmmm....
author John Rouillard <rouilj@ieee.org>
date Sat, 04 Mar 2023 00:17:26 -0500
parents 64b05e24dbd8
children fed0f839c260
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 '''
5376
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4781
diff changeset
10 from __future__ import print_function
3346
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
11 __author__ = 'James Kew <jkew@mediabright.co.uk>'
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
12
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
13 import sys
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
14 import roundup.instance
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
15
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
16 if len(sys.argv) == 1:
5376
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4781
diff changeset
17 print(__doc__)
3346
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
18 sys.exit(1)
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
19
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
20 # Iterate over all instance homes specified in argv.
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
21 for home in sys.argv[1:]:
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
22 # Do some basic exception handling to catch bad arguments.
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
23 try:
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
24 instance = roundup.instance.open(home)
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
25 except:
5376
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4781
diff changeset
26 print('Cannot open instance home directory %s!' % home)
3346
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
27 continue
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
28
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
29 db = instance.open('admin')
4781
6e9b9743de89 Implementation for:
John Rouillard <rouilj@ieee.org>
parents: 3346
diff changeset
30 db.tx_Source = "cli"
3346
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
31
5376
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4781
diff changeset
32 print('Migrating active queries in %s (%s):'%(
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4781
diff changeset
33 instance.config.TRACKER_NAME, home))
3346
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
34 for query in db.query.list():
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
35 url = db.query.get(query, 'url')
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
36 if url[0] == '?':
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
37 url = url[1:]
5376
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4781
diff changeset
38 print(' Migrating query%s (%s)'%(query,
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4781
diff changeset
39 db.query.get(query, 'name')))
3346
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
40 db.query.set(query, url=url)
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
41
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
42 db.commit()
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
43 db.close()
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
44

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