Modified DataVars

develop
Самоукин Алексей 14 years ago
parent 685d15f594
commit 5b2594c611

@ -20,6 +20,7 @@ import cl_utils
from cl_lang import lang
from cl_template import iniParser
from cl_string import columnWrite
import cl_overriding
# Перевод модуля на другой язык
tr = lang()
@ -116,6 +117,8 @@ class DataVars(object):
#[(cекция,импортированный модуль переменных, объект заполнения),]
self._importList = []
self.importData("Global")
# Переменные которые нужно записать
self.varsNeedWritten = []
def importData(self, section, modlist=[]):
"""Импортирует модули с переменными и модули с функциями заполнения
@ -252,7 +255,7 @@ class DataVars(object):
self.__setattr__(nameVar, varobj)
if self.__dict__.has_key(nameVar):
if not force and "r" in getattr(self, nameVar).mode:
print _("Attempt to rewrite a variable for reading:%s")\
print _("Attempt to rewrite a variable for reading") +": %s"\
%nameVar
return False
self.__getattribute__(nameVar).fillStart = False
@ -261,6 +264,25 @@ class DataVars(object):
def Set(self, nameVar, value, force=False):
return self.__Set(nameVar, value, force)
def SetWriteVar(self, nameVar, value, force=False):
"""Установка значения переменной,
и запись в список сохраняемых переменных"""
ret = self.__Set(nameVar, value, force)
if ret and not nameVar in self.varsNeedWritten:
self.varsNeedWritten.append(nameVar)
return ret
def WriteVars(self, location='local', header=False):
"""Запись переменных установленных командой SetWriteVar"""
flagSuccess = True
for nameVar in self.varsNeedWritten:
if not self.Write(nameVar, self.Get(nameVar), force=False,
location=location, header=header):
flagSuccess = False
break
return flagSuccess
def __frame(self, lVar):
"""получить список областей зависимости переменных"""
data = []
@ -298,9 +320,18 @@ class DataVars(object):
links[name][nm] = ""
return links
def __getPathCalculateIni(self):
"""Получить пути до ini файлов"""
return self.Get('cl_env_path')
def __getPathCalculateIni(self, location):
"""Получить путь к ini файлу по алиасу пути"""
retData = self.Get('cl_env_data')
ini_dict = {}
ini_dict.update(retData)
if location in ini_dict.keys():
name_calculate_ini = ini_dict[location]
else:
print _("Unable to find the alias '%s' of the file path for \
storage of variables templates")%location
cl_overriding.exit(1)
return name_calculate_ini
def __getSection(self, vname):
"""секция для записи в ini файл переменной
@ -326,17 +357,8 @@ class DataVars(object):
True запись успешна
False запись не удалсь
'''
# получаем все пути до ini файлов
calculate_ini = self.__getPathCalculateIni()
# получаем полный путь до файла ini
if location == 'default':
name_calculate_ini = calculate_ini[2]
elif location == 'local':
name_calculate_ini = calculate_ini[1]
elif location == 'remote':
name_calculate_ini = calculate_ini[0]
else:
return False
# получаем путь до ini файла
name_calculate_ini = self.__getPathCalculateIni(location)
# извлекаем из полного имени файла путь
onlydir = os.path.split(name_calculate_ini)[0]
try:
@ -364,17 +386,8 @@ class DataVars(object):
True удалено успешна
False удаление не удалсь
'''
# получаем все пути до ini файлов
calculate_ini = self.__getPathCalculateIni()
# получаем полный путь до файла ini
if location == 'default':
name_calculate_ini = calculate_ini[2]
elif location == 'local':
name_calculate_ini = calculate_ini[1]
elif location == 'remote':
name_calculate_ini = calculate_ini[0]
else:
return False
# получаем путь до ini файла
name_calculate_ini = self.__getPathCalculateIni(location)
# извлекаем из полного имени файла путь
onlydir = os.path.split(name_calculate_ini)[0]
# проверяем чтобы путь до ини файла существовал
@ -443,13 +456,14 @@ class DataVars(object):
'''
#Cловарь переменных из ini файлов
importVars = {}
calculate_ini = self.__getPathCalculateIni()
calculate_ini_files = self.Get('cl_env_path')
# активные секции (секции из которых будут использованы переменные)
act_section = self.__getActiveSections()
set_act_section = set(act_section)
i = 0
locations = ['remote','local','default']
for name_calculate_ini in calculate_ini:
# Алиасы к путям env
locations = self.Get('cl_env_location')
for name_calculate_ini in calculate_ini_files:
# проверить сущестование ini файла
if os.path.exists(name_calculate_ini):
# получить объект настроенный на ini
@ -482,13 +496,14 @@ class DataVars(object):
return importVars
#def defined(self, vname):
#if vname:
#if self.__dict__.has_key(vname):
#return True
#return False
def defined(self, vname):
return True
"""Установлена ли переменная"""
if hasattr(self, vname):
return True
return False
#def defined(self, vname):
#return True
@ -537,14 +552,8 @@ class DataVars(object):
for i,j in var.items():
if len(i)>mlen_name:
mlen_name=len(i)
#if len(str(j.type))>mlen_type:
#mlen_type=len(str(j.type))
vtype=str(type(var[i].value)).split(" ")[1][1]
if not '[' in var[i].mode:
if vtype in ['d','l']:
mode="[%s%s]"%(var[i].mode.lower(),vtype)
else:
mode="[%s]"%(var[i].mode.lower())
mode="[%s]"%(var[i].mode.lower())
var[i].mode=mode
if len(mode)>mlen_mode:
mlen_mode=len(mode)
@ -552,26 +561,15 @@ class DataVars(object):
plist.sort()
br = cl_utils.fillstr("-",mlen_name) + " " +\
cl_utils.fillstr("-",mlen_mode) + " " + cl_utils.fillstr("-",10)
#cl_utils.fillstr("-",mlen_type) + " " +\
print "The list of variables:"
print "var name".center(mlen_name),\
"Mode","Value"
#"Type".center(mlen_type),\
print br
for i in plist:
#if var[i].value is None:
#continue
p_val=var[i].value
if var[i].official:
continue
columnWrite( i, mlen_name, var[i].mode.lower(),
mlen_mode,
#str(var[i].type),
#mlen_type,
p_val)
columnWrite( i, mlen_name, var[i].mode.lower(), mlen_mode, p_val)
print br
class glob_attr:

@ -20,6 +20,7 @@ import types
import filecmp
import pwd, grp
import cl_datavars
import cl_overriding
class clLocale:
lang = {
@ -210,13 +211,31 @@ def getdirlist(s_path):
class fillVars(object, cl_datavars.glob_attr):
def get_cl_env_path(self):
'''Пути к env файлам'''
envData = self.Get("cl_env_data")
if envData:
return map(lambda x: x[1], envData)
else:
print _("Error:") + " " +_("Template variable cl_env_data is empty")
cl_overriding.exit(1)
def get_cl_env_location(self):
'''Алиасы к env файлам'''
envData = self.Get("cl_env_data")
if envData:
return map(lambda x: x[0], envData)
else:
print _("Error:") + " " +_("Template variable cl_env_data is empty")
cl_overriding.exit(1)
def get_os_net_domain(self):
''' Определим домен'''
'''Определим домен'''
domain=self._runos("hostname -d 2>&1")
if not domain:
print _("Error:") + " " +_("Not found domain name")
print _("Command 'hostname -d' returns an empty value")
cl_base.exit(1)
cl_overriding.exit(1)
elif re.search("^hostname: ",domain):
return "local"
else:

@ -36,10 +36,17 @@ class Data:
#домен
os_net_domain = {'mode':"w"}
# Пути к ini файлам
cl_env_path = {'value':['/var/calculate/remote/calculate.env',
'/var/calculate/calculate.env',
'/etc/calculate/calculate.env']}
# Алиасы и пути к ini файлам
cl_env_data = {'official':True,
'value':[('default', '/etc/calculate/calculate.env'),
('local', '/var/calculate/calculate.env'),
('remote', '/var/calculate/remote/calculate.env')]}
# Алиасы путей к ini файлам (из cl_env_data)
cl_env_location = {'official':True}
# Пути к ini файлам (из cl_env_data)
cl_env_path = {}
# локаль (прим: ru_RU.UTF-8)
os_locale_locale = {}
@ -101,18 +108,19 @@ class Data:
# версия системы
os_linux_ver = {}
# Тип профиля
cl_pass_type = {'mode':"w"}
# Действие программы
cl_pass_run = {'mode':"w"}
#Логин пользователя
ur_login = {'mode':"w"}
#Название группы пользователя
ur_group = {'mode':"w"}
#Полное имя пользователя
ur_fullname = {'mode':"w"}
# Действие программы
# profile - генерация профиля пользователя
# install / uninstall - установка и удаление программы
# domain / undomain - ввод и вывод из домена
cl_pass_action = {'mode':"w"}

Loading…
Cancel
Save