def save(self): """ Write the configuration options to the primary file. """ # Only save options that differ from the defaults sections = [] for section in self.sections(): options = [] for option in self[section]: current = self.parser.has_option(section, option) and \ self.parser.get(section, option) if current is not False: options.append((option, current)) if options: sections.append((section, sorted(options))) # skip saving if no filename is given if not self.filename: return fileobj = file(self.filename, 'w') try: print >> fileobj, '# -*- coding: utf-8 -*-' print >> fileobj for section, options in sections: print >> fileobj, '[%s]' % section for key, val in options: if key in self[section].overridden: print >> fileobj, '# %s = <set in global seishub.ini>' \ % key else: val = val.replace(CRLF, '\n').replace('\n', '\n ') print >> fileobj, '%s = %s' % \ (key, toUnicode(val).encode('utf-8')) print >> fileobj finally: fileobj.close()
def set(self, name, value): """ Change a configuration value. These changes are not persistent unless saved with `save()`. """ if not self.config.parser.has_section(self.name): self.config.parser.add_section(self.name) if value is None: self.overridden[name] = True value = '' else: value = toUnicode(value).encode('utf-8') return self.config.parser.set(self.name, name, value)
def get(self, name, default=None): """ Return the value of the specified option. """ if self.config.parser.has_option(self.name, name): value = self.config.parser.get(self.name, name) else: option = Option.registry.get((self.name, name)) if option: value = option.default or default else: value = default if value is None: return '' return toUnicode(value)