From 635562f966a63f3336e5c8db65edfbde3460ff28 Mon Sep 17 00:00:00 2001 From: Tom Kralidis Date: Tue, 9 Jan 2024 17:32:47 -0500 Subject: [PATCH] import Admin module based on runtime configuration (#1469) (#1485) --- pygeoapi/django_/views.py | 8 ++++---- pygeoapi/flask_app.py | 4 +++- pygeoapi/starlette_app.py | 4 +++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/pygeoapi/django_/views.py b/pygeoapi/django_/views.py index e46de8e..3630ced 100644 --- a/pygeoapi/django_/views.py +++ b/pygeoapi/django_/views.py @@ -39,7 +39,6 @@ from typing import Tuple, Dict, Mapping, Optional from django.conf import settings from django.http import HttpRequest, HttpResponse -from pygeoapi.admin import Admin from pygeoapi.api import API @@ -544,10 +543,11 @@ def _feed_response(request: HttpRequest, api_definition: str, *args, **kwargs) -> Tuple[Dict, int, str]: """Use pygeoapi api to process the input request""" - if 'admin' not in api_definition: - api_ = API(settings.PYGEOAPI_CONFIG) - else: + if 'admin' in api_definition and settings.PYGEOAPI_CONFIG['server'].get('admin'): # noqa + from pygeoapi.admin import Admin api_ = Admin(settings.PYGEOAPI_CONFIG) + else: + api_ = API(settings.PYGEOAPI_CONFIG) api = getattr(api_, api_definition) diff --git a/pygeoapi/flask_app.py b/pygeoapi/flask_app.py index f2fceaa..c2250c2 100644 --- a/pygeoapi/flask_app.py +++ b/pygeoapi/flask_app.py @@ -36,7 +36,6 @@ import click from flask import Flask, Blueprint, make_response, request, send_from_directory -from pygeoapi.admin import Admin from pygeoapi.api import API from pygeoapi.openapi import load_openapi_document from pygeoapi.config import get_config @@ -48,6 +47,9 @@ OPENAPI = load_openapi_document() API_RULES = get_api_rules(CONFIG) +if CONFIG['server'].get('admin'): + from pygeoapi.admin import Admin + STATIC_FOLDER = 'static' if 'templates' in CONFIG['server']: STATIC_FOLDER = CONFIG['server']['templates'].get('static', 'static') diff --git a/pygeoapi/starlette_app.py b/pygeoapi/starlette_app.py index b48088b..2424701 100644 --- a/pygeoapi/starlette_app.py +++ b/pygeoapi/starlette_app.py @@ -50,7 +50,6 @@ from starlette.responses import ( import uvicorn from pygeoapi.api import API -from pygeoapi.admin import Admin from pygeoapi.openapi import load_openapi_document from pygeoapi.config import get_config from pygeoapi.util import get_api_rules @@ -62,6 +61,9 @@ if 'PYGEOAPI_OPENAPI' not in os.environ: OPENAPI = load_openapi_document() +if CONFIG['server'].get('admin'): + from pygeoapi.admin import Admin + p = Path(__file__) APP = Starlette(debug=True)