Unverified Commit 5e824113 authored by Peter Stanko's avatar Peter Stanko
Browse files

Better logging - new level and requests logging

- Logging requests using before_request
- new log level - Trace for more verbose data
- Some minor changes
parent f5875d06
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -69,8 +69,7 @@ def cli_init_data(env):
@click.option('-s', '--secret', help="User's secret")
def cli_users_create(name, password, secret):
    log.info(f"[CMD] Create User: {name}")
    user = manager.create_admin_user(name, password, secret)
    log.info(f"[CMD] Created User: {user}")
    manager.create_admin_user(name, password, secret)


@users_cli.command('set-password', help='Sets password for the user')
@@ -79,10 +78,16 @@ def cli_users_create(name, password, secret):
              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}")
    manager.update_users_password(name, password)


@users_cli.command('add-secret', help='Adds secret for the user')
@click.argument('name')
@click.option('-s', '--secret', help='Users password', prompt=True, hide_input=True)
def cli_users_add_secret(name, secret):
    log.info(f"[CMD] Add secret for the user: {name} ({secret})")
    manager.add_user_secret(name, secret)

@users_cli.command('delete', help="Deletes user")
@click.argument('name')
def cli_users_delete_user(name):
@@ -108,14 +113,13 @@ def cli_users_list():
@click.argument('name', )
def cli_course_creates(name):
    log.info(f"[CMD] Create Course: {name}")
    course = manager.create_course(name)
    log.info(f"[CMD] Created Course: {course}")
    manager.create_course(name)


@courses_cli.command('list', help="List courses")
def cli_courses_list():
    log.info(f"[CMD] List Courses")
    course = manager.list_courses()
    manager.list_courses()


@courses_cli.command(
@@ -125,8 +129,7 @@ def cli_courses_list():
@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}")
    manager.create_role(course, role_type=type, name=name)


@projects_cli.command('activate', help="activates project")
@@ -134,8 +137,7 @@ def cli_course_role_creates(course, type, name=None):
@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}")
    manager.activate_project(course, project)


@projects_cli.command('list', help="list projects")
+20 −5
Original line number Diff line number Diff line
@@ -7,10 +7,13 @@ from management.data import shared
from management.data.data_dev import init_dev_data
from management.data.data_prod import init_prod_data
from management.data.data_test import init_test_data
from portal import logger
from portal.database.models import Course, Role, Secret, Submission, SubmissionState, User
from portal.service.rest import RestService
from portal.tools import time

log = logger.get_logger(__name__)


class DataManagement(object):
    def __init__(self, app: Flask, db: SQLAlchemy):
@@ -49,7 +52,7 @@ class DataManagement(object):
            name(str): name of the user
        """
        with self.app.app_context():
            user = self.rest.users.find(name)
            user = self.rest.find.user(name)
            self.rest.users(user).delete()

    def update_users_password(self, name: str, password: str) -> User:
@@ -64,6 +67,7 @@ class DataManagement(object):
            user.set_password(password=password)
            self.db.session.add(user)
            self.db.session.commit()
            log.debug(f"[DATA] User's password updated: {user.log_name}")
            return user

    def create_admin_user(self, name: str, password: str, secret: str = None) -> User:
@@ -82,6 +86,7 @@ class DataManagement(object):
                password=password)
            if secret:
                user.secrets.append(Secret(name='admin-secret', value=secret))
            log.debug(f'[DATA] Created user: {user.log_name}')
            self.db.session.commit()
            return user

@@ -94,6 +99,7 @@ class DataManagement(object):
        with self.app.app_context():
            course = self.creator.scaffold_course(codename=name)
            self.db.session.commit()
            log.debug(f'[DATA] Created course: {course.log_name}')
            return course

    def create_role(self, course_name: str, role_type: str, name: str) -> Role:
@@ -109,6 +115,7 @@ class DataManagement(object):
            role = self.creator.scaffold_role(
                course, role_type=role_type, name=name)
            self.db.session.commit()
            log.debug(f'[DATA] Created role: {role.log_name}')
            return role

    def list_users(self):
@@ -124,6 +131,7 @@ class DataManagement(object):
            project.config.archive_from = None
            project.config.submissions_allowed_to = days_allow_to
            self.rest.projects.write_entity(project)
            log.info(f"[CMD] Project has been activated: {project.log_name}")
            return project

    def list_projects(self, course: str):
@@ -161,3 +169,10 @@ class DataManagement(object):
            for submission in Submission.query.all():
                Submission.query.filter_by(id=submission.id).delete()
            self.db.session.commit()

    def add_user_secret(self, name, secret):
        with self.app.app_context():
            user = self.rest.find.user(name)
            user.secrets.append(Secret(name='user-cli-secret', value=secret))
            log.debug(f'[DATA] Created secret for user: {user.log_name}')
            self.db.session.commit()
+28 −0
Original line number Diff line number Diff line
"""empty message

Revision ID: 0d5113dee43f
Revises: bd2121c14eaa
Create Date: 2018-09-23 09:42:45.421006

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '0d5113dee43f'
down_revision = 'bd2121c14eaa'
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.add_column('secret', sa.Column('updated_at', sa.TIMESTAMP(), nullable=True))
    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_column('secret', 'updated_at')
    # ### end Alembic commands ###
+9 −2
Original line number Diff line number Diff line
@@ -46,10 +46,10 @@ def configure_app(app: Flask, env: str = None,
    app.config.from_object(config_object)
    _load_portal_local(app, env, ignore_local)
    app.config['PORTAL_ENV'] = config_type
    log.debug("[INIT] Loaded config: ")
    if app.config.get('PORTAL_LOG_CONFIG'):
        log.trace("[INIT] Loaded config: ")
        for (key, val) in app.config.items():
            log.debug(f"[CONFIG] {key}={val}")
            log.trace(f"[CONFIG] {key}={val}")
    return app


@@ -121,6 +121,13 @@ def create_app(environment: str = None):
    configure_extensions(app)
    configure_async(app)
    rest.register_namespaces(app)

    @app.before_request
    def __before_request():
        from flask import request
        body = request.get_data(as_text=True) if request.data else ''
        app.logger.debug(f"[{request.method}] {request.url} - {body}")

    return app


+0 −1
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ class Config(object):
    JWT_SECRET_KEY = os.environ.get('JWT_SECRET_KEY') or 'super-safe'
    JWT_REFRESH_TOKEN_EXPIRES = datetime.timedelta(days=30)
    JWT_ACCESS_TOKEN_EXPIRES = datetime.timedelta(hours=1)
    LOGGER_NAME = "flask"
    API_PREFIX = os.environ.get('PORTAL_API_PREFIX', default="/api/v1.0/")
    CORS_SUPPORT_CREDENTIALS = True
    BROKER_URL = os.getenv('CELERY_BROKER_URL', 'redis://localhost:6379/0')
Loading