From 83d6388e354ffc22ce5452f83cfff77cb7431a34 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Thu, 7 Oct 2021 13:57:39 +0300 Subject: [PATCH] move infobases api --- app/api/infobases.py | 39 +++++++++++++++++++++++++++++++++++++++ pub1c-rest.py | 35 +---------------------------------- 2 files changed, 40 insertions(+), 34 deletions(-) create mode 100644 app/api/infobases.py diff --git a/app/api/infobases.py b/app/api/infobases.py new file mode 100644 index 0000000..e3c1c2c --- /dev/null +++ b/app/api/infobases.py @@ -0,0 +1,39 @@ +from typing import List, Dict + +from flask_restful import Resource + +from app.glob import get_config, get_manager +from app.manager import infobase_data_blank +from brackets import get_infobases as br_get_infobases + + +def load_infobases(config) -> List[str]: + result = [] + if 'infobases' in config and 'server_file' in config['infobases']: + result = br_get_infobases(config['infobases']['server_file']) + return result + + +class InfobasesAvailable(Resource): + def get(self) -> List[str]: + cfg = get_config() + bases = load_infobases(cfg) + return bases + + +class InfobasesAll(Resource): + def get(self) -> List[Dict[str, str]]: + cfg = get_config() + manager = get_manager() + infobase_names = load_infobases(cfg) + pubs = manager.publications() + result: List[Dict[str, str]] = [] + for name in infobase_names: + publicated = False + for pub in filter(lambda x: x["name"] == name, pubs): + publicated = True + result.append(pub) + break + if not publicated: + result.append(infobase_data_blank(name)) + return result \ No newline at end of file diff --git a/pub1c-rest.py b/pub1c-rest.py index c45c1ef..2ccb6bc 100644 --- a/pub1c-rest.py +++ b/pub1c-rest.py @@ -7,10 +7,9 @@ from flask_cors import CORS from app.api.apache_restart import ApacheRestartFlag from app.api.index import APIIndex +from app.api.infobases import InfobasesAvailable, InfobasesAll from app.glob import get_config, get_manager -from app.manager import infobase_data_blank from app.utils import validate_url -from brackets import get_infobases as br_get_infobases pub_parser = reqparse.RequestParser() pub_parser.add_argument('url', type=str) @@ -27,20 +26,6 @@ remove_parser = reqparse.RequestParser() remove_parser.add_argument('force', type=bool, default=False) -def load_infobases(config) -> List[str]: - result = [] - if 'infobases' in config and 'server_file' in config['infobases']: - result = br_get_infobases(config['infobases']['server_file']) - return result - - -class InfobasesAvailable(Resource): - def get(self) -> List[str]: - cfg = get_config() - bases = load_infobases(cfg) - return bases - - class Config(Resource): def get(self): return get_config() @@ -52,24 +37,6 @@ class ConfigTest(Resource): return manager.check() -class InfobasesAll(Resource): - def get(self) -> List[Dict[str, str]]: - cfg = get_config() - manager = get_manager() - infobase_names = load_infobases(cfg) - pubs = manager.publications() - result: List[Dict[str, str]] = [] - for name in infobase_names: - publicated = False - for pub in filter(lambda x: x["name"] == name, pubs): - publicated = True - result.append(pub) - break - if not publicated: - result.append(infobase_data_blank(name)) - return result - - class Publications(Resource): def get(self) -> List[Dict[str, str]]: manager = get_manager()