Commit 7b89b1eb by Calen Pennington

Add ability to update modulestore metadata for a module separately from data or children

parent 51a79017
......@@ -26,3 +26,4 @@ class Command(BaseCommand):
keystore().update_item(module.location, module.definition['data'])
if 'children' in module.definition:
keystore().update_children(module.location, module.definition['children'])
keystore().update_metadata(module.url, module.metadata)
......@@ -171,9 +171,19 @@ class ModuleStore(object):
def update_children(self, location, children):
"""
Set the children for the item specified by the location to
data
children
location: Something that can be passed to Location
children: A list of child item identifiers
"""
raise NotImplementedError
def update_metadata(self, location, metadata):
"""
Set the metadata for the item specified by the location to
metadata
location: Something that can be passed to Location
metadata: A nested dictionary of module metadata
"""
raise NotImplementedError
......@@ -85,7 +85,7 @@ class MongoModuleStore(ModuleStore):
def update_children(self, location, children):
"""
Set the children for the item specified by the location to
data
children
location: Something that can be passed to Location
children: A list of child item identifiers
......@@ -97,3 +97,19 @@ class MongoModuleStore(ModuleStore):
{'location': Location(location).dict()},
{'$set': {'definition.children': children}}
)
def update_metadata(self, location, metadata):
"""
Set the children for the item specified by the location to
metadata
location: Something that can be passed to Location
metadata: A nested dictionary of module metadata
"""
# See http://www.mongodb.org/display/DOCS/Updating for
# atomic update syntax
self.collection.update(
{'location': Location(location).dict()},
{'$set': {'metadata': metadata}}
)
......@@ -94,3 +94,13 @@ class XMLModuleStore(ModuleStore):
children: A list of child item identifiers
"""
raise NotImplementedError("XMLModuleStores are read-only")
def update_metadata(self, location, metadata):
"""
Set the metadata for the item specified by the location to
metadata
location: Something that can be passed to Location
metadata: A nested dictionary of module metadata
"""
raise NotImplementedError("XMLModuleStores are read-only")
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