'Returns:
list of XModuleDescriptor instances for the matching items within the course with
the given course_key
NOTE: don\'t use this to look for courses
as the course_key is required. Use get_courses.
Args:
course_key (CourseKey): the course identifier
kwargs:
settings (dict): fields to look for which have settings scope. Follows same syntax
and rules as kwargs below
content (dict): fields to look for which have content scope. Follows same syntax and
rules as kwargs below.
qualifiers (dict): what to look for within the course.
Common qualifiers are ``category`` or any field name. if the target field is a list,
then it searches for the given value in the list not list equivalence.
Substring matching pass a regex object.
For some modulestores, ``name`` is another commonly provided key (Location based stores)
For some modulestores,
you can search by ``edited_by``, ``edited_on`` providing either a datetime for == (probably
useless) or a function accepting one arg to do inequality'

@strip_key
def get_items(self, course_key, **kwargs):

    if (not isinstance(course_key, CourseKey)):
        raise Exception('Must    pass    in    a    course_key    when    calling    get_items()')
    store = self._get_modulestore_for_courselike(course_key)
    return store.get_items(course_key, **kwargs)
