|
|
|
@ -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):
|
|
|
|
|