Unverified Commit 79641561 authored by Peter Stanko's avatar Peter Stanko
Browse files

Project files subdir

parent 10339990
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -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",
@@ -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\"}",
+11 −0
Original line number Original line Diff line number Diff line
@@ -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,
)
)




+1 −0
Original line number Original line Diff line number Diff line
@@ -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)
+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
@@ -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):
+1 −0
Original line number Original line Diff line number Diff line
@@ -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)