From 9381be9b960ef1764c7eb14066dc2e259f8cecb4 Mon Sep 17 00:00:00 2001 From: Juan David Valencia Date: Wed, 14 Mar 2018 18:41:51 -0500 Subject: [PATCH 1/5] Adding button to create task without editing --- .../frontend/webapp/pages/course_admin/task_list.py | 5 +++++ .../webapp/templates/course_admin/task_list.html | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/inginious/frontend/webapp/pages/course_admin/task_list.py b/inginious/frontend/webapp/pages/course_admin/task_list.py index 288c1134..f5aa4952 100644 --- a/inginious/frontend/webapp/pages/course_admin/task_list.py +++ b/inginious/frontend/webapp/pages/course_admin/task_list.py @@ -6,6 +6,7 @@ from collections import OrderedDict import web +import yaml from inginious.frontend.webapp.pages.course_admin.utils import make_csv, INGIniousAdminPage @@ -23,6 +24,10 @@ def POST_AUTH(self, courseid): # pylint: disable=arguments-differ course, _ = self.get_course_and_check_rights(courseid) data = web.input(task=[]) + if "new_task_id" in data: + # Create new task + self.task_factory.update_task_descriptor_content(courseid, data["new_task_id"], yaml.load(open("task.yaml", "r")), "yaml") + if "task" in data: # Change tasks order for index, taskid in enumerate(data["task"]): diff --git a/inginious/frontend/webapp/templates/course_admin/task_list.html b/inginious/frontend/webapp/templates/course_admin/task_list.html index 9cdbb402..906797f0 100644 --- a/inginious/frontend/webapp/templates/course_admin/task_list.html +++ b/inginious/frontend/webapp/templates/course_admin/task_list.html @@ -78,9 +78,12 @@

Tasks
-
-
- +
+
+
+
+
+
$if len(errors) != 0: @@ -117,4 +120,4 @@

Errors while loading tasks

} $$('.sorted_table').sortable($$(this).hasClass("active") ? "enable" : "disable"); }); - \ No newline at end of file + From b6e0bfc6121fd051a654ace3548cd5129bd37664 Mon Sep 17 00:00:00 2001 From: Juan David Valencia Date: Wed, 14 Mar 2018 18:42:11 -0500 Subject: [PATCH 2/5] Adding default task for creation --- task.yaml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 task.yaml diff --git a/task.yaml b/task.yaml new file mode 100644 index 00000000..541b16bc --- /dev/null +++ b/task.yaml @@ -0,0 +1,24 @@ +accessible: true +author: '' +context: '' +environment: mcq +evaluate: best +groups: false +limits: + output: '2' + memory: '100' + time: '30' +name: default +network_grading: false +problems: + default-task: + name: '' + type: code-multiple-languages + languages: + cpp11: true + header: '' +stored_submissions: 0 +submission_limit: + amount: -1 + period: -1 +weight: 1.0 From e9dcb4172abebd1208b48a35bc4eaae5d5384238 Mon Sep 17 00:00:00 2001 From: Juan David Valencia Date: Fri, 16 Mar 2018 08:57:10 -0500 Subject: [PATCH 3/5] Shows name equal to the task id --- inginious/frontend/webapp/pages/course_admin/task_list.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/inginious/frontend/webapp/pages/course_admin/task_list.py b/inginious/frontend/webapp/pages/course_admin/task_list.py index f5aa4952..bf583d25 100644 --- a/inginious/frontend/webapp/pages/course_admin/task_list.py +++ b/inginious/frontend/webapp/pages/course_admin/task_list.py @@ -26,7 +26,10 @@ def POST_AUTH(self, courseid): # pylint: disable=arguments-differ if "new_task_id" in data: # Create new task - self.task_factory.update_task_descriptor_content(courseid, data["new_task_id"], yaml.load(open("task.yaml", "r")), "yaml") + default_task_data = yaml.safe_load(open("task.yaml", "r")) + default_task_data["name"] = data["new_task_id"] + self.task_factory.update_task_descriptor_content(courseid, data["new_task_id"], default_task_data, "yaml") + if "task" in data: # Change tasks order From 52d7801de5b8ca73314796c21a5764da57e270db Mon Sep 17 00:00:00 2001 From: Juan David Valencia Date: Fri, 16 Mar 2018 09:08:12 -0500 Subject: [PATCH 4/5] =?UTF-8?q?Adding=20button=20temp=C4=BAates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inginious/frontend/webapp/templates/course_admin/task_list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inginious/frontend/webapp/templates/course_admin/task_list.html b/inginious/frontend/webapp/templates/course_admin/task_list.html index 906797f0..df42429a 100644 --- a/inginious/frontend/webapp/templates/course_admin/task_list.html +++ b/inginious/frontend/webapp/templates/course_admin/task_list.html @@ -81,7 +81,7 @@

Tasks
-
+
From f9f52d50c717fbe7399ac730a0ce1d437ea3cb53 Mon Sep 17 00:00:00 2001 From: Juan David Valencia Date: Fri, 16 Mar 2018 09:46:30 -0500 Subject: [PATCH 5/5] Adding validation of new task id --- .../frontend/webapp/pages/course_admin/task_list.py | 13 +++++++++---- inginious/frontend/webapp/static/js/studio.js | 11 +++++++++++ .../webapp/templates/course_admin/task_list.html | 2 +- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/inginious/frontend/webapp/pages/course_admin/task_list.py b/inginious/frontend/webapp/pages/course_admin/task_list.py index bf583d25..9a7b1168 100644 --- a/inginious/frontend/webapp/pages/course_admin/task_list.py +++ b/inginious/frontend/webapp/pages/course_admin/task_list.py @@ -5,9 +5,11 @@ from collections import OrderedDict +import re import web import yaml + from inginious.frontend.webapp.pages.course_admin.utils import make_csv, INGIniousAdminPage @@ -26,10 +28,13 @@ def POST_AUTH(self, courseid): # pylint: disable=arguments-differ if "new_task_id" in data: # Create new task - default_task_data = yaml.safe_load(open("task.yaml", "r")) - default_task_data["name"] = data["new_task_id"] - self.task_factory.update_task_descriptor_content(courseid, data["new_task_id"], default_task_data, "yaml") - + valid_expression = re.compile("^[a-zA-Z0-9_\-]+$") + if valid_expression.match(data["new_task_id"]): + default_task_data = yaml.safe_load(open("task.yaml", "r")) + default_task_data["name"] = data["new_task_id"] + self.task_factory.update_task_descriptor_content(courseid, data["new_task_id"], default_task_data, "yaml") + + if "task" in data: # Change tasks order diff --git a/inginious/frontend/webapp/static/js/studio.js b/inginious/frontend/webapp/static/js/studio.js index 7c372403..3f4071b2 100644 --- a/inginious/frontend/webapp/static/js/studio.js +++ b/inginious/frontend/webapp/static/js/studio.js @@ -7,6 +7,17 @@ /** * Redirect to the studio to create a new task */ + +function studio_validate_name_task(){ + var task_id = $('#new_task_id'); + if(!task_id.val().match(/^[a-zA-Z0-9_\-]+$/)) + { + alert('Task id should only contain alphanumeric characters (in addition to "_" and "-").'); + return; + } +} + + function studio_create_new_task() { var task_id = $('#new_task_id'); diff --git a/inginious/frontend/webapp/templates/course_admin/task_list.html b/inginious/frontend/webapp/templates/course_admin/task_list.html index df42429a..5b957bd0 100644 --- a/inginious/frontend/webapp/templates/course_admin/task_list.html +++ b/inginious/frontend/webapp/templates/course_admin/task_list.html @@ -81,7 +81,7 @@

Tasks
-
+