-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathadd-issue
More file actions
executable file
·59 lines (48 loc) · 1.46 KB
/
add-issue
File metadata and controls
executable file
·59 lines (48 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#! /usr/bin/env python
'''
Usage: %s <tracker home> <priority> <issue title>
Create a new issue in the given tracker. Input is taken from STDIN to
create the initial issue message (which may be empty). Issues will be
created as the current user (%s) if they exist as a Roundup
user, or "admin" otherwise.
'''
import sys, os, pwd
from roundup import instance, mailgw, date
# open the instance
username = pwd.getpwuid(os.getuid())[0]
if len(sys.argv) < 3:
print "Error: Not enough arguments"
print __doc__.strip()%(sys.argv[0], username)
sys.exit(1)
tracker_home = sys.argv[1]
issue_priority = sys.argv[2]
issue_title = ' '.join(sys.argv[3:])
# get the message, if any
message_text = sys.stdin.read().strip()
# open the tracker
tracker = instance.open(tracker_home)
db = tracker.open('admin')
db.tx_Source = "cli"
uid = db.user.lookup('admin')
try:
# try to open the tracker as the current user
uid = db.user.lookup(username)
db.close()
db = tracker.open(username)
except KeyError:
pass
try:
# handle the message
messages = []
if message_text:
summary, x = mailgw.parseContent(message_text, 0, 0)
msg = db.msg.create(content=message_text, summary=summary, author=uid,
date=date.Date())
messages = [msg]
# now create the issue
db.issue.create(title=issue_title, priority=issue_priority,
messages=messages)
db.commit()
finally:
db.close()
# vim: set filetype=python ts=4 sw=4 et si