memory, tools (config): move special config retrieval from memory to tools
This commit is contained in:
parent
a5dd35ce65
commit
76413b3679
1 changed files with 35 additions and 20 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue