|
|
|
@ -749,6 +749,8 @@ class xmlDoc:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def joinField(self, xmlArea, xmlNewField):
|
|
|
|
|
"""Объединяет XML ноду область и XML ноду поле"""
|
|
|
|
|
print xmlNewField.toprettyxml()
|
|
|
|
|
newNameField = self.getNameField(xmlNewField)
|
|
|
|
|
if not newNameField or not newNameField.strip():
|
|
|
|
|
return False
|
|
|
|
@ -766,6 +768,12 @@ class xmlDoc:
|
|
|
|
|
flagCompare = True
|
|
|
|
|
|
|
|
|
|
for nodeFieldOld in fieldsOldComp:
|
|
|
|
|
if newFieldsAction == "drop":
|
|
|
|
|
if (nodeFieldOld.nextSibling):
|
|
|
|
|
if self.getTypeField(nodeFieldOld.nextSibling) == "br":
|
|
|
|
|
xmlArea.removeChild(nodeFieldOld.nextSibling)
|
|
|
|
|
xmlArea.removeChild(nodeFieldOld)
|
|
|
|
|
continue
|
|
|
|
|
#if not self.getActionField(nodeFieldOld):
|
|
|
|
|
#self.setActionField(nodeFieldOld,"insert")
|
|
|
|
|
#else:
|
|
|
|
@ -775,7 +783,10 @@ class xmlDoc:
|
|
|
|
|
if not (newValue in oldValues):
|
|
|
|
|
flagCompare = False
|
|
|
|
|
break
|
|
|
|
|
if self.getActionField(xmlNewField) == "drop":
|
|
|
|
|
return True
|
|
|
|
|
appSplLst = []
|
|
|
|
|
insSplLst = []
|
|
|
|
|
if typeNewField == "seplist":
|
|
|
|
|
xmlOldField = fieldsOldComp[-1]
|
|
|
|
|
seplistNewXML = self.getSepListToField(xmlNewField)
|
|
|
|
@ -795,7 +806,7 @@ class xmlDoc:
|
|
|
|
|
nextNode = xmlOldField.nextSibling
|
|
|
|
|
newInsNode = nodeSeplist.cloneNode(True)
|
|
|
|
|
self.setActionField(newInsNode,"append")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if nextNode:
|
|
|
|
|
appSplLst.append((newInsNode,
|
|
|
|
|
nextNode,
|
|
|
|
@ -805,13 +816,34 @@ class xmlDoc:
|
|
|
|
|
False,
|
|
|
|
|
"append"))
|
|
|
|
|
else:
|
|
|
|
|
xmlArea.insertBefore(\
|
|
|
|
|
nodeSeplist.cloneNode(True),
|
|
|
|
|
xmlOldField)
|
|
|
|
|
newInsNode = nodeSeplist.cloneNode(True)
|
|
|
|
|
if self.getActionField(newInsNode) == "join":
|
|
|
|
|
self.setActionField(newInsNode,"append")
|
|
|
|
|
insSplLst.append((newInsNode,
|
|
|
|
|
xmlOldField))
|
|
|
|
|
#xmlArea.insertBefore(\
|
|
|
|
|
#nodeSeplist.cloneNode(True),
|
|
|
|
|
#xmlOldField)
|
|
|
|
|
|
|
|
|
|
parentNode = nodeSeplist.parentNode
|
|
|
|
|
parentNode.removeChild(nodeSeplist)
|
|
|
|
|
|
|
|
|
|
insNodesRepl = []
|
|
|
|
|
for newNode, nxtNode in insSplLst:
|
|
|
|
|
flagCompareSeplist = False
|
|
|
|
|
newValues = self.getFieldValues(newNode)
|
|
|
|
|
for nodeRepl, nxtNode in insNodesRepl:
|
|
|
|
|
oldValues = self.getFieldValues(nodeRepl)
|
|
|
|
|
for newValue in newValues:
|
|
|
|
|
if newValue in oldValues:
|
|
|
|
|
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)
|
|
|
|
@ -842,10 +874,10 @@ class xmlDoc:
|
|
|
|
|
if actionOldNode == "insert" or actionOldNode == "append":
|
|
|
|
|
pass
|
|
|
|
|
else:
|
|
|
|
|
xmlArea.removeChild(nodeFieldOld)
|
|
|
|
|
if nodeFieldOld.nextSibling and\
|
|
|
|
|
self.getTypeField(nodeFieldOld.nextSibling) == "br":
|
|
|
|
|
xmlArea.removeChild(nodeFieldOld.nextSibling)
|
|
|
|
|
xmlArea.removeChild(nodeFieldOld)
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -2712,6 +2744,16 @@ class apache(named):
|
|
|
|
|
if isinstance(apacheObj, apache):
|
|
|
|
|
#print self.docObj.doc.toprettyxml()
|
|
|
|
|
self.docObj.joinDoc(apacheObj.doc)
|
|
|
|
|
# Для добавления перевода строки перед закрывающим тегом
|
|
|
|
|
# конфигурационного файла
|
|
|
|
|
xmlAreas = xpath.Evaluate("child::area", self.docObj.body)
|
|
|
|
|
for xmlArea in xmlAreas:
|
|
|
|
|
xmlFields = xpath.Evaluate("child::field", xmlArea)
|
|
|
|
|
if not (xmlFields and\
|
|
|
|
|
self.docObj.getTypeField(xmlFields[-1]) == "br"):
|
|
|
|
|
xmlArea.appendChild(self.docObj.createField("br",
|
|
|
|
|
[],"",[],
|
|
|
|
|
False,False))
|
|
|
|
|
|
|
|
|
|
# Делим область на составные части
|
|
|
|
|
def findOpenClose(self, text, reOpen, reClose, reComment, reHeader):
|
|
|
|
|