|
|
|
@ -192,7 +192,7 @@ class calcHeader(_terms):
|
|
|
|
|
# Удаление Заголовка Calculate
|
|
|
|
|
if comment:
|
|
|
|
|
reCalcHeader =\
|
|
|
|
|
re.compile("\s*%s\-+\s+%s.+Calculate.+\s+%s.+\s+%s\-+\s*"%(\
|
|
|
|
|
re.compile("\s*%s\-+\s+%s.+Calculate.+\s+%s.+\s+%s\-+\s?"%(\
|
|
|
|
|
comment,
|
|
|
|
|
comment,
|
|
|
|
|
comment,
|
|
|
|
@ -293,6 +293,22 @@ class objShare:
|
|
|
|
|
"""Общий клас для объектов, наследуем
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
def removeSymbolTerm(self, text):
|
|
|
|
|
"""Удаляет первый символ названия переменной в строке
|
|
|
|
|
|
|
|
|
|
Если первый встречающийся символ с начала строки
|
|
|
|
|
'+', '-', '!' то он из этой строки будет удален,
|
|
|
|
|
если перед этим символом были пробельные символы,
|
|
|
|
|
то они будут сохранены, так-же если в строке есть символ
|
|
|
|
|
перевода строки он будет удален.
|
|
|
|
|
"""
|
|
|
|
|
reTerm = re.compile("^[ \t]*(\!|\+|\-)")
|
|
|
|
|
textNS = text.replace("\n","")
|
|
|
|
|
res = reTerm.search(textNS)
|
|
|
|
|
if res:
|
|
|
|
|
textNS = textNS[res.start():res.end()-1] + textNS[res.end():]
|
|
|
|
|
return textNS
|
|
|
|
|
|
|
|
|
|
def getConfig(self):
|
|
|
|
|
"""Выдает конфигурационный файл"""
|
|
|
|
|
listConfigTxt = []
|
|
|
|
@ -624,133 +640,8 @@ class xmlDoc:
|
|
|
|
|
newNode = nodeObj.createNode(self.doc, "action", actionTxt)
|
|
|
|
|
xmlCaptions[0].appendChild(newNode)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def joinField1(self, xmlArea, xmlNewField):
|
|
|
|
|
print "----------------------------------------------------"
|
|
|
|
|
#print self.getQuoteField(xmlNewField)
|
|
|
|
|
"""Объединяет XML ноду область и XML ноду поле"""
|
|
|
|
|
fieldNames = xpath.Evaluate('child::field/name',xmlArea)
|
|
|
|
|
newFieldNames = xpath.Evaluate('child::name',xmlNewField)
|
|
|
|
|
newFieldVals = xpath.Evaluate('child::value',xmlNewField)
|
|
|
|
|
newFieldsAction = self.getActionField(xmlNewField)
|
|
|
|
|
flagFindField = False
|
|
|
|
|
flagGlobalCompareFields = False
|
|
|
|
|
appSplLst = []
|
|
|
|
|
if not newFieldNames:
|
|
|
|
|
return False
|
|
|
|
|
newNameField = newFieldNames[0].firstChild.nodeValue
|
|
|
|
|
for fn in fieldNames:
|
|
|
|
|
# если найден параметр, изменяем его значение
|
|
|
|
|
# в том случае если значения разные
|
|
|
|
|
if newNameField == fn.firstChild.nodeValue:
|
|
|
|
|
flagFindField = True
|
|
|
|
|
# Удаление полей
|
|
|
|
|
if newFieldsAction:
|
|
|
|
|
if newFieldsAction == "drop":
|
|
|
|
|
if (fn.parentNode.nextSibling):
|
|
|
|
|
if self.getTypeField\
|
|
|
|
|
(fn.parentNode.nextSibling) == "br":
|
|
|
|
|
xmlArea.removeChild(fn.parentNode.nextSibling)
|
|
|
|
|
xmlArea.removeChild(fn.parentNode)
|
|
|
|
|
continue
|
|
|
|
|
fieldsVal = xpath.Evaluate('child::value',fn.parentNode)
|
|
|
|
|
z =0
|
|
|
|
|
flagNoCompareFields = False
|
|
|
|
|
for val in fieldsVal:
|
|
|
|
|
if not val.firstChild or not newFieldVals[z].firstChild:
|
|
|
|
|
flagNoCompareFields = True
|
|
|
|
|
break
|
|
|
|
|
if val.firstChild.nodeValue != \
|
|
|
|
|
newFieldVals[z].firstChild.nodeValue:
|
|
|
|
|
flagNoCompareFields = True
|
|
|
|
|
break
|
|
|
|
|
z += 1
|
|
|
|
|
if not flagNoCompareFields:
|
|
|
|
|
flagGlobalCompareFields = True
|
|
|
|
|
|
|
|
|
|
print "FLAG", flagGlobalCompareFields
|
|
|
|
|
|
|
|
|
|
if flagNoCompareFields or\
|
|
|
|
|
self.getTypeField(xmlNewField) == "seplist":
|
|
|
|
|
#Действия при добавлении распределенного списка
|
|
|
|
|
if self.getTypeField(xmlNewField) == "seplist":
|
|
|
|
|
xmlOldField = fn.parentNode
|
|
|
|
|
seplistNewXML = self.getSepListToField(xmlNewField)
|
|
|
|
|
seplistOldXML = self.getSepListToField(xmlOldField)
|
|
|
|
|
if not seplistOldXML:
|
|
|
|
|
seplistOldXML = [xmlOldField,]
|
|
|
|
|
xmlAreaOld = xmlOldField.parentNode
|
|
|
|
|
for nodeSeplistRemove in seplistOldXML[:-1]:
|
|
|
|
|
if self.getTypeField(nodeSeplistRemove) == "var":
|
|
|
|
|
xmlAreaOld.removeChild(nodeSeplistRemove)
|
|
|
|
|
if nodeSeplistRemove.nextSibling and\
|
|
|
|
|
self.getTypeField(\
|
|
|
|
|
nodeSeplistRemove.nextSibling) == "br":
|
|
|
|
|
xmlAreaOld.removeChild(\
|
|
|
|
|
nodeSeplistRemove.nextSibling)
|
|
|
|
|
for nodeSeplist in seplistNewXML:
|
|
|
|
|
if self.getActionField(nodeSeplist) != "drop":
|
|
|
|
|
if newFieldsAction == "join":
|
|
|
|
|
self.setActionField(nodeSeplist,"append")
|
|
|
|
|
nextNode = seplistOldXML[-1].nextSibling
|
|
|
|
|
newInsNode = nodeSeplist.cloneNode(True)
|
|
|
|
|
if nextNode:
|
|
|
|
|
appSplLst.append((newInsNode,
|
|
|
|
|
nextNode,
|
|
|
|
|
"insert"))
|
|
|
|
|
else:
|
|
|
|
|
appSplLst.append((newInsNode,
|
|
|
|
|
False,
|
|
|
|
|
"append"))
|
|
|
|
|
else:
|
|
|
|
|
xmlArea.insertBefore(\
|
|
|
|
|
nodeSeplist.cloneNode(True),
|
|
|
|
|
seplistOldXML[-1])
|
|
|
|
|
|
|
|
|
|
parentNode = nodeSeplist.parentNode
|
|
|
|
|
parentNode.removeChild(nodeSeplist)
|
|
|
|
|
if seplistNewXML:
|
|
|
|
|
parentNode = seplistOldXML[-1].parentNode
|
|
|
|
|
if parentNode and newFieldsAction != "join":
|
|
|
|
|
parentNode.removeChild(seplistOldXML[-1])
|
|
|
|
|
#print "--------------------------------------"
|
|
|
|
|
#print nodeSeplist.toprettyxml()
|
|
|
|
|
#xmlArea.removeChild(fn.parentNode)
|
|
|
|
|
else:
|
|
|
|
|
# Устанавливаем action=replace
|
|
|
|
|
self.setActionField(xmlNewField, "replace")
|
|
|
|
|
# Если параметры поля не сходятся заменяем поле
|
|
|
|
|
xmlArea.replaceChild(xmlNewField.cloneNode(True),
|
|
|
|
|
fn.parentNode)
|
|
|
|
|
print "FLAG-FLAG", flagGlobalCompareFields
|
|
|
|
|
if not flagGlobalCompareFields:
|
|
|
|
|
print xmlNewField.toprettyxml()
|
|
|
|
|
for newNode, nxtNode, app in appSplLst:
|
|
|
|
|
if app == "insert":
|
|
|
|
|
pass
|
|
|
|
|
xmlArea.insertBefore(newNode,nxtNode)
|
|
|
|
|
elif app == "append":
|
|
|
|
|
pass
|
|
|
|
|
xmlArea.appendChild(newNode)
|
|
|
|
|
|
|
|
|
|
#print newNode, nextNode, app
|
|
|
|
|
#
|
|
|
|
|
#if newFieldsAction == "join":
|
|
|
|
|
#self.setActionField(xmlNewField,"append")
|
|
|
|
|
#xmlArea.appendChild(xmlNewField)
|
|
|
|
|
#return True
|
|
|
|
|
|
|
|
|
|
# Если поле не найдено добавляем его
|
|
|
|
|
if not flagFindField:
|
|
|
|
|
if self.getActionField(xmlNewField) != "drop":
|
|
|
|
|
self.setActionField(xmlNewField, "append")
|
|
|
|
|
xmlArea.appendChild(xmlNewField)
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def joinField(self, xmlArea, xmlNewField):
|
|
|
|
|
"""Объединяет XML ноду область и XML ноду поле"""
|
|
|
|
|
print xmlNewField.toprettyxml()
|
|
|
|
|
newNameField = self.getNameField(xmlNewField)
|
|
|
|
|
if not newNameField or not newNameField.strip():
|
|
|
|
|
return False
|
|
|
|
@ -788,7 +679,10 @@ class xmlDoc:
|
|
|
|
|
appSplLst = []
|
|
|
|
|
insSplLst = []
|
|
|
|
|
if typeNewField == "seplist":
|
|
|
|
|
xmlOldField = fieldsOldComp[-1]
|
|
|
|
|
if fieldsOldComp:
|
|
|
|
|
xmlOldField = fieldsOldComp[-1]
|
|
|
|
|
else:
|
|
|
|
|
xmlOldField = False
|
|
|
|
|
seplistNewXML = self.getSepListToField(xmlNewField)
|
|
|
|
|
if seplistNewXML:
|
|
|
|
|
for nodeSeplist in seplistNewXML:
|
|
|
|
@ -819,8 +713,15 @@ class xmlDoc:
|
|
|
|
|
newInsNode = nodeSeplist.cloneNode(True)
|
|
|
|
|
if self.getActionField(newInsNode) == "join":
|
|
|
|
|
self.setActionField(newInsNode,"append")
|
|
|
|
|
insSplLst.append((newInsNode,
|
|
|
|
|
xmlOldField))
|
|
|
|
|
if xmlOldField:
|
|
|
|
|
insSplLst.append((newInsNode,
|
|
|
|
|
xmlOldField,
|
|
|
|
|
"insert"))
|
|
|
|
|
else:
|
|
|
|
|
insSplLst.append((newInsNode,
|
|
|
|
|
False,
|
|
|
|
|
"append"))
|
|
|
|
|
|
|
|
|
|
#xmlArea.insertBefore(\
|
|
|
|
|
#nodeSeplist.cloneNode(True),
|
|
|
|
|
#xmlOldField)
|
|
|
|
@ -829,7 +730,7 @@ class xmlDoc:
|
|
|
|
|
parentNode.removeChild(nodeSeplist)
|
|
|
|
|
|
|
|
|
|
insNodesRepl = []
|
|
|
|
|
for newNode, nxtNode in insSplLst:
|
|
|
|
|
for newNode, nxtNode, app in insSplLst:
|
|
|
|
|
flagCompareSeplist = False
|
|
|
|
|
newValues = self.getFieldValues(newNode)
|
|
|
|
|
for nodeRepl, nxtNode in insNodesRepl:
|
|
|
|
@ -839,14 +740,18 @@ class xmlDoc:
|
|
|
|
|
flagCompareSeplist = True
|
|
|
|
|
break
|
|
|
|
|
if not flagCompareSeplist:
|
|
|
|
|
insNodesRepl.append((newNode, nxtNode))
|
|
|
|
|
|
|
|
|
|
for newNode, nxtNode in insNodesRepl:
|
|
|
|
|
xmlArea.insertBefore(newNode,nxtNode)
|
|
|
|
|
|
|
|
|
|
parentNode = xmlOldField.parentNode
|
|
|
|
|
if parentNode and newFieldsAction != "join":
|
|
|
|
|
parentNode.removeChild(xmlOldField)
|
|
|
|
|
if xmlOldField:
|
|
|
|
|
insNodesRepl.append((newNode, nxtNode, app))
|
|
|
|
|
|
|
|
|
|
for newNode, nxtNode, app in insNodesRepl:
|
|
|
|
|
if app == "insert":
|
|
|
|
|
xmlArea.insertBefore(newNode,nxtNode)
|
|
|
|
|
elif app == "append":
|
|
|
|
|
xmlArea.appendChild(newNode)
|
|
|
|
|
if xmlOldField:
|
|
|
|
|
parentNode = xmlOldField.parentNode
|
|
|
|
|
if parentNode and newFieldsAction != "join":
|
|
|
|
|
parentNode.removeChild(xmlOldField)
|
|
|
|
|
|
|
|
|
|
for newNode, nxtNode, app in appSplLst:
|
|
|
|
|
if app == "insert":
|
|
|
|
@ -925,10 +830,52 @@ class xmlDoc:
|
|
|
|
|
xmlNewAreas = xpath.Evaluate('child::area',newBody)
|
|
|
|
|
for xmlNewArea in xmlNewAreas:
|
|
|
|
|
self.joinArea(baseBody,xmlNewArea)
|
|
|
|
|
removeNodesDict = {}
|
|
|
|
|
notRemoveNodesDict = {}
|
|
|
|
|
joinNewFields = xpath.Evaluate("child::field[child::action='join']"
|
|
|
|
|
,newBody)
|
|
|
|
|
self.addNewFielsOldArea(newFields, joinNewFields, baseBody)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getRemoveNodeSepList(self, removeNodesDict, baseNode, xmNewlField):
|
|
|
|
|
"""Находит элементы разделенного списка
|
|
|
|
|
|
|
|
|
|
Параметры:
|
|
|
|
|
removeNodesDict - Cловарь удаляемых полей разделенного списка
|
|
|
|
|
формируется программой
|
|
|
|
|
baseNode - Нода в которой идет поиск
|
|
|
|
|
xmNewlField - Нода field которая проверяется на принадлежность
|
|
|
|
|
к разделенному списку
|
|
|
|
|
"""
|
|
|
|
|
flagNewNodeSeplist = False
|
|
|
|
|
if self.getTypeField(xmNewlField) == "seplist":
|
|
|
|
|
flagNewNodeSeplist = True
|
|
|
|
|
nameNewField = self.getNameField(xmNewlField)
|
|
|
|
|
if nameNewField:
|
|
|
|
|
if removeNodesDict.has_key(nameNewField):
|
|
|
|
|
return removeNodesDict[nameNewField]
|
|
|
|
|
else:
|
|
|
|
|
oldFields = xpath.Evaluate('child::field', baseNode)
|
|
|
|
|
removeNodes = []
|
|
|
|
|
lenOldFields = len(oldFields)
|
|
|
|
|
for i in range(lenOldFields):
|
|
|
|
|
oldNode = oldFields[i]
|
|
|
|
|
flagSep = self.getTypeField(oldNode) == "seplist"
|
|
|
|
|
if flagNewNodeSeplist:
|
|
|
|
|
flagSep = True
|
|
|
|
|
if flagSep and\
|
|
|
|
|
nameNewField == self.getNameField(oldNode):
|
|
|
|
|
removeNodes.append(oldNode)
|
|
|
|
|
if i+1<lenOldFields:
|
|
|
|
|
nextNode = oldFields[i+1]
|
|
|
|
|
if self.getTypeField(nextNode) == "br":
|
|
|
|
|
removeNodes.append(nextNode)
|
|
|
|
|
removeNodesDict[nameNewField] = removeNodes
|
|
|
|
|
return removeNodes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def addNewFielsOldArea(self, newFields, joinNewFields, xmlOldArea):
|
|
|
|
|
"""Добавляет новые XML поля в область профиля"""
|
|
|
|
|
removeNodesDict = {}
|
|
|
|
|
notRemoveNodesDict = {}
|
|
|
|
|
for notRemNode in joinNewFields:
|
|
|
|
|
nameField = self.getNameField(notRemNode)
|
|
|
|
|
if not notRemoveNodesDict.has_key(nameField):
|
|
|
|
@ -939,7 +886,7 @@ class xmlDoc:
|
|
|
|
|
notSepListField = []
|
|
|
|
|
sepListField = []
|
|
|
|
|
for nField in newFields:
|
|
|
|
|
if self.getRemoveNodeSepList(removeNodesDict, baseBody,
|
|
|
|
|
if self.getRemoveNodeSepList(removeNodesDict, xmlOldArea,
|
|
|
|
|
nField):
|
|
|
|
|
sepListField.append(nField)
|
|
|
|
|
else:
|
|
|
|
@ -956,13 +903,14 @@ class xmlDoc:
|
|
|
|
|
removeNodes = removeNodes[:-2]
|
|
|
|
|
|
|
|
|
|
for removeNode in removeNodes:
|
|
|
|
|
baseBody.removeChild(removeNode)
|
|
|
|
|
xmlOldArea.removeChild(removeNode)
|
|
|
|
|
|
|
|
|
|
for node in sepListField:
|
|
|
|
|
node.setAttribute("type", "seplist")
|
|
|
|
|
if self.getActionField(node) != "join":
|
|
|
|
|
if not (self.getActionField(node) == "join" or\
|
|
|
|
|
self.getActionField(node) == "drop"):
|
|
|
|
|
self.setActionField(node,"insert")
|
|
|
|
|
self.joinField(baseBody, node)
|
|
|
|
|
self.joinField(xmlOldArea, node)
|
|
|
|
|
#else:
|
|
|
|
|
#self.setActionField(node, "append")
|
|
|
|
|
#baseBody.appendChild(node)
|
|
|
|
@ -971,46 +919,9 @@ class xmlDoc:
|
|
|
|
|
#if removeNodesDict.has_key(self.getNameField(node)):
|
|
|
|
|
#print removeNodesDict[self.getNameField(node)]
|
|
|
|
|
self.setActionField(node, "append")
|
|
|
|
|
baseBody.appendChild(node)
|
|
|
|
|
else:
|
|
|
|
|
self.joinField(baseBody, node)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getRemoveNodeSepList(self, removeNodesDict, baseNode, xmNewlField):
|
|
|
|
|
"""Находит элементы разделенного списка
|
|
|
|
|
|
|
|
|
|
Параметры:
|
|
|
|
|
removeNodesDict - Cловарь удаляемых полей разделенного списка
|
|
|
|
|
формируется программой
|
|
|
|
|
baseNode - Нода в которой идет поиск
|
|
|
|
|
xmNewlField - Нода field которая проверяется на принадлежность
|
|
|
|
|
к разделенному списку
|
|
|
|
|
"""
|
|
|
|
|
flagNewNodeSeplist = False
|
|
|
|
|
if self.getTypeField(xmNewlField) == "seplist":
|
|
|
|
|
flagNewNodeSeplist = True
|
|
|
|
|
nameNewField = self.getNameField(xmNewlField)
|
|
|
|
|
if nameNewField:
|
|
|
|
|
if removeNodesDict.has_key(nameNewField):
|
|
|
|
|
return removeNodesDict[nameNewField]
|
|
|
|
|
xmlOldArea.appendChild(node)
|
|
|
|
|
else:
|
|
|
|
|
oldFields = xpath.Evaluate('child::field', baseNode)
|
|
|
|
|
removeNodes = []
|
|
|
|
|
lenOldFields = len(oldFields)
|
|
|
|
|
for i in range(lenOldFields):
|
|
|
|
|
oldNode = oldFields[i]
|
|
|
|
|
flagSep = self.getTypeField(oldNode) == "seplist"
|
|
|
|
|
if flagNewNodeSeplist:
|
|
|
|
|
flagSep = True
|
|
|
|
|
if flagSep and\
|
|
|
|
|
nameNewField == self.getNameField(oldNode):
|
|
|
|
|
removeNodes.append(oldNode)
|
|
|
|
|
if i+1<lenOldFields:
|
|
|
|
|
nextNode = oldFields[i+1]
|
|
|
|
|
if self.getTypeField(nextNode) == "br":
|
|
|
|
|
removeNodes.append(nextNode)
|
|
|
|
|
removeNodesDict[nameNewField] = removeNodes
|
|
|
|
|
return removeNodes
|
|
|
|
|
self.joinField(xmlOldArea, node)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1079,26 +990,10 @@ class xmlDoc:
|
|
|
|
|
baseNodes.append(oName.parentNode.parentNode)
|
|
|
|
|
newFields = xpath.Evaluate('child::field',xmlNewArea)
|
|
|
|
|
|
|
|
|
|
removeNodesDict = {}
|
|
|
|
|
notSepListField = []
|
|
|
|
|
sepListField = []
|
|
|
|
|
for nField in newFields:
|
|
|
|
|
if self.getRemoveNodeSepList(removeNodesDict, oArea,
|
|
|
|
|
nField):
|
|
|
|
|
sepListField.append(nField)
|
|
|
|
|
else:
|
|
|
|
|
if self.getNameField(nField):
|
|
|
|
|
notSepListField.append(nField)
|
|
|
|
|
|
|
|
|
|
for removeNodes in removeNodesDict.values():
|
|
|
|
|
for removeNode in removeNodes:
|
|
|
|
|
oArea.removeChild(removeNode)
|
|
|
|
|
for node in sepListField:
|
|
|
|
|
if self.getActionField(node) != "drop":
|
|
|
|
|
self.setActionField(node, "append")
|
|
|
|
|
oArea.appendChild(node)
|
|
|
|
|
for node in notSepListField:
|
|
|
|
|
self.joinField(oArea, node)
|
|
|
|
|
joinNewFields = xpath.Evaluate(\
|
|
|
|
|
"child::field[child::action='join']"
|
|
|
|
|
,xmlNewArea)
|
|
|
|
|
self.addNewFielsOldArea(newFields, joinNewFields, oArea)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not flagFindArea:
|
|
|
|
@ -2144,13 +2039,14 @@ class profile(_file, _terms):
|
|
|
|
|
objHeadOld = calcHeader(self.oldProfile, objProfNew._comment)
|
|
|
|
|
if objHeadOld.body:
|
|
|
|
|
self.oldProfile = objHeadOld.body
|
|
|
|
|
else:
|
|
|
|
|
self.oldProfile = ""
|
|
|
|
|
exec ("objProfOld=%s(self.oldProfile)"%\
|
|
|
|
|
(objHeadNew.fileType))
|
|
|
|
|
|
|
|
|
|
#print "#%s#" %(objProfOld.docObj.body.toprettyxml())
|
|
|
|
|
#print "#%s#" %(objProfNew.docObj.body.toprettyxml())
|
|
|
|
|
objProfOld.join(objProfNew)
|
|
|
|
|
|
|
|
|
|
if objHeadNew.execStr:
|
|
|
|
|
self.oldProfile = objHeadNew.execStr + title +\
|
|
|
|
|
objProfOld.getConfig().encode("UTF-8")
|
|
|
|
@ -2298,10 +2194,6 @@ class samba(objShare):
|
|
|
|
|
rootNode = docObj.getNodeBody()
|
|
|
|
|
# Если пустой текст то создаем пустой документ
|
|
|
|
|
if not blocs:
|
|
|
|
|
# у пустой области обязателен заголовок
|
|
|
|
|
#docObj.createCaption("", ["",""])
|
|
|
|
|
#area = docObj.createArea()
|
|
|
|
|
#rootNode.appendChild(area)
|
|
|
|
|
return docObj
|
|
|
|
|
|
|
|
|
|
for h in blocs[0]:
|
|
|
|
@ -2348,12 +2240,16 @@ class samba(objShare):
|
|
|
|
|
fields = self._splitToFields(bodys[z])
|
|
|
|
|
for f in fields:
|
|
|
|
|
if f.name != False and f.value!=False and f.br!=False:
|
|
|
|
|
# Удаляемое в дальнейшем поле
|
|
|
|
|
if f.name[0] == "!":
|
|
|
|
|
# Обработка условий для samba
|
|
|
|
|
if f.name[0] == "!" or f.name[0] == "-" or\
|
|
|
|
|
f.name[0] == "+":
|
|
|
|
|
qns = self.removeSymbolTerm(f.br)
|
|
|
|
|
xmlField = docObj.createField("var",
|
|
|
|
|
[f.br.replace("\n","")],
|
|
|
|
|
[qns],
|
|
|
|
|
f.name[1:], [f.value])
|
|
|
|
|
docObj.setActionField(xmlField, "drop")
|
|
|
|
|
if f.name[0] == "!":
|
|
|
|
|
# Удаляемое в дальнейшем поле
|
|
|
|
|
docObj.setActionField(xmlField, "drop")
|
|
|
|
|
else:
|
|
|
|
|
docObj.createField("var",[f.br.replace("\n","")],
|
|
|
|
|
f.name, [f.value])
|
|
|
|
@ -2554,23 +2450,27 @@ class named(objShare):
|
|
|
|
|
docObj.setActionArea(areaXML, areaAction)
|
|
|
|
|
return areaXML
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def createFieldTerm(self, name, value, quote, docObj):
|
|
|
|
|
"""Создание поля переменная - значение
|
|
|
|
|
|
|
|
|
|
при создании поля проверяется первый символ названия переменной
|
|
|
|
|
и добавляется тег action
|
|
|
|
|
"!" - <action>drop</action>
|
|
|
|
|
"!" - <action>drop</action> удаляет
|
|
|
|
|
"+" - <action>join</action> добавляет
|
|
|
|
|
"-" - <action>replace</action> заменяет
|
|
|
|
|
"""
|
|
|
|
|
fieldAction = False
|
|
|
|
|
if name:
|
|
|
|
|
if name[0] == "!" or name[0] == "-" or name[0] == "+":
|
|
|
|
|
fieldXML = docObj.createField("var",
|
|
|
|
|
[quote.replace("\n","")[1:]],
|
|
|
|
|
qnt = self.removeSymbolTerm(quote)
|
|
|
|
|
fieldXML = docObj.createField("var",[qnt],
|
|
|
|
|
name[1:], [value],
|
|
|
|
|
False, False)
|
|
|
|
|
if name[0] == "!":
|
|
|
|
|
fieldAction = "drop"
|
|
|
|
|
elif name[0] == "+":
|
|
|
|
|
fieldXML.setAttribute("type", "seplist")
|
|
|
|
|
fieldAction = "join"
|
|
|
|
|
else:
|
|
|
|
|
fieldXML = docObj.createField("var",
|
|
|
|
@ -2694,10 +2594,6 @@ class named(objShare):
|
|
|
|
|
# Создание объекта документ c пустым разделителем между полями
|
|
|
|
|
docObj.createDoc(self.configName, self.configVersion)
|
|
|
|
|
if not areas:
|
|
|
|
|
# у пустой области обязателен заголовок
|
|
|
|
|
docObj.createCaption("", ["",""])
|
|
|
|
|
area = docObj.createArea()
|
|
|
|
|
docObj.getNodeBody().appendChild(area)
|
|
|
|
|
return docObj
|
|
|
|
|
self.createXML(areas, docObj.getNodeBody(), docObj)
|
|
|
|
|
return docObj
|
|
|
|
@ -2893,10 +2789,6 @@ class apache(named):
|
|
|
|
|
# Создание объекта документ c пустым разделителем между полями
|
|
|
|
|
docObj.createDoc(self.configName, self.configVersion)
|
|
|
|
|
if not areas:
|
|
|
|
|
# у пустой области обязателен заголовок
|
|
|
|
|
docObj.createCaption("", ["",""])
|
|
|
|
|
area = docObj.createArea()
|
|
|
|
|
docObj.getNodeBody().appendChild(area)
|
|
|
|
|
return docObj
|
|
|
|
|
self.createXML(areas, docObj.getNodeBody(), docObj)
|
|
|
|
|
return docObj
|
|
|
|
@ -2946,10 +2838,6 @@ class postfix(apache):
|
|
|
|
|
# Создание объекта документ c пустым разделителем между полями
|
|
|
|
|
docObj.createDoc(self.configName, self.configVersion)
|
|
|
|
|
if not areas:
|
|
|
|
|
# у пустой области обязателен заголовок
|
|
|
|
|
docObj.createCaption("", ["",""])
|
|
|
|
|
area = docObj.createArea()
|
|
|
|
|
docObj.getNodeBody().appendChild(area)
|
|
|
|
|
return docObj
|
|
|
|
|
self.createXML(areas, docObj.getNodeBody(), docObj)
|
|
|
|
|
return docObj
|
|
|
|
|