diff --git a/pym/cl_datavars.py b/pym/cl_datavars.py index 4b39720..dd78802 100644 --- a/pym/cl_datavars.py +++ b/pym/cl_datavars.py @@ -415,8 +415,8 @@ storage of variables templates")%location if self.__Set(vname, val, force)!= False: if not val.strip(): self.__deleteVarValue(vname, location, header) - self.__writeVarValue(vname, val, location, header) - return True + if self.__writeVarValue(vname, val, location, header): + return True return False def Delete(self, vname, location='default', header=False): diff --git a/pym/cl_template.py b/pym/cl_template.py index cb703c7..a0cfd09 100644 --- a/pym/cl_template.py +++ b/pym/cl_template.py @@ -3436,7 +3436,6 @@ re.M|re.S) return False return True - applyDir = newDir # Родительская директория if optDir.get("path"): @@ -3450,6 +3449,9 @@ re.M|re.S) realPath = os.path.join("/",applyDir.partition(self._baseDir)[2]) if realPath in self.dirsFilter: return (applyDir, False) + # Создаем директорию если необходимо + if not self.createDir(applyDir, False, self.uid, self.gid): + return False return (applyDir, True) try: FD = open(templateDirFile) @@ -3525,7 +3527,6 @@ re.M|re.S) self.setError(_("False value 'chmod' in template") + ": " +\ templateDirFile) return (applyDir, False) - # chown - изменяем владельца и группу if "chown" in objHead.params: owner = objHead.params['chown'] @@ -4258,11 +4259,16 @@ class iniParser(_error, templateFormat): self.setError(_("Unable to create file") + ": " + self.iniFile) return False else: - FD = open(self.iniFile, "r+") + try: + FD = open(self.iniFile, "r+") + except: + self.setError(_("Unable to open file") + ": " + self.iniFile) + return False FD.truncate(0) FD.seek(0) FD.write(txtConfig) FD.close() + return True def setVar(self, strHeader, dictVar): """Заменяет или добавляет область и переменные @@ -4299,7 +4305,8 @@ class iniParser(_error, templateFormat): # получаем текст txtConfig = objIni.getConfig().encode("UTF-8") # записываем его в ini файл - self.writeIniFile(txtConfig) + if not self.writeIniFile(txtConfig): + return False return True def isEmptyFile(self, textIni): diff --git a/pym/cl_vars.py b/pym/cl_vars.py index 0809d6f..33aaa02 100644 --- a/pym/cl_vars.py +++ b/pym/cl_vars.py @@ -50,6 +50,10 @@ class Data: # Пути к ini файлам (из cl_env_data) cl_env_path = {} + # Пути к файлам шаблонов + cl_template_path = {'value':["/usr/share/calculate-2.2/templates", + "/var/calculate/templates", + "/var/calculate/remote/templates"]} # локаль (прим: ru_RU.UTF-8) os_locale_locale = {} # язык (прим: ru_RU) @@ -120,6 +124,10 @@ class Data: #Полное имя пользователя ur_fullname = {'mode':"r", 'official':True} + #путь к директории относительно которой происходит наложение профилей на + #файлы системы + cl_root_path = {'mode':"w", 'value':"/"} + # Действие программы # profile - генерация профиля пользователя # install / uninstall - установка и удаление программы @@ -132,8 +140,8 @@ class Data: # Почтовый адрес пользователя ur_mail = {'mode':"r", 'official':True} - # Переменные устанавливаемые сервером для клиента + # Переменные пакета calculate-client для calculate-desktop # ip или имя домена (под управлением calculate-server) - cl_remote_host = {'mode':'w', 'official':True} - + cl_remote_host = {'mode':'r', 'official':True} +