Commit e5ee0a77 by Chris Dodge

hot fix for delete_item. The 'delete_all_versions' is useful in that it is set…

hot fix for delete_item. The 'delete_all_versions' is useful in that it is set to true when doing explicit deletes as opposed to 'delete draft'. If delete_all_versions=False, then don't remove the deleted item from the parent children collection
parent dfd66c65
...@@ -112,7 +112,7 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): ...@@ -112,7 +112,7 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase):
self.assertTrue(sequential.location.url() in chapter.definition['children']) self.assertTrue(sequential.location.url() in chapter.definition['children'])
self.client.post(reverse('delete_item'), self.client.post(reverse('delete_item'),
json.dumps({'id': sequential.location.url(), 'delete_children':'true'}), json.dumps({'id': sequential.location.url(), 'delete_children':'true', 'delete_all_versions':'true'}),
"application/json") "application/json")
found = False found = False
......
...@@ -643,15 +643,15 @@ def delete_item(request): ...@@ -643,15 +643,15 @@ def delete_item(request):
modulestore('direct').delete_item(item.location) modulestore('direct').delete_item(item.location)
# cdodge: we need to remove our parent's pointer to us so that it is no longer dangling # cdodge: we need to remove our parent's pointer to us so that it is no longer dangling
if delete_all_versions:
parent_locs = modulestore('direct').get_parent_locations(item_loc, None) parent_locs = modulestore('direct').get_parent_locations(item_loc, None)
for parent_loc in parent_locs: for parent_loc in parent_locs:
parent = modulestore('direct').get_item(parent_loc) parent = modulestore('direct').get_item(parent_loc)
item_url = item_loc.url() item_url = item_loc.url()
if item_url in parent.definition["children"]: if item_url in parent.definition["children"]:
parent.definition["children"].remove(item_url) parent.definition["children"].remove(item_url)
modulestore('direct').update_children(parent.location, parent.definition["children"]) modulestore('direct').update_children(parent.location, parent.definition["children"])
return HttpResponse() return HttpResponse()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment