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

develop
asamoukin 16 years ago
parent 649534cd6e
commit bed09010f3

@ -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):

Loading…
Cancel
Save