diff options
-rw-r--r-- | becommands/assign.py | 33 | ||||
-rw-r--r-- | libbe/bugdir.py | 2 | ||||
-rw-r--r-- | libbe/cmdutil.py | 10 |
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"): |