From 434dddaceeb631f5734cd25a584a318d72d36510 Mon Sep 17 00:00:00 2001 From: Peter Stanko <peter.stanko0@gmail.com> Date: Mon, 13 Aug 2018 15:27:03 +0200 Subject: [PATCH] Submissions cancelation --- app.py | 22 +++++++++++++++++++++- management/data/__init__.py | 24 ++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index 2ebae75..54245c2 100644 --- a/app.py +++ b/app.py @@ -3,8 +3,9 @@ Main application module - Creates instance of the flask app named app - registers commands """ -import click import logging as logger + +import click from flask import Flask from flask.cli import AppGroup, run_command @@ -145,5 +146,24 @@ def cli_projects_list(course): manager.list_projects(course) +@submissions_cli.command('cancel-all', help="Cancel all submissions") +def cli_submissions_cancel_all(): + log.info(f"[CMD] Cancelling all submissions") + manager.cancel_all_submissions() + + +@submissions_cli.command('cancel', help="Cancel submission") +@click.argument('sid') +def cli_submissions_cancel(sid): + log.info(f"[CMD] Cancelling all submissions") + manager.cancel_submission(sid) + + +@submissions_cli.command('list', help="List all submissions") +def cli_submissions_cancel_all(): + log.info(f"[CMD] List all submissions") + manager.list_all_submissions() + + if __name__ == '__main__': cli_run_devel() diff --git a/management/data/__init__.py b/management/data/__init__.py index 4365185..e8bea64 100644 --- a/management/data/__init__.py +++ b/management/data/__init__.py @@ -6,7 +6,7 @@ from management.data import shared from management.data.data_test import init_test_data from management.data.data_dev import init_dev_data from management.data.data_prod import init_prod_data -from portal.database.models import Course, Role, User +from portal.database.models import Course, Role, User, Submission, SubmissionState from portal.service import general from portal.service.general import write_entity from portal.tools import time @@ -121,7 +121,6 @@ class DataManagement(object): project.config.archive_from = None project.config.submissions_allowed_to = days_allow_to write_entity(project) - self.db.session.commit() return project def list_projects(self, course: str): @@ -134,3 +133,24 @@ class DataManagement(object): with self.app.app_context(): for course in Course.query.all(): print(f"{course.codename}: {course.name}") + + def list_all_submissions(self): + with self.app.app_context(): + for submission in Submission.query.all(): + print(f"{submission.id} [{submission.state}]: {submission.user.username}") + + def cancel_all_submissions(self): + with self.app.app_context(): + for submission in Submission.query.all(): + submission.change_state(SubmissionState.CANCELLED) + write_entity(submission) + self.db.session.commit() + + def cancel_submission(self, sid): + with self.app.app_context(): + submission = general.find_submission(sid) + submission.change_state(SubmissionState.CANCELLED) + write_entity(submission) + self.db.session.commit() + + -- GitLab