1 #! /usr/bin/env python\r
2 '''\r
3 migrate-queries <instance-home> [<instance-home> *]\r
4 \r
5 Migrate old queries in the specified instances to Roundup 0.6.0+ by\r
6 removing the leading ? from their URLs. 0.6.0+ queries do not carry a\r
7 leading ?; it is added by the 0.6.0 templating, so old queries lead\r
8 to query URLs with a double leading ?? and a consequent 404 Not Found.\r
9 '''\r
10 __author__ = 'James Kew <jkew@mediabright.co.uk>'\r
11 \r
12 import sys\r
13 import roundup.instance\r
14 \r
15 if len(sys.argv) == 1:\r
16 print __doc__\r
17 sys.exit(1)\r
18 \r
19 # Iterate over all instance homes specified in argv.\r
20 for home in sys.argv[1:]:\r
21 # Do some basic exception handling to catch bad arguments.\r
22 try:\r
23 instance = roundup.instance.open(home)\r
24 except:\r
25 print 'Cannot open instance home directory %s!' % home\r
26 continue\r
27 \r
28 db = instance.open('admin')\r
29 \r
30 print 'Migrating active queries in %s (%s):'%(\r
31 instance.config.TRACKER_NAME, home)\r
32 for query in db.query.list():\r
33 url = db.query.get(query, 'url')\r
34 if url[0] == '?':\r
35 url = url[1:]\r
36 print ' Migrating query%s (%s)'%(query,\r
37 db.query.get(query, 'name'))\r
38 db.query.set(query, url=url)\r
39 \r
40 db.commit()\r
41 db.close()\r
42 \r