annotate scripts/add-issue @ 5395:23b8e6067f7c

Python 3 preparation: update calls to dict methods. Tool-assisted patch. Changes of iterkeys / itervalues / iteritems to keys / values / items are fully automated, but may make things less efficient in Python 2. Automated tools want to add list() around many calls to keys / values / items, but I thought most such list() additions were unnecessary because it seemed the result of keys / values / items was just iterated over while the set of dict keys remained unchanged, rather than used in a way requiring an actual list, or used while the set of keys in the dict could change. It's quite possible I missed some cases where list() was really needed, or left in some unnecessary list() calls. In cases where list() was only needed because the resulting list was then sorted in-place, I changed the code to use calls to sorted().
author Joseph Myers <jsm@polyomino.org.uk>
date Tue, 24 Jul 2018 23:04:42 +0000
parents 6e9b9743de89
children c75defc1c2f0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1626
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 #! /usr/bin/env python
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2 '''
1627
e029d625c8f1 minor usage doc tweak
Richard Jones <richard@users.sourceforge.net>
parents: 1626
diff changeset
3 Usage: %s <tracker home> <priority> <issue title>
1626
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
4
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
5 Create a new issue in the given tracker. Input is taken from STDIN to
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6 create the initial issue message (which may be empty). Issues will be
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 created as the current user (%s) if they exist as a Roundup
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 user, or "admin" otherwise.
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 '''
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11 import sys, os, pwd
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13 from roundup import instance, mailgw, date
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
14
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15 # open the instance
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
16 username = pwd.getpwuid(os.getuid())[0]
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
17 if len(sys.argv) < 3:
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18 print "Error: Not enough arguments"
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
19 print __doc__.strip()%(sys.argv[0], username)
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
20 sys.exit(1)
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
21 tracker_home = sys.argv[1]
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22 issue_priority = sys.argv[2]
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23 issue_title = ' '.join(sys.argv[3:])
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25 # get the message, if any
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26 message_text = sys.stdin.read().strip()
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28 # open the tracker
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29 tracker = instance.open(tracker_home)
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 db = tracker.open('admin')
4781
6e9b9743de89 Implementation for:
John Rouillard <rouilj@ieee.org>
parents: 4570
diff changeset
31 db.tx_Source = "cli"
1626
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
32 uid = db.user.lookup('admin')
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 try:
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 # try to open the tracker as the current user
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 uid = db.user.lookup(username)
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
36 db.close()
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37 db = tracker.open(username)
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 except KeyError:
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39 pass
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41 try:
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
43 # handle the message
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44 messages = []
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
45 if message_text:
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
46 summary, x = mailgw.parseContent(message_text, 0, 0)
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
47 msg = db.msg.create(content=message_text, summary=summary, author=uid,
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48 date=date.Date())
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 messages = [msg]
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
50
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 # now create the issue
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 db.issue.create(title=issue_title, priority=issue_priority,
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 messages=messages)
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 db.commit()
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 finally:
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 db.close()
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58
581aa1853a2f adding a simple add-issue script
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 # vim: set filetype=python ts=4 sw=4 et si

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