def GET_AUTH(self, courseid, taskid): # pylint: disable=arguments-differ """ Edit a task """ if not id_checker(taskid): raise Exception("Invalid task id") course, __ = self.get_course_and_check_rights(courseid, allow_all_staff=False) try: task_data = self.task_factory.get_task_descriptor_content( courseid, taskid) except: task_data = None if task_data is None: task_data = {} environments = self.containers current_filetype = None try: current_filetype = self.task_factory.get_task_descriptor_extension( courseid, taskid) except: pass available_filetypes = self.task_factory.get_available_task_file_extensions( ) return self.template_helper.get_renderer().course_admin.task_edit( course, taskid, self.task_factory.get_problem_types(), task_data, environments, json.dumps(task_data.get('problems', {})), self.contains_is_html(task_data), current_filetype, available_filetypes, AccessibleTime, CourseTaskFiles.get_task_filelist(self.task_factory, courseid, taskid))
def API_GET(self): """ Returns a list of files and directories as a JSON list. Each entry of the output is an object (representing a file or directory) with the following properties: - "level": Integer. Indicates the depth level of this entry. - "is_directory": Boolean. Indicates whether the current entry is a directory. If False, it is a file. - "name": The file or directory name. - "complete_name": The full path of the entry. """ parameters = web.input() courseid = get_mandatory_parameter(parameters, "course_id") taskid = get_mandatory_parameter(parameters, "task_id") self.get_course_and_check_rights(courseid) file_list = CourseTaskFiles.get_task_filelist(self.task_factory, courseid, taskid) result = [{ "level": level, "is_directory": is_directory, "name": name, "complete_name": complete_name[1:] if complete_name.startswith("/") else complete_name } for level, is_directory, name, complete_name in file_list] return 200, result
def GET_AUTH(self, courseid, taskid): # pylint: disable=arguments-differ """ Edit a task """ if not id_checker(taskid): raise Exception("Invalid task id") course, __ = self.get_course_and_check_rights(courseid, allow_all_staff=False) try: task_data = self.task_factory.get_task_descriptor_content( courseid, taskid) except: task_data = None if task_data is None: task_data = {} # Sorting to asure that multilang is always the first option environments = self.containers if "multiple_languages" in environments: environments = list(environments) environments.remove("multiple_languages") environments.insert(0, "multiple_languages") environments = tuple(environments) current_filetype = None try: current_filetype = self.task_factory.get_task_descriptor_extension( courseid, taskid) except: pass available_filetypes = self.task_factory.get_available_task_file_extensions( ) additional_tabs = self.plugin_manager.call_hook( 'task_editor_tab', course=course, taskid=taskid, task_data=task_data, template_helper=self.template_helper) additional_footer = self.plugin_manager.call_hook( 'task_editor_footer', course=course, taskid=taskid, task_data=task_data, template_helper=self.template_helper) return self.template_helper.get_renderer().course_admin.task_edit( course, taskid, self.task_factory.get_problem_types(), task_data, environments, task_data.get('problems', {}), self.contains_is_html(task_data), current_filetype, available_filetypes, AccessibleTime, CourseTaskFiles.get_task_filelist(self.task_factory, courseid, taskid), additional_tabs, additional_footer)
def GET_AUTH(self, courseid, taskid): # pylint: disable=arguments-differ """ Edit a task """ if not id_checker(taskid): raise NotFound(description=_("Invalid task id")) course, __ = self.get_course_and_check_rights(courseid, allow_all_staff=False) try: task_data = self.task_factory.get_task_descriptor_content( courseid, taskid) except TaskNotFoundException: raise NotFound() # Ensure retrocompatibility task_data = _migrate_from_v_0_6(task_data) environment_types = self.environment_types environments = self.environments current_filetype = None try: current_filetype = self.task_factory.get_task_descriptor_extension( courseid, taskid) except: pass available_filetypes = self.task_factory.get_available_task_file_extensions( ) additional_tabs = self.plugin_manager.call_hook( 'task_editor_tab', course=course, taskid=taskid, task_data=task_data, template_helper=self.template_helper) return self.template_helper.render( "course_admin/task_edit.html", course=course, taskid=taskid, problem_types=self.task_factory.get_problem_types(), task_data=task_data, environment_types=environment_types, environments=environments, problemdata=json.dumps(task_data.get('problems', {})), contains_is_html=self.contains_is_html(task_data), current_filetype=current_filetype, available_filetypes=available_filetypes, AccessibleTime=AccessibleTime, file_list=CourseTaskFiles.get_task_filelist( self.task_factory, courseid, taskid), additional_tabs=additional_tabs)
def GET_AUTH(self, courseid, taskid): # pylint: disable=arguments-differ """ Edit a task """ if not id_checker(taskid): raise Exception("Invalid task id") course, __ = self.get_course_and_check_rights(courseid, allow_all_staff=False) try: task_data = self.task_factory.get_task_descriptor_content(courseid, taskid) except: task_data = None if task_data is None: task_data = {} environments = self.containers current_filetype = None try: current_filetype = self.task_factory.get_task_descriptor_extension(courseid, taskid) except: pass available_filetypes = self.task_factory.get_available_task_file_extensions() # custom problem-type: for pid in task_data.get("problems", {}): problem = task_data["problems"][pid] if (problem["type"] == "code" and "boxes" in problem) or problem["type"] not in ( "code", "code_single_line", "file", "match", "multiple_choice"): problem_copy = copy.deepcopy(problem) for i in ["name", "header"]: if i in problem_copy: del problem_copy[i] problem["custom"] = inginious.common.custom_yaml.dump(problem_copy) return self.template_helper.get_renderer().course_admin.task_edit( course, taskid, self.task_factory.get_problem_types(), task_data, environments, json.dumps( task_data.get( 'problems', {})), self.contains_is_html(task_data), current_filetype, available_filetypes, AccessibleTime, CourseTaskFiles.get_task_filelist(self.task_factory, courseid, taskid))
def GET_AUTH(self, courseid, taskid): # pylint: disable=arguments-differ """ Edit a task """ if not id_checker(taskid): raise Exception("Invalid task id") course, __ = self.get_course_and_check_rights(courseid, allow_all_staff=False) try: task_data = self.task_factory.get_task_descriptor_content( courseid, taskid) except: task_data = None if task_data is None: task_data = {} # Ensure retrocompatibility task_data = _migrate_from_v_0_6(task_data) environment_types = self.environment_types environments = self.environments current_filetype = None try: current_filetype = self.task_factory.get_task_descriptor_extension( courseid, taskid) except: pass available_filetypes = self.task_factory.get_available_task_file_extensions( ) additional_tabs = self.plugin_manager.call_hook( 'task_editor_tab', course=course, taskid=taskid, task_data=task_data, template_helper=self.template_helper) sectionid = web.input().get("sectionid", None) return self.template_helper.get_renderer().course_admin.task_edit( course, taskid, self.task_factory.get_problem_types(), task_data, environment_types, environments, task_data.get('problems', {}), self.contains_is_html(task_data), current_filetype, available_filetypes, AccessibleTime, CourseTaskFiles.get_task_filelist(self.task_factory, courseid, taskid), additional_tabs, sectionid)
def GET_AUTH(self, courseid, taskid): # pylint: disable=arguments-differ """ Edit a task """ if not id_checker(taskid): raise Exception("Invalid task id") course, __ = self.get_course_and_check_rights(courseid, allow_all_staff=False) try: task_data = self.task_factory.get_task_descriptor_content(courseid, taskid) except: task_data = None if task_data is None: task_data = {} environments = self.containers current_filetype = None try: current_filetype = self.task_factory.get_task_descriptor_extension(courseid, taskid) except: pass available_filetypes = self.task_factory.get_available_task_file_extensions() additional_tabs = self.plugin_manager.call_hook('task_editor_tab', course=course, taskid=taskid, task_data=task_data, template_helper=self.template_helper) return self.template_helper.get_renderer().course_admin.task_edit( course, taskid, self.task_factory.get_problem_types(), task_data, environments, task_data.get('problems',{}), self.contains_is_html(task_data), current_filetype, available_filetypes, AccessibleTime, CourseTaskFiles.get_task_filelist(self.task_factory, courseid, taskid), additional_tabs )