Skip to content
Snippets Groups Projects
Unverified Commit 79641561 authored by Peter Stanko's avatar Peter Stanko
Browse files

Project files subdir

parent 10339990
No related branches found
No related tags found
No related merge requests found
......@@ -63,6 +63,8 @@ def init_dev_data(app: Flask, db: SQLAlchemy):
tc1_hw02 = factory.create_project(
course=test_course1, name="HW02", codename='hw02', config=dict(
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",
post_submit_script="python for kontr post",
submission_scheduler_config="python for sub Q",
......@@ -75,7 +77,10 @@ def init_dev_data(app: Flask, db: SQLAlchemy):
tc2_hw01 = factory.create_project(
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",
submission_scheduler_config="python for sub Q",
submission_parameters="{\"type\":\"text\"}",
......
......@@ -63,10 +63,21 @@ PERM_OWNER = dict(
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(
teacher=PERM_TEACHER,
student=PERM_STUDENT,
owner=PERM_OWNER,
worker=PERM_WORKER,
)
......
......@@ -539,6 +539,7 @@ class ProjectConfig(db.Model, EntityBase):
submissions_cancellation_period = db.Column(db.Integer)
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
file_whitelist = db.Column(db.Text)
pre_submit_script = db.Column(db.Text)
......
import json
from flask import request
from flask_jwt_extended import jwt_required
from flask_restplus import Namespace, Resource
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.schemas import config_schema, config_schema_reduced, project_schema, \
projects_schema, submission_create_schema, submission_schema, submissions_schema
......@@ -204,6 +202,11 @@ class ProjectTestFiles(Resource):
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:
raise SubmissionRefusedError(f"Project {project.name} not active.")
if not ProjectService(project).can_create_submission(client):
......
......@@ -177,6 +177,7 @@ class ProjectConfigSchema(BaseSchema, Schema):
project = NESTED['project']
submissions_cancellation_period = fields.Number(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)
pre_submit_script = fields.Str(allow_none=True)
post_submit_script = fields.Str(allow_none=True)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment