aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.be/settings2
-rw-r--r--becommands/severity.py25
-rw-r--r--libbe/bug.py24
-rw-r--r--libbe/bugdir.py10
4 files changed, 42 insertions, 19 deletions
diff --git a/.be/settings b/.be/settings
index 331e353..26f81cd 100644
--- a/.be/settings
+++ b/.be/settings
@@ -5,6 +5,8 @@ severities:
description: A feature that could improve usefulness, but not a bug.
- name: minor
description: The standard bug level.
+- name: moderate
+ description: Yet another bug severity.
- name: serious
description: A bug that requires workarounds.
- name: critical
diff --git a/becommands/severity.py b/becommands/severity.py
index 7b7ee29..92f31e8 100644
--- a/becommands/severity.py
+++ b/becommands/severity.py
@@ -15,8 +15,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""Show or change a bug's severity level"""
-from libbe import cmdutil, bugdir
-from libbe.bug import severity_values, severity_description
+from libbe import cmdutil, bugdir, bug
__desc__ = __doc__
def execute(args, test=False):
@@ -56,7 +55,8 @@ def get_parser():
parser = cmdutil.CmdOptionParser("be severity BUG-ID [SEVERITY]")
return parser
-longhelp=["""
+def help():
+ longhelp=["""
Show or change a bug's severity level.
If no severity is specified, the current value is printed. If a severity level
@@ -64,13 +64,14 @@ is specified, it will be assigned to the bug.
Severity levels are:
"""]
-longest_severity_len = max([len(s) for s in severity_values])
-for severity in severity_values :
- description = severity_description[severity]
- s = "%*s : %s\n" % (longest_severity_len, severity, description)
- longhelp.append(s)
-longhelp = ''.join(longhelp)
-
-
-def help():
+ try:
+ bd = bugdir.BugDir(from_disk=True, manipulate_encodings=False)
+ except bugdir.NoBugDir, e:
+ pass
+ longest_severity_len = max([len(s) for s in bug.severity_values])
+ for severity in bug.severity_values :
+ description = bug.severity_description[severity]
+ s = "%*s : %s\n" % (longest_severity_len, severity, description)
+ longhelp.append(s)
+ longhelp = ''.join(longhelp)
return get_parser().help_str() + longhelp
diff --git a/libbe/bug.py b/libbe/bug.py
index b98067f..46f244f 100644
--- a/libbe/bug.py
+++ b/libbe/bug.py
@@ -34,8 +34,8 @@ import utility
# Use a tuple of (category, description) tuples since we don't have
# ordered dicts in Python yet http://www.python.org/dev/peps/pep-0372/
-# in order of increasing severity
-severity_level_def = (
+# in order of increasing severity. (name, description) pairs
+severity_def = (
("wishlist","A feature that could improve usefulness, but not a bug."),
("minor","The standard bug level."),
("serious","A bug that requires workarounds."),
@@ -58,11 +58,23 @@ inactive_status_def = (
### Convert the description tuples to more useful formats
-severity_values = tuple([val for val,description in severity_level_def])
-severity_description = dict(severity_level_def)
+severity_values = ()
+severity_description = {}
severity_index = {}
-for i in range(len(severity_values)):
- severity_index[severity_values[i]] = i
+def load_severities(severity_def):
+ global severity_values
+ global severity_description
+ global severity_index
+ if type(severity_def[0]) == dict:
+ # Convert {"name": "X", "description": "Y"} severities to ("X","Y").
+ # The dict form is loaded from the per-tree settings file.
+ severity_def = [(d["name"], d["description"]) for d in severity_def]
+ severity_values = tuple([val for val,description in severity_def])
+ severity_description = dict(severity_def)
+ severity_index = {}
+ for i,severity in enumerate(severity_values):
+ severity_index[severity] = i
+load_severities(severity_def)
active_status_values = tuple(val for val,description in active_status_def)
inactive_status_values = tuple(val for val,description in inactive_status_def)
diff --git a/libbe/bugdir.py b/libbe/bugdir.py
index d554ebe..cdb4cf5 100644
--- a/libbe/bugdir.py
+++ b/libbe/bugdir.py
@@ -218,8 +218,15 @@ settings easy. Don't set this attribute. Set .rcs instead, and
@doc_property(doc="A dict of (bug-uuid, bug-instance) pairs.")
def _bug_map(): return {}
+ def _setup_severities(self, severities):
+ if severities != None and severities != settings_object.EMPTY:
+ bug.load_severities(severities)
+ def _set_severities(self, old_severities, new_severities):
+ self._setup_severities(new_severities)
+ self._prop_save_settings(old_severities, new_severities)
@_versioned_property(name="severities",
- doc="The allowed bug severities and their descriptions.")
+ doc="The allowed bug severities and their descriptions.",
+ change_hook=_set_severities)
def severities(): return {}
@@ -322,6 +329,7 @@ settings easy. Don't set this attribute. Set .rcs instead, and
self.rcs = rcs.rcs_by_name(self.rcs_name)
self._setup_encoding(self.encoding)
+ self._setup_severities(self.severities)
def load_all_bugs(self):
"Warning: this could take a while."