Loading management/data/data_dev.py +6 −1 Original line number Original line Diff line number Diff line Loading @@ -63,6 +63,8 @@ def init_dev_data(app: Flask, db: SQLAlchemy): tc1_hw02 = factory.create_project( tc1_hw02 = factory.create_project( course=test_course1, name="HW02", codename='hw02', config=dict( course=test_course1, name="HW02", codename='hw02', config=dict( file_whitelist="main.cpp\nfunc.hpp\nfunc.cpp", file_whitelist="main.cpp\nfunc.hpp\nfunc.cpp", test_files_source='https://gitlab.fi.muni.cz/grp-kontr2/testing/test-repo', test_files_subdir='hw02', pre_submit_script="python for kontr pre", pre_submit_script="python for kontr pre", post_submit_script="python for kontr post", post_submit_script="python for kontr post", submission_scheduler_config="python for sub Q", submission_scheduler_config="python for sub Q", Loading @@ -75,7 +77,10 @@ def init_dev_data(app: Flask, db: SQLAlchemy): tc2_hw01 = factory.create_project( tc2_hw01 = factory.create_project( course=test_course2, name="HW01", codename='hw01', config=dict( course=test_course2, name="HW01", codename='hw01', config=dict( file_whitelist="main.c", pre_submit_script="python for kontr pre", file_whitelist="main.c", test_files_source='https://gitlab.fi.muni.cz/grp-kontr2/testing/test-repo', test_files_subdir='hw01', pre_submit_script="python for kontr pre", post_submit_script="python for kontr post", post_submit_script="python for kontr post", submission_scheduler_config="python for sub Q", submission_scheduler_config="python for sub Q", submission_parameters="{\"type\":\"text\"}", submission_parameters="{\"type\":\"text\"}", Loading management/data/shared.py +11 −0 Original line number Original line Diff line number Diff line Loading @@ -63,10 +63,21 @@ PERM_OWNER = dict( write_reviews_all=True write_reviews_all=True ) ) PERM_WORKER = dict( view_course_full=True, resubmit_submissions=True, evaluate_submissions=True, read_submissions_all=True, read_all_submission_files=True, write_reviews_all=True, create_submissions=True, ) PERMISSION_TYPES = dict( PERMISSION_TYPES = dict( teacher=PERM_TEACHER, teacher=PERM_TEACHER, student=PERM_STUDENT, student=PERM_STUDENT, owner=PERM_OWNER, owner=PERM_OWNER, worker=PERM_WORKER, ) ) Loading portal/database/models.py +1 −0 Original line number Original line Diff line number Diff line Loading @@ -539,6 +539,7 @@ class ProjectConfig(db.Model, EntityBase): submissions_cancellation_period = db.Column(db.Integer) submissions_cancellation_period = db.Column(db.Integer) test_files_source = db.Column(db.String(600)) # a git repository URL test_files_source = db.Column(db.String(600)) # a git repository URL test_files_subdir = db.Column(db.String(50)) # git subdir test_files_commit_hash = db.Column(db.String(64)) # hash of the latest revision of test_files test_files_commit_hash = db.Column(db.String(64)) # hash of the latest revision of test_files file_whitelist = db.Column(db.Text) file_whitelist = db.Column(db.Text) pre_submit_script = db.Column(db.Text) pre_submit_script = db.Column(db.Text) Loading portal/rest/projects.py +6 −3 Original line number Original line Diff line number Diff line import json from flask import request from flask import request from flask_jwt_extended import jwt_required from flask_jwt_extended import jwt_required from flask_restplus import Namespace, Resource from flask_restplus import Namespace, Resource from portal import logger from portal import logger from portal.database.models import ProjectState from portal.database.models import ClientType, ProjectState from portal.rest import rest_helpers from portal.rest import rest_helpers from portal.rest.schemas import config_schema, config_schema_reduced, project_schema, \ from portal.rest.schemas import config_schema, config_schema_reduced, project_schema, \ projects_schema, submission_create_schema, submission_schema, submissions_schema projects_schema, submission_create_schema, submission_schema, submissions_schema Loading Loading @@ -204,6 +202,11 @@ class ProjectTestFiles(Resource): def _check_submission_create(client, project): def _check_submission_create(client, project): if client.type == ClientType.USER: user = general.find_user(client.id) # TODO: Might be good to add check whether it is in DEBUG Mode if user.is_admin: return True if project.state(timestamp=time.current_time()) != ProjectState.ACTIVE: if project.state(timestamp=time.current_time()) != ProjectState.ACTIVE: raise SubmissionRefusedError(f"Project {project.name} not active.") raise SubmissionRefusedError(f"Project {project.name} not active.") if not ProjectService(project).can_create_submission(client): if not ProjectService(project).can_create_submission(client): Loading portal/rest/schemas.py +1 −0 Original line number Original line Diff line number Diff line Loading @@ -177,6 +177,7 @@ class ProjectConfigSchema(BaseSchema, Schema): project = NESTED['project'] project = NESTED['project'] submissions_cancellation_period = fields.Number(allow_none=True) submissions_cancellation_period = fields.Number(allow_none=True) test_files_source = fields.Str(allow_none=True) test_files_source = fields.Str(allow_none=True) test_files_subdir = fields.Str(allow_none=True) file_whitelist = fields.Str(allow_none=True) file_whitelist = fields.Str(allow_none=True) pre_submit_script = fields.Str(allow_none=True) pre_submit_script = fields.Str(allow_none=True) post_submit_script = fields.Str(allow_none=True) post_submit_script = fields.Str(allow_none=True) Loading Loading
management/data/data_dev.py +6 −1 Original line number Original line Diff line number Diff line Loading @@ -63,6 +63,8 @@ def init_dev_data(app: Flask, db: SQLAlchemy): tc1_hw02 = factory.create_project( tc1_hw02 = factory.create_project( course=test_course1, name="HW02", codename='hw02', config=dict( course=test_course1, name="HW02", codename='hw02', config=dict( file_whitelist="main.cpp\nfunc.hpp\nfunc.cpp", file_whitelist="main.cpp\nfunc.hpp\nfunc.cpp", test_files_source='https://gitlab.fi.muni.cz/grp-kontr2/testing/test-repo', test_files_subdir='hw02', pre_submit_script="python for kontr pre", pre_submit_script="python for kontr pre", post_submit_script="python for kontr post", post_submit_script="python for kontr post", submission_scheduler_config="python for sub Q", submission_scheduler_config="python for sub Q", Loading @@ -75,7 +77,10 @@ def init_dev_data(app: Flask, db: SQLAlchemy): tc2_hw01 = factory.create_project( tc2_hw01 = factory.create_project( course=test_course2, name="HW01", codename='hw01', config=dict( course=test_course2, name="HW01", codename='hw01', config=dict( file_whitelist="main.c", pre_submit_script="python for kontr pre", file_whitelist="main.c", test_files_source='https://gitlab.fi.muni.cz/grp-kontr2/testing/test-repo', test_files_subdir='hw01', pre_submit_script="python for kontr pre", post_submit_script="python for kontr post", post_submit_script="python for kontr post", submission_scheduler_config="python for sub Q", submission_scheduler_config="python for sub Q", submission_parameters="{\"type\":\"text\"}", submission_parameters="{\"type\":\"text\"}", Loading
management/data/shared.py +11 −0 Original line number Original line Diff line number Diff line Loading @@ -63,10 +63,21 @@ PERM_OWNER = dict( write_reviews_all=True write_reviews_all=True ) ) PERM_WORKER = dict( view_course_full=True, resubmit_submissions=True, evaluate_submissions=True, read_submissions_all=True, read_all_submission_files=True, write_reviews_all=True, create_submissions=True, ) PERMISSION_TYPES = dict( PERMISSION_TYPES = dict( teacher=PERM_TEACHER, teacher=PERM_TEACHER, student=PERM_STUDENT, student=PERM_STUDENT, owner=PERM_OWNER, owner=PERM_OWNER, worker=PERM_WORKER, ) ) Loading
portal/database/models.py +1 −0 Original line number Original line Diff line number Diff line Loading @@ -539,6 +539,7 @@ class ProjectConfig(db.Model, EntityBase): submissions_cancellation_period = db.Column(db.Integer) submissions_cancellation_period = db.Column(db.Integer) test_files_source = db.Column(db.String(600)) # a git repository URL test_files_source = db.Column(db.String(600)) # a git repository URL test_files_subdir = db.Column(db.String(50)) # git subdir test_files_commit_hash = db.Column(db.String(64)) # hash of the latest revision of test_files test_files_commit_hash = db.Column(db.String(64)) # hash of the latest revision of test_files file_whitelist = db.Column(db.Text) file_whitelist = db.Column(db.Text) pre_submit_script = db.Column(db.Text) pre_submit_script = db.Column(db.Text) Loading
portal/rest/projects.py +6 −3 Original line number Original line Diff line number Diff line import json from flask import request from flask import request from flask_jwt_extended import jwt_required from flask_jwt_extended import jwt_required from flask_restplus import Namespace, Resource from flask_restplus import Namespace, Resource from portal import logger from portal import logger from portal.database.models import ProjectState from portal.database.models import ClientType, ProjectState from portal.rest import rest_helpers from portal.rest import rest_helpers from portal.rest.schemas import config_schema, config_schema_reduced, project_schema, \ from portal.rest.schemas import config_schema, config_schema_reduced, project_schema, \ projects_schema, submission_create_schema, submission_schema, submissions_schema projects_schema, submission_create_schema, submission_schema, submissions_schema Loading Loading @@ -204,6 +202,11 @@ class ProjectTestFiles(Resource): def _check_submission_create(client, project): def _check_submission_create(client, project): if client.type == ClientType.USER: user = general.find_user(client.id) # TODO: Might be good to add check whether it is in DEBUG Mode if user.is_admin: return True if project.state(timestamp=time.current_time()) != ProjectState.ACTIVE: if project.state(timestamp=time.current_time()) != ProjectState.ACTIVE: raise SubmissionRefusedError(f"Project {project.name} not active.") raise SubmissionRefusedError(f"Project {project.name} not active.") if not ProjectService(project).can_create_submission(client): if not ProjectService(project).can_create_submission(client): Loading
portal/rest/schemas.py +1 −0 Original line number Original line Diff line number Diff line Loading @@ -177,6 +177,7 @@ class ProjectConfigSchema(BaseSchema, Schema): project = NESTED['project'] project = NESTED['project'] submissions_cancellation_period = fields.Number(allow_none=True) submissions_cancellation_period = fields.Number(allow_none=True) test_files_source = fields.Str(allow_none=True) test_files_source = fields.Str(allow_none=True) test_files_subdir = fields.Str(allow_none=True) file_whitelist = fields.Str(allow_none=True) file_whitelist = fields.Str(allow_none=True) pre_submit_script = fields.Str(allow_none=True) pre_submit_script = fields.Str(allow_none=True) post_submit_script = fields.Str(allow_none=True) post_submit_script = fields.Str(allow_none=True) Loading