Exemplo n.º 1
0
def extract_modules(c: canvasapi.canvas.Course) -> [canvasapi.canvas.File]:
    # Some courses put files on the home page, but the Course.show_front_page endpoint seems to be broken
    yield from file_extractor(c, extract_file_ids(getattr(c, 'syllabus_body', "")))

    for mod in c.get_modules():
        for mod_item in mod.get_module_items():
            mod_type = getattr(mod_item, "type", None)
            if mod_type == 'File':
                yield c.get_file(mod_item.content_id)

            elif mod_type == 'Page':
                page_html = c.get_page(mod_item.page_url).body
                yield from file_extractor(c, extract_file_ids(page_html))

            elif mod_type in ['ExternalUrl', 'ExternalTool']:
                # Not sure what to do with these. Ignoring for now
                pass

            elif mod_type in ['Assignment']:
                # These can be picked up by the AssignmentBuilder, so ignoring here
                pass

            elif mod_type in ['SubHeader']:
                # Useless
                pass

            else:
                logger.warning(f"Unknown module type: {mod_type}")
                logger.warning(mod_item)
Exemplo n.º 2
0
def organize_by_module(
        course: canvasapi.canvas.Course) -> (canvasapi.canvas.File, str):
    for m_idx, module in enumerate(course.get_modules()):
        print(f"    Module {Fore.CYAN}{module.name}{Style.RESET_ALL}")
        for item in module.get_module_items():
            if item.type == "File":
                yield (course.get_file(item.content_id), '%d ' % m_idx +
                       re.sub(file_regex, "_",
                              module.name.replace("(", "(").replace(")", ")")))
Exemplo n.º 3
0
def organize_by_module(
        course: canvasapi.canvas.Course) -> (canvasapi.canvas.File, str):
    for module in course.get_modules():
        print(module.name)
        for item in module.get_module_items():
            if item.type == "File":
                yield (course.get_file(item.content_id),
                       re.sub(file_regex, "_",
                              module.name.replace("(", "(").replace(")", ")")))
Exemplo n.º 4
0
def organize_by_module(
        course: canvasapi.canvas.Course) -> (canvasapi.canvas.File, str):
    for m_idx, module in enumerate(course.get_modules()):
        print(f"    Module {Fore.CYAN}{module.name}{Style.RESET_ALL}")
        for item in module.get_module_items():
            if item.type == "File":
                module_name = MODULE_FOLDER_TEMPLATE
                module_name = module_name.replace(
                    "{NAME}",
                    re.sub(file_regex, "_",
                           module.name.replace("(", "(").replace(")", ")")))
                if CONSOLIDATE_MODULE_SPACE:
                    module_name = " ".join(module_name.split())
                module_name = module_name.replace(
                    "{IDX}", str(m_idx + MODULE_FOLDER_IDX_BEGIN_WITH))
                yield (course.get_file(item.content_id), module_name)
Exemplo n.º 5
0
def get_file_in_course(course: canvasapi.canvas.Course, file_id: str):
    if check_filelist_cache(course):
        return course_files[course.id][file_id]
    else:
        return course.get_file(file_id)