'Internal; finds (or creates) course asset info about all assets for a particular course
Arguments:
course_key (CourseKey): course identifier
Returns:
CourseAssetsFromStorage object, wrapping the relevant Mongo doc. If asset metadata
exists, other keys will be the other asset types with values as lists of asset metadata.'

def _find_course_assets(self, course_key):

    course_key = self.fill_in_run(course_key)
    if (course_key.run is None):
        log.warning(u'No    run    found    for    combo    org    "{}"    course    "{}"    on    asset    request.'.format(course_key.org, course_key.course))
        course_assets = None
    else:
        course_assets = self.asset_collection.find_one({'course_id': unicode(course_key)})
    doc_id = (None if (course_assets is None) else course_assets['_id'])
    if (course_assets is None):
        if (self.get_course(course_key) is None):
            raise ItemNotFoundError(course_key)
        else:
            course_assets = {'course_id': unicode(course_key), 'assets': {}}
            doc_id = self.asset_collection.insert(course_assets)
    elif isinstance(course_assets['assets'], list):
        assert (len(course_assets['assets']) == 0)
        self.asset_collection.update({'_id': doc_id}, {'$set': {'assets': {}}})
    return CourseAssetsFromStorage(course_key, doc_id, course_assets['assets'])
