Newer
Older
"""
Main application module
- Creates instance of the flask app named app
- registers commands
"""
import logging as logger
import portal.logging as logging_config
from management.data import DataManagement
logging_config.load_config()
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 management')
submissions_cli = AppGroup('submissions', help='Submissions management')
projects_cli = AppGroup('projects', help='Projects management')
app.cli.add_command(data_cli)
app.cli.add_command(users_cli)
app.cli.add_command(courses_cli)
app.cli.add_command(submissions_cli)
app.cli.add_command(projects_cli)
manager = DataManagement(app, db)
celery = portal.get_celery(app)
@devel_cli.command('run', help='Runs the devel server with initializes db')
@click.option('-p', '--port', default=8000)
@click.pass_context
def cli_run_devel(ctx, port):
manager.reset_db()
manager.create_admin_user('admin', '789789')
manager.init_data()
ctx.forward(run_command, port)
#
# Data related commands
#
@data_cli.command('init', help='Initializes sample data')
@click.argument('env')
def cli_init_data(env):
#
# Users related commands
#
@users_cli.command('create', help='Create admin user')
@click.option('-p', '--password', help='Users password', prompt=True, hide_input=True,
confirmation_prompt=True)
def cli_users_create(name, password):
log.info(f"[CMD] Create User: {name}")
user = manager.create_admin_user(name, password)
log.info(f"[CMD] Created User: {user}")
@users_cli.command('set-password', help='Sets password for the user')
@click.option('-p', '--password', help='Users password', prompt=True, hide_input=True,
confirmation_prompt=True)
def cli_users_set_password(name, password):
log.info(f"[CMD] Update password for user: {name}")
user = manager.update_users_password(name, password)
log.info(f"[CMD] Updated password for user: {user}")
@users_cli.command('delete', help="Deletes user")
@click.argument('name')
def cli_users_delete_user(name):
log.info(f"[CMD] Delete user: {name}")
ask: str = click.prompt('Type Y/y for confirmation', hide_input=True)
if ask.lower()[0] != 'y':
return
manager.delete_user(name)
log.info(f"[CMD] User deleted: {name}")
@users_cli.command('list', help='List all users')
def cli_users_list():
log.info(f'[CMD] Listing users')
manager.list_users()
#
# Courses related commands
#
@courses_cli.command('create', help="Creates course with default roles")
def cli_course_creates(name):
log.info(f"[CMD] Create Course: {name}")
course = manager.create_course(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')
@click.argument('type')
@click.argument('name', required=False)
def cli_course_role_creates(course, type, name=None):
log.info(f"[CMD] Create Role: \"{type}\" in the \"{course}\"")
course = manager.create_role(course, role_type=type, name=name)
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)
@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")

Peter Stanko
committed
def cli_submissions_list_all():
log.info(f"[CMD] List all submissions")
manager.list_all_submissions()

Peter Stanko
committed
@submissions_cli.command('clean-all', help="Clean all submissions")
def cli_submissions_list_all():
log.info(f"[CMD] Clean all submissions")
manager.clean_all_submissions()