Commit 098bba16 by John Eskew

Implement copy_all_asset_metadata for Old Mongo->Old Mongo.

Add tests for copying all asset metadata.
https://openedx.atlassian.net/browse/PLAT-74
parent 062e0b21
...@@ -106,7 +106,7 @@ class AssetMetadata(object): ...@@ -106,7 +106,7 @@ class AssetMetadata(object):
'edited_on': self.edited_on 'edited_on': self.edited_on
} }
@contract(asset_doc='dict | None') @contract(asset_doc='dict|None')
def from_mongo(self, asset_doc): def from_mongo(self, asset_doc):
""" """
Fill in all metadata fields from a MongoDB document. Fill in all metadata fields from a MongoDB document.
...@@ -134,7 +134,7 @@ class AssetThumbnailMetadata(object): ...@@ -134,7 +134,7 @@ class AssetThumbnailMetadata(object):
# All AssetThumbnailMetadata objects should have AssetLocators with this type. # All AssetThumbnailMetadata objects should have AssetLocators with this type.
ASSET_TYPE = 'thumbnail' ASSET_TYPE = 'thumbnail'
@contract(asset_id='AssetKey', internal_name='str | unicode | None') @contract(asset_id='AssetKey', internal_name='basestring|None')
def __init__(self, asset_id, internal_name=None, field_decorator=None): def __init__(self, asset_id, internal_name=None, field_decorator=None):
""" """
Construct a AssetThumbnailMetadata object. Construct a AssetThumbnailMetadata object.
...@@ -160,7 +160,7 @@ class AssetThumbnailMetadata(object): ...@@ -160,7 +160,7 @@ class AssetThumbnailMetadata(object):
'internal_name': self.internal_name 'internal_name': self.internal_name
} }
@contract(thumbnail_doc='dict | None') @contract(thumbnail_doc='dict|None')
def from_mongo(self, thumbnail_doc): def from_mongo(self, thumbnail_doc):
""" """
Fill in all metadata fields from a MongoDB document. Fill in all metadata fields from a MongoDB document.
......
...@@ -392,7 +392,7 @@ class ModuleStoreAssetInterface(object): ...@@ -392,7 +392,7 @@ class ModuleStoreAssetInterface(object):
sort_field = 'filename' sort_field = 'filename'
sort_order = 'ascending' sort_order = 'ascending'
if sort: if sort:
if sort[0] == 'uploadDate': if sort[0] == 'uploadDate' and not get_thumbnails:
sort_field = 'edited_on' sort_field = 'edited_on'
if sort[1] == 'descending': if sort[1] == 'descending':
sort_order = 'descending' sort_order = 'descending'
......
...@@ -1518,6 +1518,28 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo ...@@ -1518,6 +1518,28 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo
self.asset_collection.update({'_id': course_assets['_id']}, {'$set': {info: all_assets.as_list()}}) self.asset_collection.update({'_id': course_assets['_id']}, {'$set': {info: all_assets.as_list()}})
return True return True
@contract(source_course_key='CourseKey', dest_course_key='CourseKey')
def copy_all_asset_metadata(self, source_course_key, dest_course_key, user_id):
"""
Copy all the course assets from source_course_key to dest_course_key.
Arguments:
source_course_key (CourseKey): identifier of course to copy from
dest_course_key (CourseKey): identifier of course to copy to
"""
source_assets = self._find_course_assets(source_course_key)
dest_assets = self._find_course_assets(dest_course_key)
dest_assets['assets'] = source_assets.get('assets', [])
dest_assets['thumbnails'] = source_assets.get('thumbnails', [])
# Update the document.
self.asset_collection.update(
{'_id': dest_assets['_id']},
{'$set': {'assets': dest_assets['assets'],
'thumbnails': dest_assets['thumbnails']}
}
)
@contract(asset_key='AssetKey', attr_dict=dict) @contract(asset_key='AssetKey', attr_dict=dict)
def set_asset_metadata_attrs(self, asset_key, attr_dict, user_id): def set_asset_metadata_attrs(self, asset_key, attr_dict, user_id):
""" """
......
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