Mercurial > libervia-backend
view src/tools/config.py @ 1056:a5cfa9bb4541
tools (config): fixConfigOption creates the section if it doesn't exist
author | souliane <souliane@mailoo.org> |
---|---|
date | Sun, 08 Jun 2014 17:27:03 +0200 |
parents | a874a79ad0f5 |
children | 7ee9d9db67b9 |
line wrap: on
line source
#!/usr/bin/python # -*- coding: utf-8 -*- # SAT: a jabber client # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Jérôme Poisson (goffi@goffi.org) # Copyright (C) 2013, 2014 Adrien Cossa (souliane@mailoo.org) # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. """ Configuration related useful methods """ from sat.core.log import getLogger log = getLogger(__name__) from sat.core.constants import Const as C from sat.core.i18n import _ from ConfigParser import SafeConfigParser, DEFAULTSECT from xdg import BaseDirectory import os def fixConfigOption(section, option, value, silent=True): """Force a configuration option value, writing it in the first found user config file, eventually creating a new user config file if none is found. @param section (str): the config section @param option (str): the config option @param value (str): the new value @param silent (boolean): toggle logging output (must be True when called from sat.sh) """ config = SafeConfigParser() target_file = None for file_ in C.CONFIG_FILES[::-1]: # we will eventually update the existing file with the highest priority, if it's a user personal file... if not silent: log.debug(_("Testing file %s") % file_) if os.path.isfile(file_): if file_.startswith(os.path.expanduser('~')): config.read([file_]) target_file = file_ break if not target_file: # ... otherwise we create a new config file for that user target_file = BaseDirectory.save_config_path('sat') + '/sat.conf' if section and section.upper() != DEFAULTSECT and not config.has_section(section): config.add_section(section) config.set(section, option, value) with open(target_file, 'wb') as configfile: config.write(configfile) # for the next time that user launches sat if not silent: if option in ('passphrase'): # list here the options storing a password value = '******' log.warning(_("Config auto-update: %(option)s set to %(value)s in the file %(config_file)s") % {'option': option, 'value': value, 'config_file': target_file})