Skip to content
Snippets Groups Projects
Verified Commit 1aa46130 authored by Peter Stanko's avatar Peter Stanko
Browse files

Activate project

parent b5780c76
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -33,4 +33,4 @@ pytest-mock = "*"
mock = "*"
[requires]
python_version = "3.7"
python_version = "3.6"
......@@ -20,8 +20,9 @@ log = logger.getLogger(__name__)
data_cli = AppGroup('data', help='Sample data initialization')
users_cli = AppGroup('users', help='Users management')
courses_cli = AppGroup('courses', help='Courses management')
devel_cli = AppGroup('devel', help='Development options')
submissions_cli = AppGroup('submissions', help='Submissions options')
devel_cli = AppGroup('devel', help='Development management')
submissions_cli = AppGroup('submissions', help='Submissions management')
projects_cli = AppGroup('projects', help='Projects management')
app: Flask = create_app()
......@@ -29,6 +30,8 @@ app.cli.add_command(data_cli)
app.cli.add_command(users_cli)
app.cli.add_command(courses_cli)
app.cli.add_command(devel_cli)
app.cli.add_command(submissions_cli)
app.cli.add_command(projects_cli)
manager = DataManagement(app, db)
......@@ -109,6 +112,12 @@ def cli_course_creates(name):
log.info(f"[CMD] Created Course: {course}")
@courses_cli.command('list', help="List courses")
def cli_courses_list():
log.info(f"[CMD] List Courses")
course = manager.list_courses()
@courses_cli.command(
'create-role', help="Creates role by it's type in the course")
@click.argument('course')
......@@ -120,5 +129,21 @@ def cli_course_role_creates(course, type, name=None):
log.info(f"[CMD] Created Course: {course}")
@projects_cli.command('activate', help="activates project")
@click.option('-p', '--project')
@click.option('-c', '--course')
def cli_projects_activate(project, course):
log.info(f"[CMD] Activating project: {project} in course {course}")
project = manager.activate_project(course, project)
log.info(f"[CMD] Project has been activated: {project}")
@projects_cli.command('list', help="list projects")
@click.option('-c', '--course')
def cli_projects_list(course):
log.info(f"[CMD] Listing projects in the course {course}")
manager.list_projects(course)
if __name__ == '__main__':
cli_run_devel()
import datetime
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
......@@ -7,6 +8,8 @@ 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.service import general
from portal.service.general import write_entity
from portal.tools import time
class DataManagement(object):
......@@ -75,7 +78,7 @@ class DataManagement(object):
name=name,
admin=True,
password=password
)
)
self.db.session.commit()
return user
......@@ -109,3 +112,25 @@ class DataManagement(object):
with self.app.app_context():
for user in User.query.all():
print(f"{user.username} ({user.id}) - {user.created_at}")
def activate_project(self, course: str, project: str):
with self.app.app_context():
course = general.find_course(course)
project = general.find_project(course, project)
days_allow_to = time.current_time() + datetime.timedelta(days=1000)
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):
with self.app.app_context():
course = general.find_course(course)
for project in course.projects:
print(f"{project.name}: {project.description}")
def list_courses(self):
with self.app.app_context():
for course in Course.query.all():
print(f"{course.codename}: {course.name}")
......@@ -552,10 +552,10 @@ class ProjectConfig(db.Model, EntityBase):
submissions_allowed_to = normalize_time(submissions_allowed_to)
if self.submissions_allowed_from is not None and \
self.submissions_allowed_from > submissions_allowed_to:
raise PortalDbError()
raise PortalDbError("Submissions allowed from later than to")
if self.archive_from is not None and \
self.archive_from < submissions_allowed_to:
raise PortalDbError()
raise PortalDbError("Archive from is lesser than submissions allowed to")
self._submissions_allowed_to = time.strip_seconds(
submissions_allowed_to)
......@@ -565,6 +565,9 @@ class ProjectConfig(db.Model, EntityBase):
Args:
archive_from(time): Time from which all the submissions are allowed to archive
"""
if archive_from is None:
self._archive_from = None
return
archive_from = normalize_time(archive_from)
if self.submissions_allowed_from is not None and \
self.submissions_allowed_from > archive_from:
......
......@@ -77,7 +77,7 @@ def update_project(project: Project, data: dict) -> Project:
def __set_project_data(project: Project, data: dict) -> Project:
return general.update_entity(project, data, allowed=['name'])
return general.update_entity(project, data, allowed=['name', 'description'])
def create_project(course: Course, data: dict) -> Project:
......
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