aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--becommands/assign.py33
-rw-r--r--libbe/bugdir.py2
-rw-r--r--libbe/cmdutil.py10
3 files changed, 42 insertions, 3 deletions
diff --git a/becommands/assign.py b/becommands/assign.py
new file mode 100644
index 0000000..5b07088
--- /dev/null
+++ b/becommands/assign.py
@@ -0,0 +1,33 @@
+"""Assign an indivitual or group to fix a bug"""
+from libbe import bugdir, cmdutil, names
+__desc__ = __doc__
+
+def execute(args):
+ assert(len(args) in (0, 1, 2))
+ if len(args) == 0:
+ print help()
+ return
+ bug = cmdutil.get_bug(args[0])
+ if len(args) == 1:
+ bug.assigned = names.creator()
+ elif len(args) == 2:
+ if args[1] == "none":
+ bug.assigned = None
+ else:
+ bug.assigned = args[1]
+ bug.save()
+
+
+def help():
+ return """be assign bug-id [assignee]
+
+Assign a person to fix a bug.
+
+By default, the bug is self-assigned. If an assignee is specified, the bug
+will be assigned to that person.
+
+Assignees should be the person's Bugs Everywhere identity, the string that
+appears in Creator fields.
+
+To un-assign a bug, specify "none" for the assignee.
+"""
diff --git a/libbe/bugdir.py b/libbe/bugdir.py
index 58fa877..addefe0 100644
--- a/libbe/bugdir.py
+++ b/libbe/bugdir.py
@@ -113,6 +113,7 @@ class Bug(object):
self.target = dict.get("target")
self.status = dict.get("status")
self.severity = dict.get("severity")
+ self.assigned = dict.get("assigned")
def get_path(self, file):
return os.path.join(self.path, self.uuid, file)
@@ -129,6 +130,7 @@ class Bug(object):
def save(self):
map = {}
+ self.add_attr(map, "assigned")
self.add_attr(map, "summary")
self.add_attr(map, "creator")
self.add_attr(map, "target")
diff --git a/libbe/cmdutil.py b/libbe/cmdutil.py
index 3fbfb50..7b25e35 100644
--- a/libbe/cmdutil.py
+++ b/libbe/cmdutil.py
@@ -46,9 +46,13 @@ def bug_summary(bug, bugs):
target = ""
else:
target = " target: %s" % target
- return "ID: %s Severity: %s%s Creator: %s \n%s\n" % \
- (unique_name(bug, bugs), bug.severity, target, bug.creator,
- bug.summary)
+ if bug.assigned is None:
+ assigned = ""
+ else:
+ assigned = " Assigned: %s" % bug.assigned
+ return "ID: %s Severity: %s%s%s Creator: %s \n%s\n" % \
+ (unique_name(bug, bugs), bug.severity, assigned, target,
+ bug.creator, bug.summary)
def iter_commands():
for name, module in plugin.iter_plugins("becommands"):