Bug - tutorial
General workflow
That is the way to use python-launchpad-bugs to get information on a bugreport or to edit a bugreport:
1 >>> import launchpadbugs.connector as Connector
2 >>> Bug = Connector.ConnectBug()
3 >>> bug = Bug(120593)
It is also possible to get a bugreport by its url:
3 >>> bug = Bug(url="https://bugs.launchpad.net/buglog-data/+bug/120593")
If you want to change the bugreport or view private bugs you have to set Bug.authentication:
4 >>> Bug.authentication="cookie.txt"
Attributes of a bugreport
Overview
add a table of all attributes
Attachments
Get a list of attachments:
5 >>> for a in bug.attachments:
6 ... print a
7 ...
8 <Attachment (up: 8554243), (down: <path-to-file>/120593/8554243/79140.patch)>
9 <Attachment (up: 8558770)>
10 <Attachment (up: 8554203)>
11 <Attachment (up: 8541039)>
As you can see there are four files attached to the bug and the first attachment has already been downloaded.
You can for example filter the list of attachments by the filename:
12 >>> def test_filter(a):
13 ... import re
14 ... return re.match("assignee.*", a.lp_filename)
15 ...
16 >>> [i for i in bug.attachments.filter(test_filter)]
17 [<Attachment (up: 8541039)>]
18 >>> bug.attachments[8541039].lp_filename
19 'assignee.patch'
These filtered attachments can be easily removed:
20 >>> bug.attachments.remove(bug.attachments.filter(test_filter))
21 True
To add an attachment you have to create an new attachment-object:
22 >>> attachment = Bug.NewAttachment(localfilename="<path-to-file>/79140.patch")
23 >>> attachment.description = "example patch"
24 >>> attachment.is_patch = True
25 >>> attachment
26 <Attachment (down: <path-to-file>/79140.patch)>
Now you have to add this attachment to the bugreport:
27 >>> bug.attachments.add(attachment)
28 >>> for a in bug.attachments:
29 ... print a
30 ...
31 <Attachment (up: 8554243), (down: <path-to-file>/120593/8554243/79140.patch)>
32 <Attachment (up: 8558770)>
33 <Attachment (up: 8554203)>
34 <Attachment (down: <path-to-file>/79140.patch)>
Get a list of comments:
35 >>> [c for c in bug.comments][0:2]
36 [<Comment 1 by thekorn on 2007-07-20>, <Comment 2 by thekorn on 2007-07-20>]
Create a new comment and add this comment to the bugreport:
37 >>> comment = Bug.NewComment(text="this is a test comment")
38 >>> bug.comments.add(comment)
39 >>> [c for c in bug.comments]
40 [<Comment 1 by thekorn on 2007-07-20>, <Comment 2 by thekorn on 2007-07-20>, ... , <Comment 'unknown'>]
Commit changes
get a list of changes
41 >>> for i in bug.changed:
42 ... print i
43 ...
44 (<Attachmentlist> changed: (<Attachment (up: 8541039)> deleted), (<Attachment (down: <path-to-file>/79140.patch)> added))
45 (<Commentslist> changed: (<Comment 'unknown'> added))
commit changes