'Saves a list of AssetMetadata to the modulestore. The list can be composed of multiple
asset types. This method is optimized for multiple inserts at once - it only re-saves the structure
at the end of all saves/updates.'

def save_asset_metadata_list(self, asset_metadata_list, user_id, import_only=False):

    asset_key = asset_metadata_list[0].asset_id
    course_key = asset_key.course_key
    with self.bulk_operations(course_key):
        original_structure = self._lookup_course(course_key).structure
        index_entry = self._get_index_if_valid(course_key)
        new_structure = self.version_structure(course_key, original_structure, user_id)
        course_assets = new_structure.setdefault('assets', {})
        assets_by_type = self._save_assets_by_type(course_key, asset_metadata_list, course_assets, user_id, import_only)
        for (asset_type, assets) in assets_by_type.iteritems():
            new_structure['assets'][asset_type] = assets.as_list()
        self.update_structure(course_key, new_structure)
        if (index_entry is not None):
            self._update_head(course_key, index_entry, asset_key.branch, new_structure['_id'])
