diff --git a/mc_backend/mcserver/app/__init__.py b/mc_backend/mcserver/app/__init__.py index 748933bce6ddf2d4884a391b4e84d0c4c95ede93..76f2e91961eae1ee6edec0335c032430e7d90c45 100644 --- a/mc_backend/mcserver/app/__init__.py +++ b/mc_backend/mcserver/app/__init__.py @@ -61,17 +61,16 @@ def create_app(cfg: Type[Config] = Config) -> Flask: return app -def full_init(app: Flask, is_csm: bool) -> None: +def full_init(app: Flask, cfg: Type[Config] = Config) -> None: """ Fully initializes the application, including logging.""" - if is_csm: - from mcserver.app.services import DatabaseService - DatabaseService.init_db_update_info() - DatabaseService.update_exercises(is_csm=is_csm) - DatabaseService.init_db_corpus() - if not app.config["TESTING"]: - from mcserver.app.services.corpusService import CorpusService - CorpusService.init_graphannis_logging() - start_updater(app) + from mcserver.app.services import DatabaseService + DatabaseService.init_db_update_info() + DatabaseService.update_exercises(is_csm=True) + DatabaseService.init_db_corpus() + if not cfg.TESTING: + from mcserver.app.services.corpusService import CorpusService + CorpusService.init_graphannis_logging() + start_updater(app) def init_app_common(cfg: Type[Config] = Config, is_csm: bool = False) -> Flask: @@ -91,14 +90,13 @@ def init_app_common(cfg: Type[Config] = Config, is_csm: bool = False) -> Flask: if is_csm: from mcserver.app.services.databaseService import DatabaseService DatabaseService.init_db_alembic() - tables: List[str] = [Config.DATABASE_TABLE_ALEMBIC, Config.DATABASE_TABLE_CORPUS, Config.DATABASE_TABLE_EXERCISE, - Config.DATABASE_TABLE_UPDATEINFO] - if any(not db.engine.dialect.has_table(db.engine, x) for x in tables): + if is_csm or cfg.TESTING: db.create_all() from mcserver.app.services.textService import TextService TextService.init_proper_nouns_list() TextService.init_stop_words_latin() - full_init(app, is_csm) + if is_csm: + full_init(app, cfg) return app diff --git a/mc_backend/mcserver/app/api/corpusListAPI.py b/mc_backend/mcserver/app/api/corpusListAPI.py index 10e9b08e8f046773bc8342b2132c053ca62d4311..aee95a4b8df4b04ea27fe130b3f841948d65c347 100644 --- a/mc_backend/mcserver/app/api/corpusListAPI.py +++ b/mc_backend/mcserver/app/api/corpusListAPI.py @@ -1,6 +1,4 @@ """The corpus list API. Add it to your REST API to provide users with a list of metadata for available texts.""" -from datetime import datetime - from connexion.lifecycle import ConnexionResponse from flask import Response from sqlalchemy.exc import OperationalError, InvalidRequestError diff --git a/mc_backend/tests.py b/mc_backend/tests.py index 6666e37e166f19e4bff442d1577dd07f3a322de7..9f0e8d887c7f55c6aa6d94ad588e9e9abccf1ef0 100644 --- a/mc_backend/tests.py +++ b/mc_backend/tests.py @@ -758,7 +758,7 @@ class CsmTestCase(unittest.TestCase): Mocks.app_dict[self.class_name].app.config["TESTING"] = False with patch.object(CorpusService, "init_graphannis_logging"): with patch.object(mcserver.app, "start_updater") as updater_mock: - full_init(Mocks.app_dict[self.class_name].app, True) + full_init(Mocks.app_dict[self.class_name].app) self.assertEqual(updater_mock.call_count, 1) Mocks.app_dict[self.class_name].app.config["TESTING"] = True db.session.query(UpdateInfo).delete() diff --git a/mc_frontend/nginx.conf b/mc_frontend/nginx.conf index 41e3accdfa4af90b0b769fe215190ecca93972cd..d63e5e315a964dc4d31c1d6f6ae3debf27b4b19c 100644 --- a/mc_frontend/nginx.conf +++ b/mc_frontend/nginx.conf @@ -32,10 +32,17 @@ http { index index.html index.htm; # enable CORS so the cordova files (config.xml) can be accessed from other domains add_header Access-Control-Allow-Origin *; - rewrite ^(.*)mc-service(.*)^ http://localhost:5000$2 last; try_files $uri $uri/ /index.html =404; } + # dirty hack to redirect the OpenAPI requests for their schema definition + location ~ /openapi.json$ { + resolver 127.0.0.11 valid=30s; + set $backend_host mcserver; + rewrite /(.*) /mc/$1 break; + proxy_pass http://$backend_host:5000; + } + location /mc-service/ { resolver 127.0.0.11 valid=30s; set $backend_host mcserver;