From 5ae60b582115eb6c7f3373a34022f4fd12133e5b 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: Tue, 23 Mar 2010 15:13:31 +0300 Subject: [PATCH] Bugfix --- pym/cl_profile.py | 63 +++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/pym/cl_profile.py b/pym/cl_profile.py index 668933a..6cc07c0 100644 --- a/pym/cl_profile.py +++ b/pym/cl_profile.py @@ -2724,6 +2724,8 @@ class profile(_file, _terms, xmlShare, processingTemplates): terms = funTxt[4:-1].replace(" ","") # Название программы nameProg = terms + #if "/" in terms: + #category, nameProg = if not self.installProg: self.installProg,self.installProgVersions=getInstallPkgGentoo() replace = pkg(nameProg,self.installProg,self.installProgVersions) @@ -3026,34 +3028,46 @@ class profile(_file, _terms, xmlShare, processingTemplates): resS = self._reFunc.search(textProfileTmp) else: resS = False - if self.prevDictIni != self.currDictIni or\ - (self.timeIni!=-1 and\ - getTimeFile(self.fileConfigIni)!= self.timeIni): - # Записываем переменные в конфигурационный файл + if self.timeIni!=-1: # Очистка файла в случае его ошибочного чтения if not self.prevDictIni and os.path.exists(self.fileConfigIni): FD = open(self.fileConfigIni, "r+") FD.truncate(0) FD.seek(0) FD.close() - # Запись переменных - # Создание объекта парсера - config = cl_base.iniParser(self.fileConfigIni) - # секции будущего конфигурационного файла - sects = list(set(map(lambda x: x.split(".")[0],\ - self.currDictIni.keys()))) - # запись переменных в файл - for sect in sects: - dictVar = {} - for varName in self.currDictIni.keys(): - if varName.startswith("%s."%sect): - nameVar = varName.rpartition(".")[2] - valueVar = self.currDictIni[varName] - if valueVar: - dictVar[nameVar] = valueVar - if dictVar: - # Запись переменных в секцию - config.setVar(sect, dictVar) + # Если конф. файл модифицирован шаблоном + curTime = getTimeFile(self.fileConfigIni) + if curTime != self.timeIni: + # Считаем переменные из конф. файла + self.prevDictIni = loadVarsIni(self.fileConfigIni) + self.currDictIni.update(self.prevDictIni) + self.timeIni = curTime + # Если словари переменных не совпадают + if self.prevDictIni != self.currDictIni: + # Запишем переменные в конфигурационный файл + # Создание объекта парсера + config = cl_base.iniParser(self.fileConfigIni) + # секции будущего конфигурационного файла + sects = list(set(map(lambda x: x.split(".")[0],\ + self.currDictIni.keys()))) + # запись переменных в файл + for sect in sects: + dictVar = {} + for varName in self.currDictIni.keys(): + if varName.startswith("%s."%sect): + nameVar = varName.rpartition(".")[2] + valueVar = self.currDictIni[varName] + if valueVar: + dictVar[nameVar] = valueVar + if dictVar: + # Запись переменных в секцию + config.setVar(sect, dictVar) + # читаем переменные из файла + self.prevDictIni = loadVarsIni(self.fileConfigIni) + self.currDictIni.update(self.prevDictIni) + self.timeConfigsIni[self.fileConfigIni] = float(time.time()) + self.timeIni = getTimeFile(self.fileConfigIni) + # Меняем владельца в случае необходимости if os.path.exists(self.fileConfigIni): fd = os.open(self.fileConfigIni, os.O_RDONLY) fst = os.fstat(fd) @@ -3062,11 +3076,6 @@ class profile(_file, _terms, xmlShare, processingTemplates): os.close(fd) if self.uid!=uid or self.gid!=gid: os.chown(self.fileConfigIni, int(self.uid), int(self.gid)) - # читаем переменные из файла - self.prevDictIni = loadVarsIni(self.fileConfigIni) - self.currDictIni.update(self.prevDictIni) - self.timeConfigsIni[self.fileConfigIni] = float(time.time()) - self.timeIni = getTimeFile(self.fileConfigIni) return textProfileTmp def applyTermsProfile(self, textProfile, nameProfile, nameSystemFile=False):