예제 #1
0
def init(plugin_manager, course_factory, client, config):
    def on_course_updated(courseid, new_content):
        course_data = {
            "course_name": new_content["name"]
        }
        data_filter = {
            "courseid": courseid
        }
        plugin_manager.get_database().problem_banks.update_one(filter=data_filter, update={"$set": course_data})

    def problem_bank_course_admin_menu_hook(course):
        if not plugin_manager.get_user_manager().has_admin_rights_on_course(course):
            return None
        else:
            return "problem_bank", '<i class="fa fa-database" aria-hidden="true"></i> Problem bank'

    if "problem_banks" not in plugin_manager.get_database().collection_names():
        plugin_manager.get_database().create_collection("problem_banks")
    plugin_manager.get_database().problem_banks.create_index([("courseid", 1)], unique=True)

    plugin_manager.add_page(_REACT_BASE_URL + r'(.*)', create_static_resource_page(_REACT_BUILD_FOLDER))
    plugin_manager.add_page(_BASE_STATIC_URL + r'(.*)', create_static_resource_page(_BASE_STATIC_FOLDER))

    plugin_manager.add_page('/plugins/problems_bank/api/copy_task', CopyTaskApi)
    plugin_manager.add_page('/plugins/problems_bank/api/bank_courses', ManageBanksCoursesApi)
    plugin_manager.add_page('/plugins/problems_bank/api/available_courses', AvailableCoursesApi)
    plugin_manager.add_page('/plugins/problems_bank/api/bank_tasks', AvailableTasksApi)
    plugin_manager.add_page('/plugins/problems_bank/api/filter_bank_tasks', FilterTasksApi)
    plugin_manager.add_page('/plugins/problems_bank/api/available_courses_to_copy', AvailableCoursesToCopyApi)

    plugin_manager.add_page(r'/admin/([a-z0-9A-Z\-_]+)/problem_bank', BankPage)

    plugin_manager.add_hook('course_admin_menu', problem_bank_course_admin_menu_hook)
    plugin_manager.add_hook('course_updated', on_course_updated)
예제 #2
0
def init(plugin_manager, course_factory, client, config):

    use_minified = config.get("use_minified", False)
    if use_minified:
        plugin_manager.add_hook("javascript_footer", lambda: "/un_colab/static/js/user_colab.min.js")
        plugin_manager.add_hook("css", lambda: "/un_colab/static/css/user_colab.min.css")
    else:
        plugin_manager.add_hook("javascript_footer", lambda: "/un_colab/static/js/user_colab.js")
        plugin_manager.add_hook("css", lambda: "/un_colab/static/css/user_colab.css")

    def chat_course_menu_hook(course,task, template_helper):
        return """
                <button type="button" onclick="appendChat()" id="menu-toggle" class="btn btn-secondary"><i id="toggleIcon" class="fa-angle-double-down fa"></i> Collaboration
                <i id="bell-notification" class="fa fa-bell"></i>
                </button>
                <div id="wrapper-chat" class="toggled">
                  <div id="sidebar-wrapper-chat">
                   <iframe src="/un_colab/{course_id}/{task_id}" frameborder="0" width="100%" height="100%" scrolling="no"></iframe>
                  </div>
                </div>
                """.format(course_id=course.get_id(),task_id=task.get_id())

    plugin_manager.add_page(r'/un_colab/static/(.*)', create_static_resource_page(_static_folder_path))
    plugin_manager.add_page('/plugins/un_colab/api/connect_chat_user', ConnectChatUser)
    plugin_manager.add_page('/plugins/un_colab/api/score_task_user', ScoreTaskUser)

    plugin_manager.add_page(_REACT_BASE_URL + r'(.*)', create_static_resource_page(_REACT_BUILD_FOLDER))
    plugin_manager.add_page(_BASE_STATIC_URL + r'(.*)', create_static_resource_page(_BASE_STATIC_FOLDER))

    plugin_manager.add_hook('task_menu', chat_course_menu_hook)
    plugin_manager.add_page('/un_colab/([a-z0-9A-Z\-_]+)/([a-z0-9A-Z\-_]+)', ChatPage)
예제 #3
0
def init(plugin_manager, course_factory, client, config):
    def on_course_updated(courseid, new_content):
        course_data = {"course_name": new_content["name"]}
        data_filter = {"courseid": courseid}
        plugin_manager.get_database().problem_banks.update_one(
            filter=data_filter, update={"$set": course_data})

    def problem_bank_course_admin_menu_hook(course):
        if not plugin_manager.get_user_manager().has_admin_rights_on_course(
                course):
            return None
        else:
            return "problem_bank", "<i class='fa fa-database fa-fw' aria-hidden='true'></i>&nbsp;" + _(
                " Problem bank")

    if "problem_banks" not in plugin_manager.get_database().collection_names():
        # This exception is handle as the web server main lunch several processes and run this line at the same time.
        # Thus, this collection must be created by only one worker.
        try:
            plugin_manager.get_database().create_collection("problem_banks")
        except CollectionInvalid:
            pass
    plugin_manager.get_database().problem_banks.create_index([("courseid", 1)],
                                                             unique=True)

    plugin_manager.add_page(REACT_BASE_URL + r'(.*)',
                            create_static_resource_page(REACT_BUILD_FOLDER))
    plugin_manager.add_page(BASE_STATIC_URL + r'(.*)',
                            create_static_resource_page(BASE_STATIC_FOLDER))

    plugin_manager.add_page('/plugins/problems_bank/api/copy_task',
                            CopyTaskApi)
    plugin_manager.add_page('/plugins/problems_bank/api/bank_courses',
                            ManageBanksCoursesApi)
    plugin_manager.add_page('/plugins/problems_bank/api/available_courses',
                            AvailableCoursesApi)
    plugin_manager.add_page('/plugins/problems_bank/api/bank_tasks',
                            AvailableTasksApi)
    plugin_manager.add_page('/plugins/problems_bank/api/filter_bank_tasks',
                            FilterTasksApi)
    plugin_manager.add_page(
        '/plugins/problems_bank/api/available_courses_to_copy',
        AvailableCoursesToCopyApi)

    plugin_manager.add_page(r'/admin/([a-z0-9A-Z\-_]+)/problem_bank', BankPage)

    plugin_manager.add_hook('course_admin_menu',
                            problem_bank_course_admin_menu_hook)
    plugin_manager.add_hook('course_updated', on_course_updated)
예제 #4
0
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page(r'/register_students/static/(.*)',
                            create_static_resource_page(_static_folder_path))
    plugin_manager.add_page("/api/addStudents/", AddCourseStudentsCsvFile)

    use_minified = config.get("use_minified", True)
    if use_minified:
        plugin_manager.add_hook(
            "javascript_footer",
            lambda: "/register_students/static/js/register.min.js")
        plugin_manager.add_hook(
            "css",
            lambda: "/register_students/static/css/register_students.min.css")
    else:
        plugin_manager.add_hook(
            "javascript_footer",
            lambda: "/register_students/static/js/register.js")
        plugin_manager.add_hook(
            "css",
            lambda: "/register_students/static/css/register_students.css")

    renderer = plugin_manager._app.template_helper.get_custom_renderer(
        _static_folder_path, False)
    languages = plugin_manager._app.available_languages
    plugin_manager.add_hook(
        "additional_body_html",
        lambda: str(renderer.register_students_modal(languages)))
예제 #5
0
def init(plugin_manager, course_factory, client, plugin_config):
    # This option is to hide/show tools like Python tutor.
    set_show_tools(plugin_config.get("show_tools", True))
    set_use_minified(plugin_config.get("use_minified", True))
    set_use_wavedrom(plugin_config.get("use_wavedrom", False))

    python_tutor_url = plugin_config.get("python_tutor_url", "")
    if python_tutor_url != "":
        set_python_tutor_url(python_tutor_url)

    linter_url = plugin_config.get("linter_url", "")
    if linter_url != "":
        set_linter_url(linter_url)

    plugin_manager.add_page(r'/multilang/static/(.*)',
                            create_static_resource_page(_static_folder_path))
    plugin_manager.add_page("/api/custom_input/",
                            custom_input_manager_multilang(client))

    custom_test_manager = CustomTestManager(client,
                                            plugin_manager._user_manager,
                                            plugin_manager._database)
    plugin_manager.add_page("/api/custom_input_notebook/",
                            custom_input_notebook(client, custom_test_manager))

    course_factory.get_task_factory().add_problem_type(
        DisplayableCodeMultipleLanguagesProblem)
    course_factory.get_task_factory().add_problem_type(
        DisplayableCodeFileMultipleLanguagesProblem)
    course_factory.get_task_factory().add_problem_type(
        DisplayableNotebookFileProblem)
예제 #6
0
def init(plugin_manager, _, __, plugin_config):
    """
        Init the plugin.
        Available configuration in configuration.yaml:
        ::

            - plugin_module: "inginious.frontend.plugins.plagiarism"
            - storage_path: 'path/to/storage/results'
    """

    set_use_minified(plugin_config.get("use_minified", True))

    def add_admin_menu(course):  # pylint: disable=unused-argument
        """ Add a menu for the plagiarism checker in the administration """
        if not plugin_manager.get_user_manager().has_admin_rights_on_course(course):
            return None
        return "plagiarism", "<i class='fa fa-check-circle-o fa-fw'></i>&nbsp; Plagiarism"

    plugin_manager.add_page(r'/plagiarism/static/(.*)', create_static_resource_page(_STATIC_FOLDER_PATH))

    PlagiarismManagerSingleton(plugin_manager.get_database(), plugin_manager._app.gridfs,
                               plugin_manager.get_submission_manager(), plugin_manager.get_user_manager())

    plugin_manager.add_page(r'/admin/([^/]+)/plagiarism', PlagiarismPage)
    plugin_manager.add_page(r'/admin/([^/]+)/plagiarism/create', PlagiarismCreate)
    plugin_manager.add_page(r'/admin/([^/]+)/plagiarism/summary/([^/]+)', PlagiarismCheckSummary)
    plugin_manager.add_page(r'/admin/([^/]+)/plagiarism/download/([^/]+)', PlagiarismCheckDownload)
    plugin_manager.add_page(r'/admin/([^/]+)/plagiarism/download/([^/]+)(/.*)', PlagiarismCheckDownload)

    plugin_manager.add_hook('course_admin_menu', add_admin_menu)
예제 #7
0
파일: __init__.py 프로젝트: helq/INGInious
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page(r'/UN_template/static/(.*)',
                            create_static_resource_page(_static_folder_path))

    use_minified = config.get("use_minified", True)
    if use_minified:
        plugin_manager.add_hook(
            "css", lambda: "/UN_template/static/css/UN_template.min.css")
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/UN_template/static/js/unal.min.js")
    else:
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/UN_template/static/js/unal.js")
        plugin_manager.add_hook("css",
                                lambda: "/UN_template/static/css/reset.css")
        plugin_manager.add_hook("css",
                                lambda: "/UN_template/static/css/unal.css")
        plugin_manager.add_hook("css",
                                lambda: "/UN_template/static/css/base.css")
        plugin_manager.add_hook("css",
                                lambda: "/UN_template/static/css/tablet.css")
        plugin_manager.add_hook("css",
                                lambda: "/UN_template/static/css/phone.css")
        plugin_manager.add_hook("css",
                                lambda: "/UN_template/static/css/small.css")
        plugin_manager.add_hook("css",
                                lambda: "/UN_template/static/css/printer.css")
        plugin_manager.add_hook("css",
                                lambda: "/UN_template/static/css/new_unal.css")
    plugin_manager.add_hook(
        "css",
        lambda: "/UN_template/static/icons/elusive/css/elusive-icons.min.css")
    plugin_manager.add_hook('body_header', header)
    plugin_manager.add_hook('body_footer', footer)
예제 #8
0
def init(plugin_manager, _1, _2, config):
    plugin_manager.add_page(r'/register_students/static/(.*)',
                            create_static_resource_page(_static_folder_path))
    plugin_manager.add_page("/api/addStudents/", AddCourseStudentsCsvFile)

    use_minified = config.get("use_minified", True)
    template_helper = plugin_manager._app.template_helper

    def add_register_students_template():
        renderer = template_helper.get_custom_renderer(_static_folder_path,
                                                       False)
        languages = plugin_manager._app.available_languages

        if use_minified:
            template_helper.add_javascript(
                "/register_students/static/js/register.min.js")
            template_helper.add_css(
                "/register_students/static/css/register_students.min.css")
        else:
            template_helper.add_javascript(
                "/register_students/static/js/register.js")
            template_helper.add_css(
                "/register_students/static/css/register_students.css")

        return str(renderer.register_students_modal(languages))

    # Add the register_students helper to the template helper so that way, the hook is added.
    template_helper.add_other("register_students",
                              (lambda **kwargs: template_helper._generic_hook(
                                  'register_students', **kwargs)))

    plugin_manager.add_hook("register_students",
                            add_register_students_template)
예제 #9
0
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page('/api/code_preview/', TaskPreviewFileAPI)
    plugin_manager.add_page(r'/code_preview/static/(.*)',
                            create_static_resource_page(_static_folder_path))

    plugin_manager.add_hook(
        "javascript_footer",
        lambda: "/code_preview/static/js/code_preview_load.js")
예제 #10
0
def init(plugin_manager, course_factory, client, config):

    set_use_minified(config.get("use_minified", True))
    plugin_manager.add_page(r'/lti_register/static/(.*)', create_static_resource_page(_LTI_REGISTER_STATIC_FILES))

    plugin_manager.add_page('/register_user', RegisterLTIPage)

    plugin_manager.add_hook('get_user_lti_account', get_user_lti)
예제 #11
0
def init(plugin_manager, course_factory, client, plugin_config):
    plugin_manager.add_page(r'/custom_input/static/(.*)', create_static_resource_page(_static_folder_path))
    plugin_manager.add_page("/api/custom_input/", customInputManagerWithCurriedClient(client))

    use_minified = plugin_config.get("use_minified", True)
    if use_minified:
        plugin_manager.add_hook("javascript_footer", lambda: "/custom_input/static/custom_input.min.js")
    else:
        plugin_manager.add_hook("javascript_footer", lambda: "/custom_input/static/custom_input.js")
예제 #12
0
def init(plugin_manager, _1, _2, config):
    set_use_minified(config.get("use_minified", True))

    plugin_manager.add_page(
        r"/task_editorial/static/(.*)",
        create_static_resource_page(_TASK_EDITORIAL_STATIC_FOLDER_PATH_))
    plugin_manager.add_page("/api/task_editorial/", SolutionNotebookApi)

    plugin_manager.add_hook('task_editor_tab', editorial_task_tab)
    plugin_manager.add_hook('task_menu', editorial_task_preview)
    plugin_manager.add_hook('task_editor_submit', check_editorial_submit)
예제 #13
0
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page(r'/grader_generator/static/(.*)', create_static_resource_page(_BASE_STATIC_FOLDER))

    use_minified = config.get("use_minified", True)
    set_use_minified(use_minified)

    plugin_manager.add_page('/api/grader_generator/test_file_api', TaskTestCasesFilesApi)

    plugin_manager.add_hook('task_editor_tab', grader_generator_tab)
    plugin_manager.add_hook('task_editor_footer', grader_footer)
    plugin_manager.add_hook('task_editor_submit', on_task_editor_submit)
예제 #14
0
def init(plugin_manager, _1, _2, config):
    plugin_manager.add_page("/api/code_preview/", TaskCodePreviewAPI)
    plugin_manager.add_page(r"/code_preview/static/(.*)",
                            create_static_resource_page(_static_folder_path))

    set_use_minified(config.get("use_minified", True))

    plugin_manager.add_hook("add_task_page_static_files",
                            add_static_files_on_task_page)

    plugin_manager.add_hook("task_editor_tab", code_preview_tab)
    plugin_manager.add_hook("task_editor_submit", on_task_editor_submit)
예제 #15
0
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page('/api/code_preview/', TaskPreviewFileAPI)
    plugin_manager.add_page(r'/code_preview/static/(.*)', create_static_resource_page(_static_folder_path))

    use_minified = config.get("use_minified", True)

    if use_minified:
        plugin_manager.add_hook("javascript_footer", lambda: "/code_preview/static/js/code_preview_load.min.js")
    else:
        plugin_manager.add_hook("javascript_footer", lambda: "/code_preview/static/js/code_preview_load.js")

    plugin_manager.add_hook('task_editor_tab', code_preview_tab)
    plugin_manager.add_hook('task_editor_submit', on_task_editor_submit)
예제 #16
0
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page(r'/user_management/static/(.*)', create_static_resource_page(_BASE_STATIC_FOLDER))

    use_minified = config.get("use_minified", True)
    set_use_minified(use_minified)

    plugin_manager.add_page('/user_management', UserManagementPage)
    plugin_manager.add_page('/api/user_management', UserDataAPI)
    plugin_manager.add_page('/api/user_status', UserStatusAPI)
    plugin_manager.add_page('/api/find_user', FindUserAPI)

    plugin_manager.add_hook('open_session', on_user_sign_in)

    plugin_manager.add_hook("superadmin_options", lambda: user_management_hook(plugin_manager))
    CollectionsManagerSingleton(plugin_manager.get_database())
예제 #17
0
def init(plugin_manager, course_factory, client, config):
    set_use_minified(config.get("use_minified", True))
    plugin_manager.add_page(
        r'/task_hints/static/(.*)',
        create_static_resource_page(_SHOW_HINT_STATIC_FILES))
    plugin_manager.add_page('/api/user_hints_api/', UserHintsAPI)
    plugin_manager.add_page('/api/edit_hints_api/', EditHintsAPI)
    plugin_manager.add_page('/api/hints_mode_api/', HintsModeAPI)

    plugin_manager.add_hook('task_editor_tab', edit_hints_tab)
    plugin_manager.add_hook('task_editor_footer',
                            get_hints_edit_modal_template)
    plugin_manager.add_hook('task_menu', show_hints)
    plugin_manager.add_hook('task_editor_submit', on_task_submit)

    UserHintManagerSingleton(plugin_manager.get_database())
    plugin_manager.add_hook('show_hints', get_user_total_penalty)
예제 #18
0
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page(r'/UNCode/static/(.*)',
                            create_static_resource_page(_static_folder_path))

    use_minified = config.get("use_minified", True)
    if use_minified:
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/UNCode/static/js/UNCode.min.js")
        plugin_manager.add_hook("css",
                                lambda: "/UNCode/static/css/UNCode.min.css")
    else:
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/UNCode/static/js/uncode.js")
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/UNCode/static/js/task_files_tab.js")
        plugin_manager.add_hook("css", lambda: "/UNCode/static/css/uncode.css")

    used_grading_environments = config.get("used_grading_environments", [])
    set_used_grading_environments(used_grading_environments)

    used_subproblem_types = config.get("used_subproblem_types", [])
    set_used_subproblem_types(used_subproblem_types)

    plugin_manager.add_page("/api/getUsedGradingEnvironments/",
                            UsedGradingEnvironments)
    plugin_manager.add_page("/api/getUsedSubproblemTypes/",
                            UsedSubproblemTypes)

    renderer = plugin_manager._app.template_helper.get_custom_renderer(
        'frontend/plugins/UNCode/static', False)

    plugin_manager.add_hook(
        "additional_body_html",
        lambda: "<p class='hidden' id='default_task_context'>" + read_file(
            _static_folder_path, _CONTEXT_TASK_TEMPLATE_FILE) + "</p>")
    plugin_manager.add_hook("additional_body_html",
                            lambda: str(renderer.task_context_help_modal()))
    plugin_manager.add_hook(
        "additional_body_html",
        lambda: str(renderer.task_files_upload_multiple_modal()))
    plugin_manager.add_hook("additional_body_html",
                            lambda: str(renderer.task_result_legend_modal()))
    plugin_manager.add_hook(
        "additional_body_html",
        lambda: str(renderer.delete_all_files_confirm_modal()))
예제 #19
0
def init(plugin_manager, _, __, plugin_config):
    """ Init the plugin """
    plugin_manager.add_page(
        r'/manual_scoring/static/(.*)',
        create_static_resource_page(get_static_folder_path()))

    use_minified = plugin_config.get("use_minified", True)

    set_use_minified(use_minified)

    # Admin pages

    # First page of rubric scoring. It's a task list
    plugin_manager.add_page(r'/admin/([a-z0-9A-Z\-_]+)/manual_scoring',
                            course_task_list.CourseTaskListPage)
    # Second page of rubric scoring. It's a list of users who have done a submission
    plugin_manager.add_page(
        r'/admin/([a-z0-9A-Z\-_]+)/manual_scoring/task/([a-z0-9A-Z\-_]+)',
        students_list.StudentsListPage)
    # Third page of rubric scoring. It's a list of submissions have done it by a student
    plugin_manager.add_page(
        r'/admin/([a-z0-9A-Z\-_]+)/manual_scoring/task/([a-z0-9A-Z\-_]+)/user/([a-z0-9A-Z\-_]+)',
        student_submissions.StudentSubmissionsPage)
    # Fourth page. The rubric scoring page
    plugin_manager.add_page(
        r'/admin/([a-z0-9A-Z\-_]+)/manual_scoring/task/([a-z0-9A-Z\-_]+)/submission/([a-z0-9A-Z\-_]+)',
        manual_scoring.ManualScoringPage)

    plugin_manager.add_page("/api/manual_scoring/upload_custom_rubric",
                            UploadCustomRubric)

    plugin_manager.add_hook('course_admin_menu', get_manual_scoring_link_code)

    # Student pages

    plugin_manager.add_page(r'/feedback_list/([a-z0-9A-Z\-_]+)',
                            student_feedback_list.StudentFeedbackListPage)
    plugin_manager.add_page(
        r'/submission_feedback/([a-z0-9A-Z\-_]+)/submission/([a-z0-9A-Z\-_]+)',
        feedback.FeedbackPage)
    plugin_manager.add_page(r'/api/parse_rst', RstParserAPI)
    plugin_manager.add_page(r'/api/manual_scoring/([a-z0-9A-Z\-_]+)',
                            ManualScoringInfoApi)
    plugin_manager.add_hook('course_menu', get_feedback_link_code)
예제 #20
0
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page(r'/UNCode/static/(.*)',
                            create_static_resource_page(_static_folder_path))

    use_minified = config.get("use_minified", True)
    if use_minified:
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/UNCode/static/js/UNCode.min.js")
        plugin_manager.add_hook("css",
                                lambda: "/UNCode/static/css/UNCode.min.css")
    else:
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/UNCode/static/js/uncode.js")
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/UNCode/static/js/task_files_tab.js")
        plugin_manager.add_hook("css", lambda: "/UNCode/static/css/uncode.css")

    used_grading_environments = config.get("used_grading_environments", [])
    set_used_grading_environments(used_grading_environments)

    used_subproblem_types = config.get("used_subproblem_types", [])
    set_used_subproblem_types(used_subproblem_types)

    plugin_manager.add_page("/api/getUsedGradingEnvironments/",
                            UsedGradingEnvironments)
    plugin_manager.add_page("/api/getUsedSubproblemTypes/",
                            UsedSubproblemTypes)

    plugin_manager.add_hook(
        "additional_body_html",
        lambda: "<p class='hidden' id='default_task_context'>" + read_file(
            _static_folder_path, _CONTEXT_TASK_TEMPLATE_FILE) + "</p>")
    plugin_manager.add_hook(
        "additional_body_html",
        lambda: read_file(_static_folder_path, _TASK_CONTEXT_HELP_MODAL_FILE))
    plugin_manager.add_hook(
        "additional_body_html", lambda: read_file(
            _static_folder_path, _TASK_FILES_UPLOAD_MULTIPLE_MODAL))
    plugin_manager.add_hook(
        "additional_body_html",
        lambda: read_file(_static_folder_path, _TASK_RESULT_LEGEND_MODAL_FILE))
    plugin_manager.add_hook(
        "additional_body_html",
        lambda: read_file(_static_folder_path, _DELETE_ALL_FILES_MODAL_FILE))
예제 #21
0
def init(plugin_manager, course_factory, client, plugin_config):
    """ Init the plugin """

    plugin_manager.add_page(r'/contact_page/static/(.*)',
                            create_static_resource_page(_static_folder_path))

    use_minified = plugin_config.get("use_minified", True)
    slack_url_contact_channel = plugin_config.get("slack_url_contact_channel",
                                                  "")
    slack_url_course_creation_ch = plugin_config.get(
        "slack_url_course_creation_channel", "")

    define_slack_url(slack_url_contact_channel, slack_url_course_creation_ch)
    set_use_minified(use_minified)

    plugin_manager.add_page("/contact_page", ContactPage)

    plugin_manager.add_hook("uncode_navbar_options",
                            lambda: contact_us_option_hook())
예제 #22
0
def init(plugin_manager, course_factory, _1, plugin_config):
    """
        Init the plugin.
        Available configuration in configuration.yaml:
        ::

            - plugin_module: "inginious.frontend.plugins.course_creation"
            - use_minified: true or false. True by default.
    """

    use_minified = plugin_config.get("use_minified", True)

    plugin_manager.add_page(r"/course_creation/static/(.*)",
                            create_static_resource_page(_STATIC_FOLDER_PATH))

    plugin_manager.add_page(r"/api/create_course", CreateCourseAPI)

    plugin_manager.add_hook(
        "main_menu",
        add_course_creation_main_menu(plugin_manager, course_factory,
                                      use_minified))
예제 #23
0
파일: __init__.py 프로젝트: helq/INGInious
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page(r'/UNCode/static/(.*)', create_static_resource_page(_static_folder_path))

    use_minified = config.get("use_minified", True)
    if use_minified:
        plugin_manager.add_hook("javascript_footer", lambda: "/UNCode/static/js/UNCode.min.js")
        plugin_manager.add_hook("css", lambda: "/UNCode/static/css/UNCode.min.css")
    else:
        plugin_manager.add_hook("javascript_footer", lambda: "/UNCode/static/js/uncode.js")
        plugin_manager.add_hook("javascript_footer", lambda: "/UNCode/static/js/task_files_upload_multiple.js")
        plugin_manager.add_hook("css", lambda: "/UNCode/static/css/uncode.css")

    plugin_manager.add_hook("additional_body_html", lambda: "<p class='hidden' id='default_task_context'>" +
                                                            read_file(_static_folder_path,
                                                                      _CONTEXT_TASK_TEMPLATE_FILE) + "</p>")
    plugin_manager.add_hook("additional_body_html",
                            lambda: read_file(_static_folder_path, _TASK_CONTEXT_HELP_MODAL_HTML_FILE))
    plugin_manager.add_hook("additional_body_html",
                            lambda: read_file(_static_folder_path, _TASK_FILES_UPLOAD_MULTIPLE_MODAL))
    plugin_manager.add_hook("additional_body_html",
                            lambda: read_file(_static_folder_path, _TASK_RESULT_LEGEND_MODAL_HTML_FILE))
예제 #24
0
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page(r'/statistics/static/(.*)',
                            create_static_resource_page(_static_folder_path))

    use_minified = config.get("use_minified", True)
    set_use_minified(use_minified)

    plugin_manager.add_page(r'/user_statistics/([a-z0-9A-Z\-_]+)',
                            UserStatisticsPage)
    plugin_manager.add_hook('course_menu', statistics_course_menu_hook)

    plugin_manager.add_page("/api/stats/student/trials_and_best_grade",
                            TrialsAndBestGradeApi)
    plugin_manager.add_page("/api/stats/student/bar_submissions_per_tasks",
                            BarSubmissionsPerTasksApi)

    plugin_manager.add_page(r'/admin/([a-z0-9A-Z\-_]+)/statistics',
                            CourseAdminStatisticsPage)
    plugin_manager.add_hook('course_admin_menu',
                            statistics_course_admin_menu_hook)

    plugin_manager.add_page('/api/stats/admin/grade_count', GradeCountApi)
    plugin_manager.add_page('/api/stats/admin/grade_count_details',
                            GradeCountDetailsApi)

    plugin_manager.add_page('/api/stats/admin/grade_distribution',
                            GradeDistributionApi)
    plugin_manager.add_page('/api/stats/admin/grade_distribution_details',
                            GradeDistributionDetailsApi)

    plugin_manager.add_page('/api/stats/admin/best_submissions_verdict',
                            BestSubmissionsByVerdictApi)
    plugin_manager.add_page(
        '/api/stats/admin/best_submissions_verdict_details',
        BestSubmissionsByVerdictStatisticsDetailApi)

    plugin_manager.add_page('/api/stats/admin/submissions_verdict',
                            SubmissionsByVerdictApi)
    plugin_manager.add_page('/api/stats/admin/submissions_verdict_details',
                            SubmissionsByVerdictDetailsApi)
예제 #25
0
def init(plugin_manager, course_factory, client, plugin_config):
    plugin_manager.add_page(r'/analytics/static/(.*)',
                            create_static_resource_page(_static_folder_path))
    plugin_manager.add_page('/analytics/', AnalyticsPage)
    plugin_manager.add_page('/api/analytics/', AnalyticsAPI)
    plugin_manager.add_page('/api/calendar_plot_analytics/', CalendarPlotAPI)
    plugin_manager.add_page('/api/time_series_plot_analytics/',
                            TimeSeriesPlotAPI)
    plugin_manager.add_page('/api/box_plot_analytics/', BoxPlotAPI)
    plugin_manager.add_page('/api/radar_plot_analytics/', RadarPlotAPI)

    set_use_minified(plugin_config.get("use_minified", True))

    def analytics_hook():
        if plugin_manager.get_user_manager().user_is_superadmin():
            return _(""""<li><a href='/analytics/' class='navbar-link'>
            <i class='fa fa-bar-chart fa-fw'></i> Analytics</a></li>""")

    plugin_manager.add_hook("superadmin_options", lambda: analytics_hook())

    ServicesCollectionManagerSingleton(plugin_manager.get_database())
    AnalyticsCollectionManagerSingleton(plugin_manager.get_database())
예제 #26
0
def init(plugin_manager, course_factory, client, config):
    plugin_manager.add_page(r'/register_students/static/(.*)',
                            create_static_resource_page(_static_folder_path))
    plugin_manager.add_page("/api/addStudents/", AddCourseStudentsCsvFile)

    use_minified = config.get("use_minified", True)
    if use_minified:
        plugin_manager.add_hook(
            "javascript_footer",
            lambda: "/register_students/static/js/register.min.js")
        plugin_manager.add_hook(
            "css",
            lambda: "/register_students/static/css/register_students.min.css")
    else:
        plugin_manager.add_hook(
            "javascript_footer",
            lambda: "/register_students/static/js/register.js")
        plugin_manager.add_hook(
            "css",
            lambda: "/register_students/static/css/register_students.css")
    plugin_manager.add_hook(
        "additional_body_html", lambda: read_file(
            _static_folder_path, _REGISTER_STUDENTS_MODAL_HTML_FILE))
예제 #27
0
파일: __init__.py 프로젝트: helq/INGInious
def init(plugin_manager, course_factory, client, plugin_config):
    # This option is to hide/show tools like Python tutor.
    show_tools = plugin_config.get("show_tools", True)
    if show_tools != "":
        set_show_tools(show_tools)

    plugin_manager.add_page(r'/multilang/static/(.*)', create_static_resource_page(_static_folder_path))

    use_minified = plugin_config.get("use_minified", True)

    if use_minified:
        plugin_manager.add_hook("javascript_footer", lambda: "/multilang/static/multilang.min.js")
        plugin_manager.add_hook("css", lambda: "/multilang/static/multilang.min.css")
    else:
        plugin_manager.add_hook("javascript_footer", lambda: "/multilang/static/multilang.js")
        plugin_manager.add_hook("javascript_footer", lambda: "/multilang/static/grader.js")
        plugin_manager.add_hook("css", lambda: "/multilang/static/multilang.css")
    if get_show_tools():
        if use_minified:
            plugin_manager.add_hook("javascript_footer", lambda: "/multilang/static/tools.min.js")
            plugin_manager.add_hook("css", lambda: "/multilang/static/tools.min.css")
        else:
            plugin_manager.add_hook("javascript_footer", lambda: "/multilang/static/pythonTutor.js")
            plugin_manager.add_hook("javascript_footer", lambda: "/multilang/static/codemirror_linter.js")
            plugin_manager.add_hook("javascript_footer", lambda: "/multilang/static/lint.js")
            plugin_manager.add_hook("css", lambda: "/multilang/static/lint.css")
    course_factory.get_task_factory().add_problem_type(DisplayableCodeMultipleLanguagesProblem)
    course_factory.get_task_factory().add_problem_type(DisplayableCodeFileMultipleLanguagesProblem)

    python_tutor_url = plugin_config.get("python_tutor_url", "")
    if python_tutor_url != "":
        set_python_tutor_url(python_tutor_url)

    linter_url = plugin_config.get("linter_url", "")
    if linter_url != "":
        set_linter_url(linter_url)
예제 #28
0
def init(plugin_manager, course_factory, client, plugin_config):
    # This option is to hide/show tools like Python tutor.
    show_tools = plugin_config.get("show_tools", True)
    if show_tools != "":
        set_show_tools(show_tools)

    plugin_manager.add_page(r'/multilang/static/(.*)',
                            create_static_resource_page(_static_folder_path))

    use_minified = plugin_config.get("use_minified", True)

    plugin_manager.add_hook(
        "javascript_footer",
        lambda: "https://cdn.jsdelivr.net/npm/marked/marked.min.js")
    plugin_manager.add_hook(
        "javascript_footer", lambda:
        "https://cdnjs.cloudflare.com/ajax/libs/prism/1.19.0/components/prism-core.min.js"
    )
    plugin_manager.add_hook(
        "javascript_footer", lambda:
        "https://cdnjs.cloudflare.com/ajax/libs/prism/1.19.0/components/prism-python.min.js"
    )
    plugin_manager.add_hook(
        "css", lambda:
        "https://cdnjs.cloudflare.com/ajax/libs/prism/1.19.0/themes/prism.min.css"
    )
    if use_minified:
        plugin_manager.add_hook(
            "javascript_footer",
            lambda: "/multilang/static/notebook_renderer.min.js")
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/multilang/static/multilang.min.js")
        plugin_manager.add_hook("css",
                                lambda: "/multilang/static/multilang.min.css")
    else:
        plugin_manager.add_hook(
            "javascript_footer",
            lambda: "/multilang/static/notebook_renderer.js")
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/multilang/static/multilang.js")
        plugin_manager.add_hook("javascript_footer",
                                lambda: "/multilang/static/grader.js")
        plugin_manager.add_hook("css",
                                lambda: "/multilang/static/multilang.css")

    if get_show_tools():
        if use_minified:
            plugin_manager.add_hook("javascript_footer",
                                    lambda: "/multilang/static/tools.min.js")
            plugin_manager.add_hook("css",
                                    lambda: "/multilang/static/tools.min.css")
        else:
            plugin_manager.add_hook("javascript_footer",
                                    lambda: "/multilang/static/pythonTutor.js")
            plugin_manager.add_hook(
                "javascript_footer",
                lambda: "/multilang/static/codemirror_linter.js")
            plugin_manager.add_hook("javascript_footer",
                                    lambda: "/multilang/static/lint.js")
            plugin_manager.add_hook("css",
                                    lambda: "/multilang/static/lint.css")
    course_factory.get_task_factory().add_problem_type(
        DisplayableCodeMultipleLanguagesProblem)
    course_factory.get_task_factory().add_problem_type(
        DisplayableCodeFileMultipleLanguagesProblem)
    course_factory.get_task_factory().add_problem_type(
        DisplayableNotebookFileProblem)

    python_tutor_url = plugin_config.get("python_tutor_url", "")
    python_tutor_url_py2 = plugin_config.get("python_tutor_url_py2", "")
    if python_tutor_url != "":
        set_python_tutor_url(python_tutor_url)

    if python_tutor_url_py2:
        set_python_tutor_py2_url(python_tutor_url_py2)

    linter_url = plugin_config.get("linter_url", "")
    if linter_url != "":
        set_linter_url(linter_url)

    use_wavedrom = plugin_config.get("use_wavedrom", False)
    if use_wavedrom:
        plugin_manager.add_hook(
            "javascript_footer",
            lambda: "https://wavedrom.com/skins/default.js")
        plugin_manager.add_hook("javascript_footer",
                                lambda: "https://wavedrom.com/wavedrom.min.js")
        if use_minified:
            plugin_manager.add_hook(
                "javascript_footer",
                lambda: "/multilang/static/hdlgrader.min.js")
        else:
            plugin_manager.add_hook("javascript_footer",
                                    lambda: "/multilang/static/hdlgrader.js")
예제 #29
0
def init(plugin_manager, _, _2, _3):
    """ Init the plugin """
    plugin_manager.add_page(r'/plugindemo/static/(.*)',
                            create_static_resource_page(_static_folder_path))