aboutsummaryrefslogtreecommitdiffstats
path: root/libbe
diff options
context:
space:
mode:
Diffstat (limited to 'libbe')
-rw-r--r--libbe/command/depend.py27
-rw-r--r--libbe/command/list.py46
2 files changed, 35 insertions, 38 deletions
diff --git a/libbe/command/depend.py b/libbe/command/depend.py
index baea539..a5c3e5e 100644
--- a/libbe/command/depend.py
+++ b/libbe/command/depend.py
@@ -23,6 +23,7 @@ import libbe
import libbe.bug
import libbe.command
import libbe.command.util
+from libbe.command.list import Filter, parse_status, parse_severity
import libbe.util.tree
BLOCKS_TAG="BLOCKS:"
@@ -145,20 +146,15 @@ class Depend (libbe.command.Command):
'\n'.join(['%s |-- %s' % (blockee.id.user(), blocker.id.user())
for blockee,blocker in fixed])
return 0
- allowed_status_values = \
- libbe.command.util.select_values(
- params['status'], libbe.bug.status_values)
- allowed_severity_values = \
- libbe.command.util.select_values(
- params['severity'], libbe.bug.severity_values)
+ status = parse_status(params['status'])
+ severity = parse_severity(params['severity'])
+ filter = Filter(status, severity)
bugA, dummy_comment = libbe.command.util.bug_comment_from_user_id(
bugdir, params['bug-id'])
if params['tree-depth'] != None:
- dtree = DependencyTree(bugdir, bugA, params['tree-depth'],
- allowed_status_values,
- allowed_severity_values)
+ dtree = DependencyTree(bugdir, bugA, params['tree-depth'], filter)
if len(dtree.blocked_by_tree()) > 0:
print >> self.stdout, '%s blocked by:' % bugA.id.user()
for depth,node in dtree.blocked_by_tree().thread():
@@ -374,14 +370,11 @@ class DependencyTree (object):
"""
Note: should probably be DependencyDiGraph.
"""
- def __init__(self, bugdir, root_bug, depth_limit=0,
- allowed_status_values=None,
- allowed_severity_values=None):
+ def __init__(self, bugdir, root_bug, depth_limit=0, filter=None):
self.bugdir = bugdir
self.root_bug = root_bug
self.depth_limit = depth_limit
- self.allowed_status_values = allowed_status_values
- self.allowed_severity_values = allowed_severity_values
+ self.filter = filter
def _build_tree(self, child_fn):
root = libbe.util.tree.Tree()
@@ -393,11 +386,7 @@ class DependencyTree (object):
if self.depth_limit > 0 and node.depth == self.depth_limit:
continue
for bug in child_fn(self.bugdir, node.bug):
- if self.allowed_status_values != None \
- and not bug.status in self.allowed_status_values:
- continue
- if self.allowed_severity_values != None \
- and not bug.severity in self.allowed_severity_values:
+ if not self.filter(self.bugdir, bug):
continue
child = libbe.util.tree.Tree()
child.bug = bug
diff --git a/libbe/command/list.py b/libbe/command/list.py
index 3eb1932..645ae04 100644
--- a/libbe/command/list.py
+++ b/libbe/command/list.py
@@ -75,6 +75,30 @@ class Filter (object):
return False
return True
+def parse_status(status):
+ if status == 'all':
+ status = libbe.bug.status_values
+ elif status == 'active':
+ status = list(libbe.bug.active_status_values)
+ elif status == 'inactive':
+ status = list(libbe.bug.inactive_status_values)
+ else:
+ status = libbe.command.util.select_values(
+ status, libbe.bug.status_values)
+ return status
+
+def parse_severity(severity, important=False):
+ if severity == 'all':
+ severity = libbe.bug.severity_values
+ elif important == True:
+ serious = libbe.bug.severity_values.index('serious')
+ severity.append(list(libbe.bug.severity_values[serious:]))
+ else:
+ severity = libbe.command.util.select_values(
+ severity, libbe.bug.severity_values)
+ return severity
+
+
class List (libbe.command.Command):
"""List bugs
@@ -198,25 +222,9 @@ class List (libbe.command.Command):
'Invalid sort on "%s".\nValid sorts:\n %s'
% (cmp, '\n '.join(AVAILABLE_CMPS)))
cmp_list.append(eval('libbe.bug.cmp_%s' % cmp))
- # select status
- if params['status'] == 'all':
- status = libbe.bug.status_values
- elif params['status'] == 'active':
- status = list(libbe.bug.active_status_values)
- elif params['status'] == 'inactive':
- status = list(libbe.bug.inactive_status_values)
- else:
- status = libbe.command.util.select_values(
- params['status'], libbe.bug.status_values)
- # select severity
- if params['severity'] == 'all':
- severity = libbe.bug.severity_values
- elif params['important'] == True:
- serious = libbe.bug.severity_values.index('serious')
- severity.append(list(libbe.bug.severity_values[serious:]))
- else:
- severity = libbe.command.util.select_values(
- params['severity'], libbe.bug.severity_values)
+ status = parse_status(params['status'])
+ severity = parse_severity(params['severity'],
+ important=params['important'])
# select assigned
if params['assigned'] == None:
if params['mine'] == True: