Source code for magpie.api.home.home

import logging
from copy import deepcopy

from pyramid.httpexceptions import HTTPOk
from pyramid.security import NO_PERMISSION_REQUIRED
from pyramid.view import view_config

from magpie import __meta__
from magpie.api import exception as ax
from magpie.api import schemas as s
from magpie.db import get_database_revision
from magpie.utils import CONTENT_TYPE_JSON, get_logger, get_magpie_url, print_log

[docs] LOGGER = get_logger(__name__)
@s.HomepageAPI.get(tags=[s.APITag], api_security=s.SecurityEveryoneAPI, response_schemas=s.Homepage_GET_responses)
[docs] def get_homepage(request): # noqa: W0212 """ Magpie API homepage (only if Magpie UI is not enabled). """ body = deepcopy(s.InfoAPI) body.update({ "title": s.TitleAPI, "name": __meta__.__package__, "documentation": get_magpie_url() + s.SwaggerAPI.path }) return ax.valid_http(http_success=HTTPOk, content=body, content_type=CONTENT_TYPE_JSON, detail=s.Version_GET_OkResponseSchema.description)
@s.VersionAPI.get(tags=[s.APITag], api_security=s.SecurityEveryoneAPI, response_schemas=s.Version_GET_responses) @view_config(route_name=s.VersionAPI.name, request_method="GET", permission=NO_PERMISSION_REQUIRED)
[docs] def get_version(request): """ Version information of the API. """ version_db = None try: version_db = get_database_revision(request.db) except Exception as exc: print_log("Failed to retrieve database revision: [{!r}]".format(exc), LOGGER, logging.WARNING) version = { "version": __meta__.__version__, "db_version": version_db } return ax.valid_http(http_success=HTTPOk, content=version, content_type=CONTENT_TYPE_JSON, detail=s.Version_GET_OkResponseSchema.description)