can access to extra variables
This commit is contained in:
@ -241,6 +241,19 @@ class CreoleLeader:
|
||||
self.slave[name] = values
|
||||
|
||||
|
||||
class CreoleExtra:
|
||||
def __init__(self,
|
||||
suboption: Dict) -> None:
|
||||
self.suboption = suboption
|
||||
|
||||
def __getattr__(self,
|
||||
key: str) -> Any:
|
||||
return self.suboption[key]
|
||||
|
||||
def __repr__(self):
|
||||
return self.suboption.__str__()
|
||||
|
||||
|
||||
class CreoleTemplateEngine:
|
||||
"""Engine to process Creole cheetah template
|
||||
"""
|
||||
@ -261,10 +274,21 @@ class CreoleTemplateEngine:
|
||||
eos[func] = getattr(eosfunc, func)
|
||||
self.eosfunc = eos
|
||||
self.creole_variables_dict = {}
|
||||
self.load_eole_variables(self.config, self.config.option('creole'))
|
||||
for option in self.config.option.list(type='all'):
|
||||
namespace = option.option.name()
|
||||
if namespace == 'containers':
|
||||
continue
|
||||
elif namespace == 'creole':
|
||||
self.load_eole_variables_creole(self.config,
|
||||
option)
|
||||
else:
|
||||
self.load_eole_variables(self.config,
|
||||
namespace,
|
||||
option)
|
||||
|
||||
def load_eole_variables(self, config, optiondescription):
|
||||
# remplacement des variables EOLE
|
||||
def load_eole_variables_creole(self,
|
||||
config,
|
||||
optiondescription):
|
||||
for option in optiondescription.list('all'):
|
||||
if option.option.isoptiondescription():
|
||||
if option.option.isleadership():
|
||||
@ -277,10 +301,34 @@ class CreoleTemplateEngine:
|
||||
suboption.option.name(),
|
||||
suboption.option.path())
|
||||
else:
|
||||
self.load_eole_variables(config, option)
|
||||
self.load_eole_variables_creole(config,
|
||||
option)
|
||||
else:
|
||||
self.creole_variables_dict[option.option.name()] = option.value.get()
|
||||
|
||||
def load_eole_variables(self,
|
||||
config,
|
||||
namespace,
|
||||
optiondescription):
|
||||
families = {}
|
||||
for family in optiondescription.list('all'):
|
||||
variables = {}
|
||||
for variable in family.list('all'):
|
||||
if variable.option.isoptiondescription() and variable.option.isleadership():
|
||||
for idx, suboption in enumerate(variable.list('all')):
|
||||
if idx == 0:
|
||||
leader = CreoleLeader(suboption.value.get())
|
||||
leader_name = suboption.value.name()
|
||||
else:
|
||||
leader.add_slave(config,
|
||||
suboption.option.name(),
|
||||
suboption.option.path())
|
||||
variables[leader_name] = leader
|
||||
else:
|
||||
variables[variable.option.name()] = variable.value.get()
|
||||
families[family.option.name()] = CreoleExtra(variables)
|
||||
self.creole_variables_dict[namespace] = CreoleExtra(families)
|
||||
|
||||
def patch_template(self,
|
||||
filename: str):
|
||||
"""Apply patch to a template
|
||||
|
Reference in New Issue
Block a user