def _resolve_diff(self, inst, prev, curr):
     added, deleted = diff_unsorted(prev, curr) #@UnusedVariable
     for obj in added:
         if not self._find_existing_primary(inst, obj):
             new_primary = self.PrimaryTable()
             setattr(new_primary, self.owner_fk, inst)
             setattr(new_primary, self.foreign_fk, obj)
             inst.add(new_primary)
     if inst.session is not None:
         for obj in deleted:
             to_delete = self._find_existing_primary(inst, obj)
             if to_delete:
                 to_delete.delete()
Example #2
0
 def test_diff_unsorted(self):
     """Test the diff_unsorted() method"""
     added, deleted = util.diff_unsorted(['a', 'b', 'c'], ['a', 'b', 'd'])
     self.assertEqual(added, ['d'])
     self.assertEqual(deleted, ['c'])
 def _resolve_diff(self, inst, prev, curr):
     added, deleted = diff_unsorted(prev, curr) #@UnusedVariable
     for obj in added:
         setattr(obj, self.backref, inst)
     for obj in deleted:
         setattr(obj, self.backref, None)
 def _resolve_diff(self, inst, prev, curr):
     added, deleted = diff_unsorted(prev, curr) #@UnusedVariable
     for obj in deleted:
         self.foreign_field._set(obj, None, None)
     for i, obj in enumerate(curr, start=1):
         self.foreign_field._set(obj, inst, i)