Mercurial > p > roundup > code
view tools/load_tracker.py @ 3945:1dd64778bc45
Mail improvements:
- Implement new config option in mail-section "ignore_alternatives" to
ignore alternatives in a multipart/alternative mail. The *last*
text/plain part of the *first* multipart/alternative is used as the
message, if ignore_alternatives is set all other alternative parts of
the first multipart/alternative that contained a text/plain part are
ignored. Other multipart/alternative or other multipart are attached
as before. This fixes [SF#959811] "Multipart/alternative handling
considered bad". Note that this also changes which text/plain part is
attached as the message if there are several text/plain parts in a
multipart: Previously the *first* text/plain would be attached. Now we
attach the *last* one, this is more in line with rfc 2046, sec. 5.1.4.
according to Philipp Gortan.
- Fix bug in attachment of text parts: If there are multiple text/plain
parts in a nested multipart, the previous code would attach the
multipart serialisation instead of the text/plain serialisation as a
file to the issue in some cases.
- Add regression tests for the new config-option and bug-fixes above.
| author | Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net> |
|---|---|
| date | Wed, 14 Nov 2007 14:57:47 +0000 |
| parents | 53d278e1440f |
| children | 6e3e4f24c753 |
line wrap: on
line source
#! /usr/bin/env python # $Id: load_tracker.py,v 1.6 2005-06-08 02:24:06 anthonybaxter Exp $ ''' 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') 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
