"""List bugs"""
from libbe import bugdir, cmdutil, names
from libbe.mapfile import FileString
import os
def execute(args):
options, args = get_parser().parse_args(args)
if len(args) > 0:
raise cmdutil.UsageError
active = True
severity = ("minor", "serious", "critical", "fatal")
if options.wishlist:
severity = ("wishlist",)
if options.closed:
active = False
tree = cmdutil.bug_tree()
current_id = names.creator()
def filter(bug):
if options.mine and bug.assigned != current_id:
return False
if options.cur_target:
if tree.target is None or bug.target != tree.target:
return False
if active is not None:
if bug.active != active:
return False
if bug.severity not in severity:
return False
return True
all_bugs = list(tree.list())
bugs = [b for b in all_bugs if filter(b) ]
if len(bugs) == 0:
print "No matching bugs found"
my_target_bugs = []
other_target_bugs = []
unassigned_target_bugs = []
my_bugs = []
other_bugs = []
unassigned_bugs = []
if tree.target is not None:
for bug in bugs:
if bug.target != tree.target:
continue
if bug.assigned == current_id:
my_target_bugs.append(bug)
elif bug.assigned is None:
unassigned_target_bugs.append(bug)
else:
other_target_bugs.append(bug)
for bug in bugs:
if tree.target is not None and bug.target == tree.target:
continue
if bug.assigned == current_id:
my_bugs.append(bug)
elif bug.assigned is None:
unassigned_bugs.append(bug)
else:
other_bugs.append(bug)
def list_bugs(cur_bugs, title, no_target=False):
cur_bugs.sort(bugdir.cmp_severity)
if len(cur_bugs) > 0:
print cmdutil.underlined(title)
for bug in cur_bugs:
print cmdutil.bug_summary(bug, all_bugs, no_target=no_target)
list_bugs(my_target_bugs,
"Bugs assigned to you for target %s" % tree.target,
no_target=True)
list_bugs(unassigned_target_bugs,
"Unassigned bugs for target %s" % tree.target, no_target=True)
list_bugs(other_target_bugs,
"Bugs assigned to others for target %s" % tree.target,
no_target=True)
list_bugs(my_bugs, "Bugs assigned to you")
list_bugs(unassigned_bugs, "Unassigned bugs")
list_bugs(other_bugs, "Bugs assigned to others")
def get_parser():
parser = cmdutil.CmdOptionParser("be list [options]")
parser.add_option("-w", "--wishlist", action="store_true", dest="wishlist",
help="List bugs with 'wishlist' severity")
parser.add_option("-c", "--closed", action="store_true", dest="closed",
help="List closed bugs")
parser.add_option("-m", "--mine", action="store_true", dest="mine",
help="List only bugs assigned to you")
parser.add_option("-t", "--cur-target", action="store_true",
dest="cur_target",
help="List only bugs for the current target")
return parser
longhelp="""
This command lists bugs. Options are cumulative, so that -mc will list only
closed bugs assigned to you.
"""
def help():
fs = FileString()
get_parser().print_help(fs)
return fs.str + longhelp