141
141
self.add_argument('--search-text', dest='search_text',
142
142
help='search text')
143
143
self.add_argument('--milestone', dest='milestone', help='milestone name')
144
self.add_argument('--package', dest='package', help='source package name (only for project)', action='append')
147
if self.cmd_args.package and self.cmd_args.entry_type != 'project':
148
self.logger.error("package option is only for project entry")
145
150
def maintask(self, args):
146
151
entry = self.get_lp_entry(args.entry_type, args.entry_id)
147
kwargs = self.transform_args(args, ('entry_id', 'entry_type'))
152
kwargs = self.transform_args(args, ('entry_id', 'entry_type', 'package'))
148
153
if kwargs.get('assignee'):
149
154
kwargs['assignee'] = self.lp.people[kwargs['assignee']]
150
155
if kwargs.get('milestone'):
151
156
kwargs['milestone'] = entry.getMilestone(name=kwargs['milestone'])
152
return entry.searchTasks(**kwargs)
158
if args.package and args.entry_type == 'project':
160
for pkgname in args.package:
161
srcpkg = entry.getSourcePackage(name=pkgname)
162
ret.extend([e for e in srcpkg.searchTasks(**kwargs)])
165
return entry.searchTasks(**kwargs)
168
# userEditSTring and EditableData codes is wrote by James Ferguson <james.ferguson@canonical.com>, modified by hychen
154
169
def userEditString(suffix = '',
155
170
startingString = "",
156
171
filenamePrefix='enter-comment-if-reqd.'):
382
397
self.add_argument('--remove-tag', dest='remove_tag', action='append')
384
399
def do_postjob(self):
388
400
prj = [self.get_lp_entry('project', prj_name) \
389
401
for prj_name in self.cmd_args.project]
390
402
self.target_project = prj[0]
517
529
def _ask_confirmation(self, msg):
518
530
if self.dlg.yesno(msg, 10, 74, defaultno=True) != 0:
533
def download_bug_attachments(bug, output_dir):
534
# write title and desc
535
with open(os.path.join(output_dir, bug.title.encode('utf-8')), 'w') as descfd:
536
descfd.write(bug.description)
537
for attachment in bug.attachments:
538
filename = os.path.join(output_dir, attachment.title)
540
data = attachment.data.open()
541
with open(filename, 'w') as f:
547
"Unable to download file {0}".format(attachment.title))
549
class ExtensionGrabbugattachments(object):
550
__metaclass__ = ExtensionType
551
responsible_for = DoLPQueryJob
554
def custom_arguments(self):
555
self.add_argument('--output-dir', default=os.getcwd())
557
def do_postjob(self):
558
self.output_dir = self.cmd_args.output_dir
560
if type(self.result).__name__ != 'generator':
561
bugs = [bt.bug for bt in self.result]
565
# create sub directory
567
subdir_name = os.path.join(self.output_dir, str(bug.id))
568
if not os.path.isdir(subdir_name):
569
os.mkdir(subdir_name)
572
"Downloading attachments of the bug {0}".format(
574
download_bug_attachments(bug, subdir_name)
575
self.logger.info("Done!")