diff --git a/cms/djangoapps/contentstore/views/item.py b/cms/djangoapps/contentstore/views/item.py index 8d80d9e0bb..dfb5fd5704 100644 --- a/cms/djangoapps/contentstore/views/item.py +++ b/cms/djangoapps/contentstore/views/item.py @@ -112,7 +112,8 @@ def xblock_handler(request, tag=None, package_id=None, branch=None, version_guid accept_header = request.META.get('HTTP_ACCEPT', 'application/json') if 'application/x-fragment+json' in accept_header: - component = modulestore().get_item(old_location) + store = get_modulestore(old_location) + component = store.get_item(old_location) # Wrap the generated fragment in the xmodule_editor div so that the javascript # can bind to it correctly @@ -127,7 +128,7 @@ def xblock_handler(request, tag=None, package_id=None, branch=None, version_guid log.debug("Unable to render studio_view for %r", component, exc_info=True) editor_fragment = Fragment(render_to_string('html_error.html', {'message': str(exc)})) - modulestore().save_xmodule(component) + store.save_xmodule(component) preview_fragment = get_preview_fragment(request, component) diff --git a/common/lib/xmodule/xmodule/modulestore/mongo/draft.py b/common/lib/xmodule/xmodule/modulestore/mongo/draft.py index f7a0250155..7ebc7a5a05 100644 --- a/common/lib/xmodule/xmodule/modulestore/mongo/draft.py +++ b/common/lib/xmodule/xmodule/modulestore/mongo/draft.py @@ -108,6 +108,20 @@ class DraftModuleStore(MongoModuleStore): raise InvalidVersionError(location) return super(DraftModuleStore, self).create_xmodule(draft_loc, definition_data, metadata, system) + def save_xmodule(self, xmodule): + """ + Save the given xmodule (will either create or update based on whether id already exists). + Pulls out the data definition v metadata v children locally but saves it all. + + :param xmodule: + """ + orig_location = xmodule.location + + xmodule.location = as_draft(orig_location) + try: + super(DraftModuleStore, self).save_xmodule(xmodule) + finally: + xmodule.location = orig_location def get_items(self, location, course_id=None, depth=0): """