|
|
|
@ -754,7 +754,6 @@ class xmlDoc:
|
|
|
|
|
return False
|
|
|
|
|
fieldsOldComp = xpath.Evaluate("child::field[child::name='%s']"\
|
|
|
|
|
%(newNameField), xmlArea)
|
|
|
|
|
|
|
|
|
|
# Если поле не найдено добавляем его
|
|
|
|
|
typeNewField = self.getTypeField(xmlNewField)
|
|
|
|
|
if not fieldsOldComp and typeNewField != "seplist":
|
|
|
|
@ -762,18 +761,20 @@ class xmlDoc:
|
|
|
|
|
self.setActionField(xmlNewField, "append")
|
|
|
|
|
xmlArea.appendChild(xmlNewField)
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
newFieldsAction = self.getActionField(xmlNewField)
|
|
|
|
|
newValues = self.getFieldValues(xmlNewField)
|
|
|
|
|
print newValues
|
|
|
|
|
flagCompare = True
|
|
|
|
|
|
|
|
|
|
for nodeFieldOld in fieldsOldComp:
|
|
|
|
|
#if not self.getActionField(nodeFieldOld):
|
|
|
|
|
#self.setActionField(nodeFieldOld,"insert")
|
|
|
|
|
#else:
|
|
|
|
|
#self.setActionField(nodeFieldOld,"append")
|
|
|
|
|
oldValues = self.getFieldValues(nodeFieldOld)
|
|
|
|
|
for newValue in newValues:
|
|
|
|
|
if not (newValue in oldValues):
|
|
|
|
|
flagCompare = False
|
|
|
|
|
break
|
|
|
|
|
|
|
|
|
|
appSplLst = []
|
|
|
|
|
if typeNewField == "seplist":
|
|
|
|
|
xmlOldField = fieldsOldComp[-1]
|
|
|
|
@ -782,17 +783,27 @@ class xmlDoc:
|
|
|
|
|
for nodeSeplist in seplistNewXML:
|
|
|
|
|
if self.getActionField(nodeSeplist) != "drop":
|
|
|
|
|
if newFieldsAction == "join":
|
|
|
|
|
self.setActionField(nodeSeplist,"append")
|
|
|
|
|
nextNode = xmlOldField.nextSibling
|
|
|
|
|
newInsNode = nodeSeplist.cloneNode(True)
|
|
|
|
|
if nextNode:
|
|
|
|
|
appSplLst.append((newInsNode,
|
|
|
|
|
nextNode,
|
|
|
|
|
"insert"))
|
|
|
|
|
else:
|
|
|
|
|
appSplLst.append((newInsNode,
|
|
|
|
|
False,
|
|
|
|
|
"append"))
|
|
|
|
|
flagCompareSeplist = False
|
|
|
|
|
newValues = self.getFieldValues(nodeSeplist)
|
|
|
|
|
for nodeFieldOld in fieldsOldComp:
|
|
|
|
|
oldValues = self.getFieldValues(nodeFieldOld)
|
|
|
|
|
for newValue in newValues:
|
|
|
|
|
if newValue in oldValues:
|
|
|
|
|
flagCompareSeplist = True
|
|
|
|
|
break
|
|
|
|
|
if not flagCompareSeplist:
|
|
|
|
|
nextNode = xmlOldField.nextSibling
|
|
|
|
|
newInsNode = nodeSeplist.cloneNode(True)
|
|
|
|
|
self.setActionField(newInsNode,"append")
|
|
|
|
|
|
|
|
|
|
if nextNode:
|
|
|
|
|
appSplLst.append((newInsNode,
|
|
|
|
|
nextNode,
|
|
|
|
|
"insert"))
|
|
|
|
|
else:
|
|
|
|
|
appSplLst.append((newInsNode,
|
|
|
|
|
False,
|
|
|
|
|
"append"))
|
|
|
|
|
else:
|
|
|
|
|
xmlArea.insertBefore(\
|
|
|
|
|
nodeSeplist.cloneNode(True),
|
|
|
|
@ -805,9 +816,7 @@ class xmlDoc:
|
|
|
|
|
if parentNode and newFieldsAction != "join":
|
|
|
|
|
parentNode.removeChild(xmlOldField)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for newNode, nxtNode, app in appSplLst:
|
|
|
|
|
print newNode, nxtNode, app
|
|
|
|
|
if app == "insert":
|
|
|
|
|
xmlArea.insertBefore(newNode,nxtNode)
|
|
|
|
|
elif app == "append":
|
|
|
|
@ -820,16 +829,19 @@ class xmlDoc:
|
|
|
|
|
xmlArea.replaceChild(xmlNewField.cloneNode(True),
|
|
|
|
|
fieldsOldComp[-1])
|
|
|
|
|
|
|
|
|
|
print "-------------------------------------------------------"
|
|
|
|
|
#print "-------------------------------------------------------"
|
|
|
|
|
#print "ACTION", newFieldsAction
|
|
|
|
|
#print xmlNewField.toprettyxml()
|
|
|
|
|
if newFieldsAction == "join":
|
|
|
|
|
fieldsOldRemove = []
|
|
|
|
|
else:
|
|
|
|
|
fieldsOldRemove = fieldsOldComp[:-1]
|
|
|
|
|
|
|
|
|
|
for nodeFieldOld in fieldsOldRemove:
|
|
|
|
|
print nodeFieldOld.toprettyxml()
|
|
|
|
|
|
|
|
|
|
if self.getActionField(nodeFieldOld) != 'append':
|
|
|
|
|
actionOldNode = self.getActionField(nodeFieldOld)
|
|
|
|
|
if actionOldNode == "insert" or actionOldNode == "append":
|
|
|
|
|
pass
|
|
|
|
|
else:
|
|
|
|
|
xmlArea.removeChild(nodeFieldOld)
|
|
|
|
|
if nodeFieldOld.nextSibling and\
|
|
|
|
|
self.getTypeField(nodeFieldOld.nextSibling) == "br":
|
|
|
|
@ -867,16 +879,12 @@ class xmlDoc:
|
|
|
|
|
parentNode = fieldNode.parentNode
|
|
|
|
|
parentNode.removeChild(fieldNode)
|
|
|
|
|
else:
|
|
|
|
|
print self.getActionField(fieldNode)
|
|
|
|
|
if self.getActionField(fieldNode) == "drop":
|
|
|
|
|
pass
|
|
|
|
|
elif self.getActionField(fieldNode) == "join":
|
|
|
|
|
pass
|
|
|
|
|
else:
|
|
|
|
|
self.setActionField(fieldNode,"append")
|
|
|
|
|
print "#"
|
|
|
|
|
print self.getActionField(fieldNode)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def joinBody(self, baseBody, newBody):
|
|
|
|
|