From 31738e4fa43a6b432accc0ac052c228a9ffd08d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BC=D0=BE=D1=83=D0=BA=D0=B8=D0=BD=20=D0=90?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 27 May 2010 14:49:07 +0400 Subject: [PATCH] Add template function info() --- pym/cl_template.py | 57 +++++++++++++++++++++++++++++++++++++++++++++- pym/cl_vars.py | 6 ++--- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/pym/cl_template.py b/pym/cl_template.py index 861cabf..2945d1f 100644 --- a/pym/cl_template.py +++ b/pym/cl_template.py @@ -32,7 +32,7 @@ from cl_ldap import ldapFun import cl_overriding from cl_utils import _error, _toUNICODE, getModeFile, removeDir, typeFile,\ -scanDirectory +scanDirectory, convertStrListDict import cl_lang tr = cl_lang.lang() @@ -2293,6 +2293,8 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction): self.timeConfigsIni = {} # Словарь хранения переменых полученных функцией env() из env файлов self.valuesVarEnv = {} + # Словарь хранения опций для функции info() + self.optionsInfo = {} def equalTerm(self, term, localVars): """Метод для вычисления выражения""" @@ -2870,6 +2872,59 @@ class templateFunction(_error, _shareTemplate, _shareTermsFunction): textTemplateTmp[resS.end():] return textTemplateTmp + def funcInfo(self, funArgv, resS, localVars, textTemplateTmp): + """Функция шаблона info(), выдает значение опций сервиса + + из /var/calculate/remote/calculate.env + """ + terms = funArgv.replace(" ","").split(",") + if len(terms) != 2: + self.printErrTemplate() + cl_overriding.exit(1) + service = terms[0].strip() + option = terms[1].strip() + if not service or not option: + self.printErrTemplate() + cl_overriding.exit(1) + if not self.optionsInfo: + valueEnvData = self.objVar.Get("cl_env_data") + envData = {} + envData.update(valueEnvData) + if not "remote" in envData: + print _("Can not found env path 'remote' in template variable \ +'cl_env_data'") + self.printErrTemplate() + cl_overriding.exit(1) + # файл /var/calculate/remote/calculate.env + envFile = envData["remote"] + # получить объект настроенный на ini + config = iniParser(envFile) + # получаем все секции из конфигурационного файла + allsect = config.getAllSectionNames() + if allsect: + # Секция (название сервиса) + for section in allsect: + allvars = config.getAreaVars(section) + if allvars == False: + self.printErrTemplate() + cl_overriding.exit(1) + # Опции сервиса + options = {} + for varName, value in allvars.items(): + varName = varName.encode("UTF-8") + if varName.endswith("%s_info" %section): + value = convertStrListDict(value.encode("UTF-8")) + options = value + if options: + self.optionsInfo[section] = options + replace = '' + if service in self.optionsInfo: + if option in self.optionsInfo[service]: + replace = self.optionsInfo[service][option] + textTemplateTmp = textTemplateTmp[:resS.start()] + replace +\ + textTemplateTmp[resS.end():] + return textTemplateTmp + def printErrTemplate(self): """Печать ошибки при обработке функций шаблона""" print _("error in template %s")%self.nameTemplate diff --git a/pym/cl_vars.py b/pym/cl_vars.py index 04ea296..c457be3 100644 --- a/pym/cl_vars.py +++ b/pym/cl_vars.py @@ -40,9 +40,9 @@ class Data: # Алиасы и пути к ini файлам cl_env_data = {'official':True, - 'value':[('default', '/etc/calculate/calculate.env'), - ('local', '/var/calculate/calculate.env'), - ('remote', '/var/calculate/remote/calculate.env')]} + 'value':[('default', '/etc/calculate/calculate2.env'), + ('local', '/var/calculate/calculate2.env'), + ('remote', '/var/calculate/remote/calculate2.env')]} # Алиасы путей к ini файлам (из cl_env_data) cl_env_location = {'official':True}