|
|
|
@ -30,6 +30,7 @@ from itertools import *
|
|
|
|
|
import operator
|
|
|
|
|
import traceback
|
|
|
|
|
from types import StringTypes
|
|
|
|
|
import configparser
|
|
|
|
|
|
|
|
|
|
def addStdConfig(fileLst,prefix='/'):
|
|
|
|
|
stdPath = path.join(prefix,
|
|
|
|
@ -796,18 +797,20 @@ class SimpleDataVars:
|
|
|
|
|
Read variable values from ini files.
|
|
|
|
|
Return False if ini file is invalid.
|
|
|
|
|
"""
|
|
|
|
|
config = configparser.ConfigParser(strict=False)
|
|
|
|
|
if path.isdir(iniFile):
|
|
|
|
|
config = cl_template.iniParser(
|
|
|
|
|
text=reduce(lambda x, y: x + readFile(y),
|
|
|
|
|
addStdConfig(
|
|
|
|
|
searchProfile(iniFile, 'calculate.env'),
|
|
|
|
|
prefix=self.systemRoot), ""))
|
|
|
|
|
config.read(addStdConfig(
|
|
|
|
|
searchProfile(iniFile, 'calculate.env'),
|
|
|
|
|
prefix=self.systemRoot))
|
|
|
|
|
else:
|
|
|
|
|
config = cl_template.iniParser(iniFile)
|
|
|
|
|
config.read(iniFile)
|
|
|
|
|
importVars = {}
|
|
|
|
|
for varname, varobj in self.allVars.items():
|
|
|
|
|
if varobj.section not in importVars:
|
|
|
|
|
importVars[varobj.section] = config.getAreaVars(varobj.section)
|
|
|
|
|
importVars[varobj.section] = \
|
|
|
|
|
(dict(config.items(varobj.section, raw=True))
|
|
|
|
|
if config.has_section(varobj.section)
|
|
|
|
|
else {})
|
|
|
|
|
if not varname in self.cache:
|
|
|
|
|
val = self.unserialize(varobj.type or "string",
|
|
|
|
|
importVars[varobj.section].get(varname,'').encode('utf-8'))
|
|
|
|
@ -998,9 +1001,11 @@ class DataVars(SimpleDataVars):
|
|
|
|
|
retVal = ""
|
|
|
|
|
for iniFile in calculateIniFiles:
|
|
|
|
|
if path.exists(iniFile):
|
|
|
|
|
config = cl_template.iniParser(iniFile)
|
|
|
|
|
data = config.getVar(section,varname,checkExistVar=True)
|
|
|
|
|
if data is False:
|
|
|
|
|
config = configparser.ConfigParser(strict=False)
|
|
|
|
|
config.read(iniFile)
|
|
|
|
|
try:
|
|
|
|
|
data = config[section][varname]
|
|
|
|
|
except KeyError:
|
|
|
|
|
return False
|
|
|
|
|
existsVar, value = data
|
|
|
|
|
if existsVar:
|
|
|
|
@ -1016,22 +1021,16 @@ class DataVars(SimpleDataVars):
|
|
|
|
|
section2 : { variable : value }
|
|
|
|
|
"""
|
|
|
|
|
optionsInfo = {}
|
|
|
|
|
config = cl_template.iniParser(envFile)
|
|
|
|
|
allsect = config.getAllSectionNames()
|
|
|
|
|
if allsect:
|
|
|
|
|
for section in allsect:
|
|
|
|
|
allvars = config.getAreaVars(section)
|
|
|
|
|
if allvars == False:
|
|
|
|
|
return False
|
|
|
|
|
# options (dict of variables:value)
|
|
|
|
|
options = {}
|
|
|
|
|
for varName, value in allvars.items():
|
|
|
|
|
varName = varName.encode("UTF-8")
|
|
|
|
|
value=convertStrListDict(value.encode("UTF-8"))
|
|
|
|
|
options[varName] = value
|
|
|
|
|
# if options exists add section to return dict as key section
|
|
|
|
|
if options:
|
|
|
|
|
optionsInfo[section] = options
|
|
|
|
|
config = configparser.ConfigParser(strict=False)
|
|
|
|
|
config.read(envFile)
|
|
|
|
|
allsect = config.sections()
|
|
|
|
|
for section in allsect:
|
|
|
|
|
options = {
|
|
|
|
|
k.encode('utf-8'):convertStrListDict(v.encode('utf-8'))
|
|
|
|
|
for k,v in config.items(section, raw=True)
|
|
|
|
|
}
|
|
|
|
|
if options:
|
|
|
|
|
optionsInfo[section] = options
|
|
|
|
|
return optionsInfo
|
|
|
|
|
|
|
|
|
|
def flIniFile(self,raiseOnError=False,onlySection=None):
|
|
|
|
@ -1056,24 +1055,20 @@ class DataVars(SimpleDataVars):
|
|
|
|
|
for iniName,iniFile in profiles+\
|
|
|
|
|
self.Get('main.cl_env_data'):
|
|
|
|
|
if path.exists(iniFile) or iniName == 'profile':
|
|
|
|
|
config = configparser.ConfigParser(strict=False)
|
|
|
|
|
if iniName == 'profile':
|
|
|
|
|
config = cl_template.iniParser(
|
|
|
|
|
text=reduce(lambda x,y:x+readFile(y),
|
|
|
|
|
addStdConfig(
|
|
|
|
|
searchProfile(iniFile,'calculate.env')),""))
|
|
|
|
|
config.read(addStdConfig(
|
|
|
|
|
searchProfile(iniFile,'calculate.env')))
|
|
|
|
|
else:
|
|
|
|
|
config = cl_template.iniParser(iniFile)
|
|
|
|
|
iniSections = config.getAllSectionNames()
|
|
|
|
|
config.read(iniFile)
|
|
|
|
|
iniSections = config.sections()
|
|
|
|
|
if not iniSections:
|
|
|
|
|
continue
|
|
|
|
|
if onlySection:
|
|
|
|
|
iniSections = tuple(set(iniSections)&
|
|
|
|
|
set([unicode(onlySection)]))
|
|
|
|
|
for section in iniSections:
|
|
|
|
|
importVars = config.getAreaVars(section)
|
|
|
|
|
if self.allVars == False:
|
|
|
|
|
continue
|
|
|
|
|
for key,value in importVars.items():
|
|
|
|
|
for key,value in config.items(section, raw=True):
|
|
|
|
|
key = _toUNICODE(key).encode('utf-8')
|
|
|
|
|
self.iniCache[key] = {'value':value,
|
|
|
|
|
'section':section}
|
|
|
|
@ -1293,7 +1288,7 @@ class DataVars(SimpleDataVars):
|
|
|
|
|
# write value to ini file
|
|
|
|
|
config = cl_template.iniParser(iniFile)
|
|
|
|
|
val = self.serialize(self.getInfo(varname).type,
|
|
|
|
|
val)
|
|
|
|
|
val)
|
|
|
|
|
writeVal = convertStrListDict(val)
|
|
|
|
|
if writeVal != config.getVar(header,varname):
|
|
|
|
|
if not config.setVar(header,{varname: writeVal}):
|
|
|
|
|