add code to actually go through and delete the draft modules
This commit is contained in:
@@ -102,7 +102,27 @@ def clone_course(modulestore, contentstore, source_location, dest_location, dele
|
||||
return True
|
||||
|
||||
|
||||
def _delete_modules_except_course(modulestore, modules, source_location, commit):
|
||||
"""
|
||||
This helper method will just enumerate through a list of modules and delete them, except for the
|
||||
top-level course module
|
||||
"""
|
||||
for module in modules:
|
||||
if module.category != 'course':
|
||||
print "Deleting {0}...".format(module.location)
|
||||
if commit:
|
||||
# sanity check. Make sure we're not deleting a module in the incorrect course
|
||||
if module.location.org != source_location.org or module.location.course != source_location.course:
|
||||
raise Exception('Module {0} is not in same namespace as {1}. This should not happen! Aborting...'.format(module.location, source_location))
|
||||
modulestore.delete_item(module.location)
|
||||
|
||||
|
||||
def delete_course(modulestore, contentstore, source_location, commit=False):
|
||||
"""
|
||||
This method will actually do the work to delete all content in a course in a MongoDB backed
|
||||
courseware store. BE VERY CAREFUL, this is not reversable.
|
||||
"""
|
||||
|
||||
# first check to see if the modulestore is Mongo backed
|
||||
if not isinstance(modulestore, MongoModuleStore):
|
||||
raise Exception("Expected a MongoModuleStore in the runtime. Aborting....")
|
||||
@@ -131,12 +151,11 @@ def delete_course(modulestore, contentstore, source_location, commit=False):
|
||||
|
||||
# then delete all course modules
|
||||
modules = modulestore.get_items([source_location.tag, source_location.org, source_location.course, None, None, None])
|
||||
_delete_modules_except_course(modulestore, modules, source_location, commit)
|
||||
|
||||
for module in modules:
|
||||
if module.category != 'course': # save deleting the course module for last
|
||||
print "Deleting {0}...".format(module.location)
|
||||
if commit:
|
||||
modulestore.delete_item(module.location)
|
||||
# then delete all draft course modules
|
||||
modules = modulestore.get_items([source_location.tag, source_location.org, source_location.course, None, None, 'draft'])
|
||||
_delete_modules_except_course(modulestore, modules, source_location, commit)
|
||||
|
||||
# finally delete the top-level course module itself
|
||||
print "Deleting {0}...".format(source_location)
|
||||
@@ -144,4 +163,3 @@ def delete_course(modulestore, contentstore, source_location, commit=False):
|
||||
modulestore.delete_item(source_location)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user