aboutsummaryrefslogtreecommitdiffstats
path: root/becommands/set.py
diff options
context:
space:
mode:
authorW. Trevor King <wking@drexel.edu>2008-12-02 10:14:06 -0500
committerW. Trevor King <wking@drexel.edu>2008-12-02 10:14:06 -0500
commit6a94d050bbd72b3812fd7cb05445a66484103214 (patch)
tree55e8a3cd1d605132ccca46c3c5155e94ae0a6336 /becommands/set.py
parenta98aafc8572bb826a0fda1b6bca0011fc4ef126a (diff)
downloadbugseverywhere-6a94d050bbd72b3812fd7cb05445a66484103214.tar.gz
Added decorator-style properties to bugdir. Created settings_object module.
settings_object.SavedSettingsObject encapsulates some of the common settings functionality in the BE BugDir, Bug, and Comment classes. It's a bit awkward due to the nature of scoping in python subclasses, but it's better than reproducing this code in each of the above classes. Now I need to move Bug and Comment over to *this* system ;).
Diffstat (limited to 'becommands/set.py')
-rw-r--r--becommands/set.py31
1 files changed, 20 insertions, 11 deletions
diff --git a/becommands/set.py b/becommands/set.py
index aef5eb3..1103b7b 100644
--- a/becommands/set.py
+++ b/becommands/set.py
@@ -15,9 +15,19 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""Change tree settings"""
-from libbe import cmdutil, bugdir
+from libbe import cmdutil, bugdir, settings_object
__desc__ = __doc__
+def _value_string(bd, setting):
+ val = bd.settings.get(setting, settings_object.EMPTY)
+ if val == settings_object.EMPTY:
+ default = getattr(bd, bd._setting_name_to_attr_name(setting))
+ if default != settings_object.EMPTY:
+ val = "None (%s)" % default
+ else:
+ val = None
+ return str(val)
+
def execute(args, test=False):
"""
>>> import os
@@ -39,23 +49,22 @@ def execute(args, test=False):
raise cmdutil.UsageError, "Too many arguments"
bd = bugdir.BugDir(from_disk=True, manipulate_encodings=not test)
if len(args) == 0:
- keys = bd.settings.keys()
+ keys = bd.settings_properties
keys.sort()
for key in keys:
- print "%16s: %s" % (key, bd.settings[key])
+ print "%16s: %s" % (key, _value_string(bd, key))
elif len(args) == 1:
- print bd.settings.get(args[0])
+ print _value_string(bd, args[0])
else:
if args[1] != "none":
+ if args[0] not in bd.settings_properties:
+ msg = "Invalid setting %s\n" % args[0]
+ msg += 'Allowed settings:\n '
+ msg += '\n '.join(bd.settings_properties)
+ raise cmdutil.UserError(msg)
old_setting = bd.settings.get(args[0])
- bd.settings[args[0]] = args[1]
- if args[0] == "user_id":
- bd.save_user_id()
-
- # attempt to get the new value
- bd.save()
try:
- bd.load()
+ setattr(bd, args[0], args[1])
except bugdir.InvalidValue, e:
bd.settings[args[0]] = old_setting
bd.save()