Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db.models.deletion import Collector, ProtectedError
- def delete_child_instances(instance):
- try:
- collector = Collector(using='default')
- collector.collect(objs=[instance], collect_related=True)
- except ProtectedError as error:
- protected_objects = error.protected_objects
- for obj in protected_objects:
- delete_child_instances(obj)
- obj.deleted = True
- obj.save()
- def test_cascading_deletes(self):
- contact_type = mommy.make(ContactType)
- contact_1 = mommy.make(Contact, contact_type=contact_type)
- contact_2 = mommy.make(Contact, contact_type=contact_type)
- url = reverse("api:common:contact_types_list")
- url = url + "{}/".format(contact_type)
- response = self.client.delete(url)
- # wait for 15 seconds for the cache
- time.sleep(20)
- self.assertEquals(204, response.status_code)
- self.assertTrue(contact_type.deleted)
- self.assertTrue(contact_1.deleted)
- self.assertTrue(contact_2.deleted)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement