diff --git a/cms/djangoapps/contentstore/views/item.py b/cms/djangoapps/contentstore/views/item.py index 8e80d7231d..93fefb3c3e 100644 --- a/cms/djangoapps/contentstore/views/item.py +++ b/cms/djangoapps/contentstore/views/item.py @@ -644,6 +644,9 @@ def _get_module_info(xblock, rewrite_static_links=True): course_id=xblock.location.course_key ) + # Pre-cache has changes for the entire course because we'll need it for the ancestor info + modulestore().has_changes(modulestore().get_course(xblock.location.course_key, depth=None)) + # Note that children aren't being returned until we have a use case. return create_xblock_info(xblock, data=data, metadata=own_metadata(xblock), include_ancestor_info=True) diff --git a/cms/djangoapps/contentstore/views/tests/test_item.py b/cms/djangoapps/contentstore/views/tests/test_item.py index 5d4c73d724..7c6e4b1685 100644 --- a/cms/djangoapps/contentstore/views/tests/test_item.py +++ b/cms/djangoapps/contentstore/views/tests/test_item.py @@ -100,9 +100,9 @@ class GetItemTest(ItemTest): return html, resources @ddt.data( - (1, 14, 16, 30, 30), - (2, 15, 17, 39, 32), - (3, 16, 18, 52, 34), + (1, 21, 23, 35, 37), + (2, 22, 24, 38, 39), + (3, 23, 25, 41, 41), ) @ddt.unpack def test_get_query_count(self, branching_factor, chapter_queries, section_queries, unit_queries, problem_queries): diff --git a/common/lib/xmodule/xmodule/modulestore/mongo/draft.py b/common/lib/xmodule/xmodule/modulestore/mongo/draft.py index 6b0ae7cebf..f72e36625e 100644 --- a/common/lib/xmodule/xmodule/modulestore/mongo/draft.py +++ b/common/lib/xmodule/xmodule/modulestore/mongo/draft.py @@ -597,6 +597,7 @@ class DraftModuleStore(MongoModuleStore): bulk_record.dirty = True self.collection.remove({'_id': {'$in': to_be_deleted}}, safe=self.collection.safe) + @MongoModuleStore.memoize_request_cache def has_changes(self, xblock): """ Check if the subtree rooted at xblock has any drafts and thus may possibly have changes