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)
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)
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> " + _( " 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)
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)))
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)
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> 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)
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)
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)
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")
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)
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")
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)
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)
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)
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)
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())
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)
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()))
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)
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))
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())
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))
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))
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)
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())
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))
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)
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")
def init(plugin_manager, _, _2, _3): """ Init the plugin """ plugin_manager.add_page(r'/plugindemo/static/(.*)', create_static_resource_page(_static_folder_path))