Exemplo n.º 1
0
 def addUpdate(self, newModelObject):
     conflict = False
     diff = ModelObjectDiff(self, newModelObject)
     for k, v in diff.getPropertiesDiff().items():
         attribute = self.__getAttribute(k)
         prop_update = self.propertyTieBreaker(attribute, *v)
         if isinstance(prop_update, tuple):
             conflict = True
         else:
             setattr(self, attribute, prop_update)
     if conflict:
         self.updates.append(ConflictUpdate(self, newModelObject))
     return conflict
Exemplo n.º 2
0
 def addUpdate(self, newModelObject):
     conflict = False
     diff = ModelObjectDiff(self, newModelObject)
     for k, v in diff.getPropertiesDiff().items():
         attribute = self.__getAttribute(k)
         prop_update = self.propertyTieBreaker(attribute, *v)
         if isinstance(prop_update, tuple):
             conflict = True
         else:
             setattr(self, attribute, prop_update)
     if conflict:
         self.updates.append(ConflictUpdate(self, newModelObject))
     return conflict
Exemplo n.º 3
0
    def addUpdate(self, newModelObject):
        conflict = False
        diff = ModelObjectDiff(self, newModelObject)
        for k, v in diff.getPropertiesDiff().items():
            attribute = self.__getAttribute(k)
            prop_update = self.propertyTieBreaker(attribute, *v)

            if (not isinstance(prop_update, tuple) or CONF.getMergeStrategy()):
                # if there's a strategy set by the user, apply it
                if isinstance(prop_update, tuple):
                    prop_update = MergeSolver(CONF.getMergeStrategy()).solve(
                        prop_update[0], prop_update[1])

                setattr(self, attribute, prop_update)
            else:
                conflict = True
        if conflict:
            self.updates.append(ConflictUpdate(self, newModelObject))
        return conflict
Exemplo n.º 4
0
    def addUpdate(self, newModelObject):
        conflict = False
        diff = ModelObjectDiff(self, newModelObject)
        for k, v in diff.getPropertiesDiff().items():
            attribute = self.publicattrsrefs().get(k)
            prop_update = self.propertyTieBreaker(attribute, *v)

            if not isinstance(prop_update, tuple) or CONF.getMergeStrategy():
                # if there's a strategy set by the user, apply it
                if isinstance(prop_update, tuple):
                    prop_update = MergeSolver(CONF.getMergeStrategy())
                    prop_update = prop_update.solve(prop_update[0], prop_update[1])

                setattr(self, attribute, prop_update)
            else:
                conflict = True
        if conflict:
            self.updates.append(ConflictUpdate(self, newModelObject))
        return conflict