Fixes bug with appending post save - due to lists not being reset
This commit is contained in:
		| @@ -161,7 +161,18 @@ class Document(BaseDocument): | ||||
|             raise OperationError(message % unicode(err)) | ||||
|         id_field = self._meta['id_field'] | ||||
|         self[id_field] = self._fields[id_field].to_python(object_id) | ||||
|         self._changed_fields = [] | ||||
|  | ||||
|         def reset_changed_fields(doc): | ||||
|             """Loop through and reset changed fields lists""" | ||||
|             if hasattr(doc, '_changed_fields'): | ||||
|                 doc._changed_fields = [] | ||||
|  | ||||
|             for field_name in doc._fields: | ||||
|                 field = getattr(doc, field_name) | ||||
|                 if hasattr(field, '_changed_fields') and field != doc: | ||||
|                     reset_changed_fields(field) | ||||
|  | ||||
|         reset_changed_fields(self) | ||||
|         signals.post_save.send(self.__class__, document=self, created=created) | ||||
|  | ||||
|     def delete(self, safe=False): | ||||
|   | ||||
| @@ -879,7 +879,7 @@ class FieldTest(unittest.TestCase): | ||||
|             name = StringField() | ||||
|             children = ListField(EmbeddedDocumentField('self')) | ||||
|  | ||||
|         Tree.drop_collection | ||||
|         Tree.drop_collection() | ||||
|         tree = Tree(name="Tree") | ||||
|  | ||||
|         first_child = TreeNode(name="Child 1") | ||||
| @@ -887,9 +887,15 @@ class FieldTest(unittest.TestCase): | ||||
|  | ||||
|         second_child = TreeNode(name="Child 2") | ||||
|         first_child.children.append(second_child) | ||||
|         tree.save() | ||||
|  | ||||
|         tree = Tree.objects.first() | ||||
|         self.assertEqual(len(tree.children), 1) | ||||
|  | ||||
|         self.assertEqual(len(tree.children[0].children), 1) | ||||
|  | ||||
|         third_child = TreeNode(name="Child 3") | ||||
|         first_child.children.append(third_child) | ||||
|         tree.children[0].children.append(third_child) | ||||
|         tree.save() | ||||
|  | ||||
|         self.assertEqual(len(tree.children), 1) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user