memory, tools (config): move special config retrieval from memory to tools

This commit is contained in:
souliane 2014-06-09 20:40:13 +02:00
commit 76413b3679

View file

@ -26,9 +26,10 @@ log = getLogger(__name__)
from sat.core.constants import Const as C
from sat.core.i18n import _
from ConfigParser import SafeConfigParser, DEFAULTSECT
from ConfigParser import SafeConfigParser, DEFAULTSECT, NoOptionError, NoSectionError
from xdg import BaseDirectory
import os
import csv
def fixConfigOption(section, option, value, silent=True):
@ -64,3 +65,33 @@ def fixConfigOption(section, option, value, silent=True):
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})
def getConfig(config, section, name, default=None):
"""Get a configuration option
@param config (SafeConfigParser): the configuration instance
@param section (str): section of the config file (None or '' for DEFAULT)
@param name (str): name of the option
@param default (str): eventually default to this value, if not None
@return: str, list or dict
"""
if not section:
section = DEFAULTSECT
try:
value = config.get(section, name)
except (NoOptionError, NoSectionError) as e:
if default is None:
raise e
value = default
if name.endswith('_path') or name.endswith('_dir'):
value = os.path.expanduser(value)
# thx to Brian (http://stackoverflow.com/questions/186857/splitting-a-semicolon-separated-string-to-a-dictionary-in-python/186873#186873)
elif name.endswith('_list'):
value = csv.reader([value], delimiter=',', quotechar='"').next()
elif name.endswith('_dict'):
value = dict(csv.reader([item], delimiter=':', quotechar='"').next()
for item in csv.reader([value], delimiter=',', quotechar='"').next())
return value