|
|
|
@ -333,15 +333,28 @@ class iniParser(cl_profile._error):
|
|
|
|
|
dictVar - словарь переменных
|
|
|
|
|
"""
|
|
|
|
|
textIni = self.openIniFile()
|
|
|
|
|
if not self.checkIniFile(textIni):
|
|
|
|
|
nameFomat = self.checkIniFile(textIni)
|
|
|
|
|
if not nameFomat:
|
|
|
|
|
return False
|
|
|
|
|
# создаем объект типа samba и записываем в него содержимое ini-файла
|
|
|
|
|
objIni = cl_profile.samba(textIni)
|
|
|
|
|
# создаем текст в формате samba из строки заголовка и
|
|
|
|
|
if type(strHeader) in (tuple, list):
|
|
|
|
|
# формат plasma
|
|
|
|
|
classObj = cl_profile.plasma
|
|
|
|
|
else:
|
|
|
|
|
if nameFomat == "plasma":
|
|
|
|
|
self.setError(_("In the file %s (format - 'plasma'), \
|
|
|
|
|
write the variable in the format 'samba'")\
|
|
|
|
|
%self.iniFile)
|
|
|
|
|
return False
|
|
|
|
|
# формат samba
|
|
|
|
|
classObj = cl_profile.samba
|
|
|
|
|
# создаем объект
|
|
|
|
|
# и записываем в него содержимое ini-файла
|
|
|
|
|
objIni = classObj(textIni)
|
|
|
|
|
# создаем текст из строки заголовка и
|
|
|
|
|
# словаря переменных области
|
|
|
|
|
txtConfig = objIni.createTxtConfig(strHeader, dictVar)
|
|
|
|
|
# создаем объект типа samba и записываем в него текст
|
|
|
|
|
objIniAdd = cl_profile.samba(txtConfig)
|
|
|
|
|
# создаем объект и записываем в него текст
|
|
|
|
|
objIniAdd = classObj(txtConfig)
|
|
|
|
|
# объединяем объекты для получения результирующего текста
|
|
|
|
|
objIni.join(objIniAdd)
|
|
|
|
|
# получаем текст
|
|
|
|
@ -364,13 +377,27 @@ class iniParser(cl_profile._error):
|
|
|
|
|
if textIni == False:
|
|
|
|
|
self.checkIni = False
|
|
|
|
|
return False
|
|
|
|
|
self.checkIni = True
|
|
|
|
|
self.checkIni = "samba"
|
|
|
|
|
# В файле есть данные
|
|
|
|
|
if not self.isEmptyFile(textIni):
|
|
|
|
|
objIni = cl_profile.samba(textIni)
|
|
|
|
|
xmlBody = objIni.docObj.getNodeBody()
|
|
|
|
|
if not xmlBody.firstChild:
|
|
|
|
|
try:
|
|
|
|
|
objIni = cl_profile.plasma(textIni)
|
|
|
|
|
except:
|
|
|
|
|
self.setError(_("Incorrect format file") + ": " + \
|
|
|
|
|
self.iniFile)
|
|
|
|
|
self.checkIni = False
|
|
|
|
|
return self.checkIni
|
|
|
|
|
allAreas = objIni.docObj.getAllAreas()
|
|
|
|
|
for xmlArea in allAreas:
|
|
|
|
|
parentNode = xmlArea.parentNode
|
|
|
|
|
if parentNode and parentNode.tagName == "area":
|
|
|
|
|
self.checkIni = "plasma"
|
|
|
|
|
break
|
|
|
|
|
if self.checkIni == "samba":
|
|
|
|
|
objIni = cl_profile.samba(textIni)
|
|
|
|
|
xmlBody = objIni.docObj.getNodeBody()
|
|
|
|
|
if not xmlBody.firstChild:
|
|
|
|
|
self.checkIni = False
|
|
|
|
|
return self.checkIni
|
|
|
|
|
|
|
|
|
|
def delVar(self, strHeader, nameVar):
|
|
|
|
@ -382,7 +409,13 @@ class iniParser(cl_profile._error):
|
|
|
|
|
|
|
|
|
|
def delArea(self, strHeader):
|
|
|
|
|
"""Удаляем область из ini файла"""
|
|
|
|
|
delStrHeader = "!%s" %(strHeader)
|
|
|
|
|
if type(strHeader) in (tuple, list):
|
|
|
|
|
# Формат plasma
|
|
|
|
|
delStrHeader = strHeader[:]
|
|
|
|
|
delStrHeader[-1] = "!%s"%delStrHeader[-1]
|
|
|
|
|
else:
|
|
|
|
|
# Формат samba
|
|
|
|
|
delStrHeader = "!%s" %(strHeader)
|
|
|
|
|
dictVar = {"del":"del"}
|
|
|
|
|
res = self.setVar(delStrHeader, dictVar)
|
|
|
|
|
return res
|
|
|
|
@ -390,49 +423,134 @@ class iniParser(cl_profile._error):
|
|
|
|
|
def getVar(self, strHeader, nameVar):
|
|
|
|
|
"""Получаем значение переменной из ini-файла"""
|
|
|
|
|
textIni = self.openIniFile()
|
|
|
|
|
if not self.checkIniFile(textIni):
|
|
|
|
|
nameFomat = self.checkIniFile(textIni)
|
|
|
|
|
if not nameFomat:
|
|
|
|
|
return False
|
|
|
|
|
# создаем объект типа samba и записываем в него содержимое ini-файла
|
|
|
|
|
objIni = cl_profile.samba(textIni)
|
|
|
|
|
formatPlasma = False
|
|
|
|
|
if type(strHeader) in (tuple, list):
|
|
|
|
|
# формат plasma
|
|
|
|
|
classObj = cl_profile.plasma
|
|
|
|
|
formatPlasma = True
|
|
|
|
|
else:
|
|
|
|
|
if nameFomat == "plasma":
|
|
|
|
|
self.setError(_("In the file %s (format - 'plasma'), \
|
|
|
|
|
get the variable in the format 'samba'")\
|
|
|
|
|
%self.iniFile)
|
|
|
|
|
return False
|
|
|
|
|
# формат samba
|
|
|
|
|
classObj = cl_profile.samba
|
|
|
|
|
# создаем объект и записываем в него содержимое ini-файла
|
|
|
|
|
objIni = classObj(textIni)
|
|
|
|
|
# получаем ноду body
|
|
|
|
|
xmlBody = objIni.docObj.getNodeBody()
|
|
|
|
|
# находим в области переменную
|
|
|
|
|
res = objIni.docObj.getAreaFieldValues(strHeader, nameVar, xmlBody)
|
|
|
|
|
if res == False:
|
|
|
|
|
flagFound, xmlBody = self.getLastNode(objIni, xmlBody, strHeader,
|
|
|
|
|
formatPlasma)
|
|
|
|
|
if flagFound and xmlBody:
|
|
|
|
|
if formatPlasma:
|
|
|
|
|
strHeader = strHeader[-1]
|
|
|
|
|
# находим в области переменную
|
|
|
|
|
res = objIni.docObj.getAreaFieldValues(strHeader, nameVar, xmlBody)
|
|
|
|
|
else:
|
|
|
|
|
res = False
|
|
|
|
|
if res is False:
|
|
|
|
|
return ""
|
|
|
|
|
else:
|
|
|
|
|
return res
|
|
|
|
|
|
|
|
|
|
def getAreaVars(self,strHeader):
|
|
|
|
|
|
|
|
|
|
def getLastNode(self, objIni, xmlBody, strHeader, formatPlasma):
|
|
|
|
|
"""Ищет область в XML в которой область с переменными"""
|
|
|
|
|
flagFound = True
|
|
|
|
|
lenStrHeader = len(strHeader)
|
|
|
|
|
if formatPlasma and lenStrHeader>0:
|
|
|
|
|
xmlAreas = [xmlBody]
|
|
|
|
|
for i in xrange(lenStrHeader-1):
|
|
|
|
|
flagFound = False
|
|
|
|
|
for xmlArea in xmlAreas:
|
|
|
|
|
xmlAreas = objIni.docObj.getArea(strHeader[i], xmlArea)
|
|
|
|
|
if xmlAreas:
|
|
|
|
|
flagFound = True
|
|
|
|
|
break
|
|
|
|
|
if xmlAreas:
|
|
|
|
|
xmlBody = xmlAreas[0]
|
|
|
|
|
return flagFound,xmlBody
|
|
|
|
|
|
|
|
|
|
def getAreaVars(self, strHeader):
|
|
|
|
|
"""Получаем все переменнные области из ini-файла"""
|
|
|
|
|
textIni = self.openIniFile()
|
|
|
|
|
if not self.checkIniFile(textIni):
|
|
|
|
|
nameFomat = self.checkIniFile(textIni)
|
|
|
|
|
if not nameFomat:
|
|
|
|
|
return False
|
|
|
|
|
formatPlasma = False
|
|
|
|
|
if type(strHeader) in (tuple, list):
|
|
|
|
|
# формат plasma
|
|
|
|
|
classObj = cl_profile.plasma
|
|
|
|
|
formatPlasma = True
|
|
|
|
|
else:
|
|
|
|
|
if nameFomat == "plasma":
|
|
|
|
|
self.setError(_("In the file %s (format - 'plasma'), \
|
|
|
|
|
get all variables in the format 'samba'")\
|
|
|
|
|
%self.iniFile)
|
|
|
|
|
return False
|
|
|
|
|
# формат samba
|
|
|
|
|
classObj = cl_profile.samba
|
|
|
|
|
# создаем объект типа samba и записываем в него содержимое ini-файла
|
|
|
|
|
objIni = cl_profile.samba(textIni)
|
|
|
|
|
objIni = classObj(textIni)
|
|
|
|
|
# получаем ноду body
|
|
|
|
|
xmlBody = objIni.docObj.getNodeBody()
|
|
|
|
|
# если находим область то выдаем словарем все переменные иначе False
|
|
|
|
|
res = objIni.docObj.getAreaFields(strHeader, xmlBody)
|
|
|
|
|
if res == False:
|
|
|
|
|
flagFound, xmlBody = self.getLastNode(objIni, xmlBody, strHeader,
|
|
|
|
|
formatPlasma)
|
|
|
|
|
if flagFound and xmlBody:
|
|
|
|
|
if formatPlasma:
|
|
|
|
|
strHeader = strHeader[-1]
|
|
|
|
|
# если находим область то выдаем словарем все переменные иначе False
|
|
|
|
|
res = objIni.docObj.getAreaFields(strHeader, xmlBody)
|
|
|
|
|
else:
|
|
|
|
|
res = False
|
|
|
|
|
if res is False:
|
|
|
|
|
return {}
|
|
|
|
|
else:
|
|
|
|
|
return res
|
|
|
|
|
|
|
|
|
|
def getAllSectionNames(self):
|
|
|
|
|
"""Получаем все имена секций определенных в ini файле"""
|
|
|
|
|
"""Получаем все имена секций определенных в ini файле
|
|
|
|
|
|
|
|
|
|
Если формат ini файла plasma то имя секции -
|
|
|
|
|
имена нескольких секций через запятую
|
|
|
|
|
"""
|
|
|
|
|
textIni = self.openIniFile()
|
|
|
|
|
if not self.checkIniFile(textIni):
|
|
|
|
|
nameFomat = self.checkIniFile(textIni)
|
|
|
|
|
if not nameFomat:
|
|
|
|
|
return False
|
|
|
|
|
# создаем объект типа samba и записываем в него содержимое ini-файла
|
|
|
|
|
objIni = cl_profile.samba(textIni)
|
|
|
|
|
# получаем ноду body
|
|
|
|
|
xmlBody = objIni.docObj.getNodeBody()
|
|
|
|
|
xmlNodes = objIni.docObj.getFieldsArea(xmlBody)
|
|
|
|
|
if nameFomat == "samba":
|
|
|
|
|
# создаем объект типа samba и записываем в него содержимое ini-файла
|
|
|
|
|
objIni = cl_profile.samba(textIni)
|
|
|
|
|
elif nameFomat == "plasma":
|
|
|
|
|
# создаем объект типа plasma и записываем в него содержимое
|
|
|
|
|
# ini-файла
|
|
|
|
|
objIni = cl_profile.plasma(textIni)
|
|
|
|
|
else:
|
|
|
|
|
return []
|
|
|
|
|
xmlNodes = objIni.docObj.getAllAreas()
|
|
|
|
|
# Имена секций ini файла
|
|
|
|
|
namesSection = []
|
|
|
|
|
for xmlNode in xmlNodes:
|
|
|
|
|
if xmlNode.tagName == "area":
|
|
|
|
|
if nameFomat == "plasma":
|
|
|
|
|
for xmlNode in xmlNodes:
|
|
|
|
|
nSect = objIni.docObj.getNameArea(xmlNode)
|
|
|
|
|
if nSect:
|
|
|
|
|
namesSect = [nSect]
|
|
|
|
|
parentNode = xmlNode.parentNode
|
|
|
|
|
while parentNode != objIni.docObj.body:
|
|
|
|
|
nameSect = objIni.docObj.getNameArea(parentNode)
|
|
|
|
|
if nameSect:
|
|
|
|
|
namesSect.append(nameSect)
|
|
|
|
|
parentNode = parentNode.parentNode
|
|
|
|
|
else:
|
|
|
|
|
return []
|
|
|
|
|
namesSection.append(",".join(reversed(namesSect)))
|
|
|
|
|
elif nameFomat == "samba":
|
|
|
|
|
# получаем ноду body
|
|
|
|
|
for xmlNode in xmlNodes:
|
|
|
|
|
nSect = objIni.docObj.getNameArea(xmlNode)
|
|
|
|
|
if nSect:
|
|
|
|
|
namesSection.append(nSect)
|
|
|
|
|