diff --git a/pym/cl_profile.py b/pym/cl_profile.py index 7ea9901..8ea39ac 100644 --- a/pym/cl_profile.py +++ b/pym/cl_profile.py @@ -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):