annotate tools/migrate-queries.py @ 2077:3e0961d6d44d

Added the "actor" property. Metakit backend not done (still not confident I know how it's supposed to work ;) Currently it will come up as NULL in the RDBMS backends for older items. The *dbm backends will look up the journal. I hope to remedy the former before 0.7's release. Fixed a bunch of migration issues in the rdbms backends while I was at it (index changes for key prop changes) and simplified the class table update code for RDBMSes that have "alter table" in their command set (ie. not sqlite) ... migration from "version 1" to "version 2" still hasn't actually been tested yet though.
author Richard Jones <richard@users.sourceforge.net>
date Mon, 15 Mar 2004 05:50:20 +0000
parents 6e80f8f760a4
children a15f91a10e45
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1850
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 #! /usr/bin/env python
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2 '''
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 migrate-queries <instance-home> [<instance-home> *]
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
4
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
5 Migrate old queries in the specified instances to Roundup 0.6.0+ by
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6 removing the leading ? from their URLs. 0.6.0+ queries do not carry a
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 leading ?; it is added by the 0.6.0 templating, so old queries lead
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 to query URLs with a double leading ?? and a consequent 404 Not Found.
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 '''
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10 __author__ = 'James Kew <jkew@mediabright.co.uk>'
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12 import sys
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13 import roundup.instance
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
14
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15 if len(sys.argv) == 1:
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
16 print __doc__
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
17 sys.exit(1)
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
19 # Iterate over all instance homes specified in argv.
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
20 for home in sys.argv[1:]:
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
21 # Do some basic exception handling to catch bad arguments.
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22 try:
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23 instance = roundup.instance.open(home)
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 except:
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25 print 'Cannot open instance home directory %s!' % home
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26 continue
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28 db = instance.open('admin')
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 print 'Migrating active queries in %s (%s):'%(
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31 instance.config.TRACKER_NAME, home)
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
32 for query in db.query.list():
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 url = db.query.get(query, 'url')
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 if url[0] == '?':
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 url = url[1:]
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
36 print ' Migrating query%s (%s)'%(query,
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37 db.query.get(query, 'name'))
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 db.query.set(query, url=url)
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 db.commit()
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41 db.close()
6e80f8f760a4 *** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42

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