~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/config/__init__.py

setup.configure: Replaced the use of an intermediate dictionary for storing
    config options. Now all configuration is done directly in the
    ivle.config.Config object, and written back out from the same object.

ivle.config: Config.set_by_path, value is now optional, to let you just set
    the comment field.

Show diffs side-by-side

added added

removed removed

Lines of Context:
52
52
        return '/etc/ivle/ivle.conf'
53
53
    raise ConfigError("Could not find IVLE config file")
54
54
 
 
55
_NO_VALUE = []
55
56
class Config(ConfigObj):
56
57
    """
57
58
    The configuration object. Can be instantiated with no arguments (will
77
78
            # XXX This doesn't raise errors if it doesn't validate
78
79
            self.validate(Validator())
79
80
 
80
 
    def set_by_path(self, path, value, comment=None):
 
81
    def set_by_path(self, path, value=_NO_VALUE, comment=None):
81
82
        """Writes a value to an option, given a '/'-separated path.
82
83
        @param path: '/'-separated path to configuration option.
83
 
        @param value: value to write to the option.
84
 
        @param comment: optional comment string (lines separated by '\n's).
 
84
        @param value: Optional - value to write to the option.
 
85
        @param comment: Optional - comment string (lines separated by '\n's).
85
86
        """
86
87
        path = path.split('/')
87
88
        # Iterate over each segment of the path, and find the section in conf
94
95
            conf_section = conf_section[seg]
95
96
        # The final path segment names the key to insert into
96
97
        keyname = path[-1]
97
 
        conf_section[keyname] = value
 
98
        if value is not _NO_VALUE:
 
99
            conf_section[keyname] = value
98
100
        if comment is not None:
99
101
            conf_section.comments[keyname] = comment.split('\n')
100
102