Mercurial > p > roundup > code
view tools/load_tracker.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 |
line wrap: on
line source
#! /usr/bin/env python ''' Usage: %s <tracker home> <N> Load up the indicated tracker with N issues and N/100 users. ''' import sys, os, random from roundup import instance # open the instance if len(sys.argv) < 2: print "Error: Not enough arguments" print __doc__.strip()%(sys.argv[0]) sys.exit(1) tracker_home = sys.argv[1] N = int(sys.argv[2]) # open the tracker tracker = instance.open(tracker_home) db = tracker.open('admin') db.tx_Source = "cli" priorities = db.priority.list() statuses = db.status.list() resolved_id = db.status.lookup('resolved') statuses.remove(resolved_id) names = ['alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi', 'rho'] titles = '''Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis nibh purus, bibendum sed, condimentum ut, bibendum ut, risus. Fusce pede enim, nonummy sit amet, dapibus a, blandit eget, metus. Nulla risus. Vivamus tincidunt. Donec consequat convallis quam. Sed convallis vehicula felis. Aliquam laoreet, dui quis pharetra vehicula, magna justo. Euismod felis, eu adipiscing eros metus id tortor. Suspendisse et turpis. Aenean non felis. Nam egestas eros. Integer tellus quam, mattis ac, vestibulum sed, egestas quis, mauris. Nulla tincidunt diam sit amet dui. Nam odio mauris, dignissim vitae, eleifend eu, consectetuer id, risus. Suspendisse potenti. Donec tincidunt. Vestibulum gravida. Fusce luctus, neque id mattis fringilla, purus pede sodales pede. Quis ultricies urna odio sed orci.'''.splitlines() try: try: db.user.lookup('alpha0') except: # add some users M = N/100 for i in range(M): print '\ruser', i, ' ', sys.stdout.flush() if i/17 == 0: db.user.create(username=names[i%17]) else: db.user.create(username=names[i%17]+str(i/17)) # assignable user list users = db.user.list() users.remove(db.user.lookup('anonymous')) print # now create the issues for i in range(N): print '\rissue', i, ' ', sys.stdout.flush() # in practise, about 90% of issues are resolved if random.random() > .9: status = random.choice(statuses) else: status = resolved_id db.issue.create( title=random.choice(titles), priority=random.choice(priorities), status=status, assignedto=random.choice(users)) if not i%1000: db.commit() print db.commit() finally: db.close() # vim: set filetype=python ts=4 sw=4 et si
