Browse Source

Исправлена запись в ini файл

develop^2
Mike Hiretsky 7 years ago
parent
commit
fc4dc1ee5a
  1. 96
      pym/cl_template.py

96
pym/cl_template.py

@ -5380,6 +5380,9 @@ class templateClt(scanDirectoryClt, template):
return False
return (self.createdDirs, self.filesApply)
class IniError(Exception):
pass
class iniParser(_error, templateFormat):
"""Класс для работы с ini файлами
@ -5408,6 +5411,16 @@ class iniParser(_error, templateFormat):
def openRWIniFile(self):
if not os.access(self.iniFile, os.R_OK):
if not os.path.exists(self.iniFile):
try:
# Создание файла
self.FD = open(self.iniFile, "w+")
fcntl.flock(self.FD.fileno(), fcntl.LOCK_EX)
os.chmod(self.iniFile, self.mode)
except:
error = _("Unable to create the file") + ": " + self.iniFile
self.setError(error)
raise IniError(error)
return ""
try:
self.FD = open(self.iniFile, "r+")
@ -5423,16 +5436,6 @@ class iniParser(_error, templateFormat):
self.setError(_("Unable to write to the file") +
": " + self.iniFile)
return False
if not os.path.exists(self.iniFile):
try:
# Создание файла
self.FD = open(self.iniFile, "w+")
fcntl.flock(self.FD.fileno(), fcntl.LOCK_EX)
os.chmod(self.iniFile, self.mode)
except:
self.setError(_("Unable to create the file") +
": " + self.iniFile)
return False
if not self.FD:
self.setError(_("Unable to write to the file") +
": " + self.iniFile)
@ -5440,8 +5443,6 @@ class iniParser(_error, templateFormat):
self.FD.truncate(0)
self.FD.seek(0)
self.FD.write(txtConfig)
self.FD.close()
self.FD = None
return True
def setVar(self, strHeader, dictVar):
@ -5451,37 +5452,50 @@ class iniParser(_error, templateFormat):
strHeader - имя области
dictVar - словарь переменных
"""
textIni = self.openRWIniFile()
nameFomat = self.checkIniFile(textIni)
if not nameFomat:
return False
if type(strHeader) in (tuple, list):
# формат plasma
classObj = self.getClassObj("plasma")
else:
if nameFomat == "plasma":
self.setError(_("Trying to write a variable of 'samba' format"
" to file %s (format - 'plasma')")
%self.iniFile)
try:
textIni = self.openRWIniFile()
nameFomat = self.checkIniFile(textIni)
if not nameFomat:
return False
# формат samba
classObj = self.getClassObj("samba")
# создаем объект
# и записываем в него содержимое ini-файла
objIni = classObj(textIni)
# создаем текст из строки заголовка и
# словаря переменных области
txtConfig = objIni.createTxtConfig(strHeader, dictVar)
# создаем объект и записываем в него текст
objIniAdd = classObj(txtConfig)
# объединяем объекты для получения результирующего текста
objIni.join(objIniAdd)
# получаем текст
txtConfig = objIni.getConfig().encode("UTF-8")
# записываем его в ini файл
if not self.writeIniFile(txtConfig):
if type(strHeader) in (tuple, list):
# формат plasma
classObj = self.getClassObj("plasma")
else:
if nameFomat == "plasma":
self.setError(_("Trying to write a variable of 'samba' format"
" to file %s (format - 'plasma')")
%self.iniFile)
return False
# формат samba
classObj = self.getClassObj("samba")
# создаем объект
# и записываем в него содержимое ini-файла
objIni = classObj(textIni)
# создаем текст из строки заголовка и
# словаря переменных области
txtConfig = objIni.createTxtConfig(strHeader, dictVar)
# создаем объект и записываем в него текст
objIniAdd = classObj(txtConfig)
# объединяем объекты для получения результирующего текста
objIni.join(objIniAdd)
# получаем текст
txtConfig = objIni.getConfig().encode("UTF-8")
# записываем его в ini файл
if not self.writeIniFile(txtConfig):
return False
return True
except IniError:
return False
return True
finally:
self._closeFD()
def _closeFD(self):
if self.FD:
try:
self.FD.close()
except:
pass
self.FD = None
def isEmptyFile(self, textIni):
"""Если файл пустой или содержит только комментарии - False

Loading…
Cancel
Save