annotate tools/migrate-queries.py @ 4587:a2eb4fb3e6d8

New Chameleon templating engine, engine is now configurable. We now have two configurable templating engines, the old Zope TAL templates (called zopetal in the config) and the new Chameleon (called chameleon in the config). A new config-option "template_engine" under [main] can take these config-options, the default is zopetal. Thanks to Cheer Xiao for the idea of making this configurable *and* for the actual implementation! Cheer Xiao commit log: - The original TAL engine ported from Zope is thereafter referred to as "zopetal", in speech and in code - A new option "template_engine" under [main] introduced - Zopetal-specific code stripped from cgi/templating.py to form the new cgi/engine_zopetal.py - Interface to Chameleon in cgi/engine_chameleon.py - Engines are supposed to provide a Templates class that mimics the behavior of the old cgi.templating.Templates. The Templates class is preferably subclassed from cgi.templating.TemplatesBase. - New function cgi.templating.get_templates to get the appropriate engine's Templates instance according to the engine name
author Ralf Schlatterbeck <rsc@runtux.com>
date Thu, 23 Feb 2012 18:10:03 +0100
parents a133f03df238
children 6e9b9743de89
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')
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
29
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
30 print 'Migrating active queries in %s (%s):'%(
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
31 instance.config.TRACKER_NAME, home)
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
32 for query in db.query.list():
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
33 url = db.query.get(query, 'url')
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
34 if url[0] == '?':
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
35 url = url[1:]
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
36 print ' Migrating query%s (%s)'%(query,
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
37 db.query.get(query, 'name'))
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
38 db.query.set(query, url=url)
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
39
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
40 db.commit()
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
41 db.close()
a133f03df238 consistency in file formats
Anthony Baxter <anthonybaxter@users.sourceforge.net>
parents: 1850
diff changeset
42

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