예제 #1
0
    def _register_student(self, data):
        """
        Registers the student in UNCode and sends a verification email to the user. If the user already exists, nothing
        happens.
        :param data: Dict containing the user data
        :return: True if succeeded the register. If user already exists returns False.
        """
        success = True

        existing_user = self.database.users.find_one(
            {"$or": [{"username": data["username"]}, {"email": data["email"]}]})
        if existing_user is not None:
            success = False
        else:
            passwd_hash = hashlib.sha512(data["passwd"].encode("utf-8")).hexdigest()
            activate_hash = hashlib.sha512(str(random.getrandbits(256)).encode("utf-8")).hexdigest()
            self.database.users.insert({"username": data["username"],
                                        "realname": data["realname"],
                                        "email": data["email"],
                                        "password": passwd_hash,
                                        "activate": activate_hash,
                                        "bindings": {},
                                        "language": self.user_manager._session.get("language", "en")})
            try:
                activate_account_link = web.ctx.home + "/register?activate=" + activate_hash
                email_template = read_file(_static_folder_path, "email_template.txt")
                web.sendmail(web.config.smtp_sendername, data["email"], "Welcome on UNCode",
                             email_template.format(activate_account_link))
            except:
                pass

        return success
예제 #2
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))
예제 #3
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))
예제 #4
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()))
예제 #5
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))