Source code for grader_service.server

# Copyright (c) 2022, TU Wien
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

import os
from tornado import web
from traitlets import config
from traitlets.traitlets import Integer, Unicode


[docs]class GraderServer(config.LoggingConfigurable, web.Application): # As an unmanage jupyter hub service, the application gets these environment variables from the hub # see: https://jupyterhub.readthedocs.io/en/stable/reference/services.html#launching-a-hub-managed-service hub_service_name = Unicode(os.environ.get("JUPYTERHUB_SERVICE_NAME", "")).tag( config=True ) hub_api_token = Unicode(os.environ.get("JUPYTERHUB_API_TOKEN"), allow_none=False).tag(config=True) hub_api_url = Unicode(os.environ.get("JUPYTERHUB_API_URL"), allow_none=False).tag(config=True) hub_base_url = Unicode(os.environ.get("JUPYTERHUB_BASE_URL"), allow_none=False).tag(config=True) hub_service_prefix = Unicode(os.environ.get("JUPYTERHUB_SERVICE_PREFIX"), allow_none=False).tag( config=True ) hub_service_url = Unicode(os.environ.get("JUPYTERHUB_SERVICE_URL"), allow_none=False).tag( config=True ) max_user_cookie_age_days = Integer( 15, help="Time in days until cookie expires." ).tag(config=True) max_token_cookie_age_minutes = Integer( 10, help="Time in minutes until a token cookie expires." ).tag(config=True) def __init__(self, grader_service_dir: str, base_url: str, **kwargs): super().__init__(**kwargs) self.grader_service_dir = grader_service_dir self.base_url = base_url self.log.info(f"hub_service_name - { self.hub_service_name }") self.log.info(f"hub_api_token - {self.hub_api_token}") self.log.info(f"hub_api_url - {self.hub_api_url}") self.log.info(f"hub_base_url - {self.hub_base_url}") @property def max_token_cookie_age_days(self): return self.max_token_cookie_age_minutes / 1440