git-svn-id: http://svn.calculate.ru/calculate2/calculate-lib/trunk@26 c91db197-33c1-4113-bf15-f8a5c547ca64

develop
asamoukin 16 years ago
parent 07ecdcf924
commit 7391c12dc7

@ -205,7 +205,7 @@ class calcHeader(_terms):
if fileType != False: if fileType != False:
if fileType=="bin": if fileType=="bin":
self.params["type"] = fileType self.params["format"] = fileType
self.fileType = self._getType() self.fileType = self._getType()
self.typeAppend = self._getAppend() self.typeAppend = self._getAppend()
else: else:
@ -262,8 +262,8 @@ class calcHeader(_terms):
def _getType(self): def _getType(self):
"""Выдать тип файла""" """Выдать тип файла"""
if self.params.has_key("type"): if self.params.has_key("format"):
return self.params["type"] return self.params["format"]
else: else:
return "raw" return "raw"
@ -733,7 +733,7 @@ class xmlDoc:
for newNode, nxtNode, app in insSplLst: for newNode, nxtNode, app in insSplLst:
flagCompareSeplist = False flagCompareSeplist = False
newValues = self.getFieldValues(newNode) newValues = self.getFieldValues(newNode)
for nodeRepl, nxtNode in insNodesRepl: for nodeRepl, nxtNode, app in insNodesRepl:
oldValues = self.getFieldValues(nodeRepl) oldValues = self.getFieldValues(nodeRepl)
for newValue in newValues: for newValue in newValues:
if newValue in oldValues: if newValue in oldValues:
@ -766,9 +766,6 @@ class xmlDoc:
xmlArea.replaceChild(xmlNewField.cloneNode(True), xmlArea.replaceChild(xmlNewField.cloneNode(True),
fieldsOldComp[-1]) fieldsOldComp[-1])
#print "-------------------------------------------------------"
#print "ACTION", newFieldsAction
#print xmlNewField.toprettyxml()
if newFieldsAction == "join": if newFieldsAction == "join":
fieldsOldRemove = [] fieldsOldRemove = []
else: else:
@ -1657,36 +1654,6 @@ class _file(_error):
self.__closeNewFile() self.__closeNewFile()
self.__closeOldFile() self.__closeOldFile()
class meta(type):
"""Метакласс для новых генерируемых genClass классов"""
def __new__(cls, name, bases, dict):
return type.__new__(cls, name, bases, dict)
def __setAtr(cls, name, bases, dict):
cls.__name__ = name
for cl in bases:
if cl.__dict__.has_key("__init__"):
# метод run необходимо запустить после создания объекта
cls.run = cl.__init__
#print bases
#print "--------------------"
#cls.__bases__
#print "####################"
if len(cls.__bases__) <2:
cls.__bases__ += bases
for key in dict.keys():
setattr(cls, key, dict[key])
def __init__(cls, *args):
cls.__init__ = cls.__setAtr
def __init__(cls, *args):
cls.__init__ = cls.__setAtr
class genClass:
"""Класс для генерирования новых классов"""
__metaclass__ = meta
class profile(_file, _terms): class profile(_file, _terms):
"""Класс для работы с профилями """Класс для работы с профилями
@ -1697,8 +1664,8 @@ class profile(_file, _terms):
""" """
def __init__(self, objVar, servDir=False): def __init__(self, objVar, servDir=False):
_file.__init__(self) _file.__init__(self)
# Словарь для создания новых классов по образцу # Словарь для создания объектов новых классов по образцу
self.dncp = {'proftpd':(apache,),} self.newObjProt = {'proftpd':(apache,),}
# Заголовок title # Заголовок title
self.__titleHead = "--------------------------------------\ self.__titleHead = "--------------------------------------\
----------------------------------------" ----------------------------------------"
@ -1965,12 +1932,12 @@ class profile(_file, _terms):
os.symlink(oldFile, prevOldFile) os.symlink(oldFile, prevOldFile)
return objHeadNew return objHeadNew
def createNewClassObj(self, name, bases, attrs={}): def createNewClass(self, name, bases, attrs={}):
"""Создает объект нового класса """Создает объект нового класса
createNewClassObj(self, name, bases, attrs) createNewClass(self, name, bases, attrs)
name - имя класса - str, name - имя класса - str,
bases - cписок наследуемых классов - (typle), bases - cписок наследуемых классов - (tuple),
attrs - аттрибуты класса - {dict} attrs - аттрибуты класса - {dict}
""" """
class newMethod: class newMethod:
@ -1979,13 +1946,12 @@ class profile(_file, _terms):
if newObj.__class__.__name__ == self.__class__.__name__: if newObj.__class__.__name__ == self.__class__.__name__:
self.docObj.joinDoc(newObj.doc) self.docObj.joinDoc(newObj.doc)
attrsNew = {} attrsNew = {}
attrsNew["configName"] = self.__class__.__name__ attrsNew["configName"] = name
if attrs: if attrs:
for key in attrs.keys(): for key in attrs.keys():
attrsNew[key] = attrs[key] attrsNew[key] = attrs[key]
newCl = type(name, bases + (newMethod, object,), attrsNew)
newObj = genClass(name, (newMethod,)+bases, attrs) return newCl
return newObj
@ -2070,11 +2036,13 @@ class profile(_file, _terms):
exec ("objProfNew=%s(self.newProfile)"%\ exec ("objProfNew=%s(self.newProfile)"%\
(objHeadNew.fileType)) (objHeadNew.fileType))
except NameError: except NameError:
if self.dncp.has_key(objHeadNew.fileType): #Создаем объект из self.newObjProt с помощью
objProfNew = self.createNewClassObj(\ # метаклассов
objHeadNew.fileType, if self.newObjProt.has_key(objHeadNew.fileType):
self.dncp[objHeadNew.fileType]) objProfNewCl = self.createNewClass(\
objProfNew.run(self.newProfile) objHeadNew.fileType,
self.newObjProt[objHeadNew.fileType])
objProfNew = objProfNewCl(self.newProfile)
else: else:
self.setError (\ self.setError (\
_("False join profile for type profile: ")\ _("False join profile for type profile: ")\
@ -2092,24 +2060,26 @@ class profile(_file, _terms):
reNoClean = re.compile("[^\s]",re.M) reNoClean = re.compile("[^\s]",re.M)
if not self.oldProfile or\ if not self.oldProfile or\
not reNoClean.search(self.oldProfile): not reNoClean.search(self.oldProfile):
if objHeadNew.execStr: self.oldProfile = ""
self.oldProfile = objHeadNew.execStr + \ #if objHeadNew.execStr:
title + self.newProfile #self.oldProfile = objHeadNew.execStr + \
else: #title + objProfNew.getConfig().encode("UTF-8")
self.oldProfile = title + self.newProfile #else:
self.saveOldFile() #self.oldProfile = title +\
return True #objProfNew.getConfig().encode("UTF-8")
#self.saveOldFile()
#return True
objHeadOld = calcHeader(self.oldProfile, objProfNew._comment) objHeadOld = calcHeader(self.oldProfile, objProfNew._comment)
if objHeadOld.body: if objHeadOld.body:
self.oldProfile = objHeadOld.body self.oldProfile = objHeadOld.body
else: else:
self.oldProfile = "" self.oldProfile = ""
if self.dncp.has_key(objHeadNew.fileType): if self.newObjProt.has_key(objHeadNew.fileType):
objProfOld = self.createNewClassObj(\ objProfOldCl = self.createNewClass(\
objHeadNew.fileType, objHeadNew.fileType,
self.dncp[objHeadNew.fileType]) self.newObjProt[objHeadNew.fileType])
objProfOld.run(self.oldProfile) objProfOld = objProfOldCl(self.oldProfile)
else: else:
exec ("objProfOld=%s(self.oldProfile)"%\ exec ("objProfOld=%s(self.oldProfile)"%\
(objHeadNew.fileType)) (objHeadNew.fileType))
@ -2960,16 +2930,3 @@ class postfix(apache):
fields.append(field) fields.append(field)
field = fieldData() field = fieldData()
return fields return fields
#class proftpd(apache):
#"""Класс для обработки конфигурационного файла типа proftpd
#"""
#configName = "proftpd"
#configVersion = "0.1"
#def join(self, namedObj):
#"""Объединяем конфигурации"""
#if isinstance(namedObj, proftpd):
#self.docObj.joinDoc(namedObj.doc)
Loading…
Cancel
Save