annotate tools/migrate-queries.py @ 5222:9bf221cebef3

Make properties method return only properties the user can search. See: https://sourceforge.net/p/roundup/mailman/roundup-devel/thread/20170405002844.2004B80690%40vm71.cs.umb.edu/#msg35769250 [Roundup-devel] Bug in context/properties, lists properties user can't search. The HTMLClass::properties() method returns a list of all properties. This is used when creating sort on/group by filters on index pages. However somewhere in the code, a user needs search permission on the property in order for it to be used for grouping or sorting. This means the user can choose to sort/group an index page by a property that they have no search permission for. As a result the sort/group is ignored. This is confusing. I have changed the properties method to only return properties the user has View/Search permissions on. I also added a new cansearch argument set by default to True. If set to False, all properties regardless of Search permission are returned. Doc updated to include the new default operation and mention the use of cansearch argument.
author John Rouillard <rouilj@ieee.org>
date Wed, 05 Apr 2017 21:38:32 -0400
parents 6e9b9743de89
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/