C-Dash: Enable reading of constants from env variables
[csit.git] / csit.infra.dash / app / cdash / __init__.py
index dd1dc20..bf761da 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2023 Cisco and/or its affiliates.
+# Copyright (c) 2024 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
@@ -27,6 +27,7 @@ from .data.data import Data
 def init_app():
     """Construct core Flask application with embedded Dash app.
     """
+
     logging.basicConfig(
         format=C.LOG_FORMAT,
         datefmt=C.LOG_DATE_FORMAT,
@@ -67,43 +68,59 @@ def init_app():
         ).read_all_data(days=time_period)
 
         # Import Dash applications.
-        from .news.news import init_news
-        app = init_news(
-            app,
-            data_stats=data["statistics"],
-            data_trending=data["trending"]
-        )
-
-        from .stats.stats import init_stats
-        app = init_stats(
-            app,
-            data_stats=data["statistics"],
-            data_trending=data["trending"]
-        )
-
-        from .trending.trending import init_trending
-        app = init_trending(
-            app,
-            data_trending=data["trending"]
-        )
-
-        from .report.report import init_report
-        app = init_report(
-            app,
-            data_iterative=data["iterative"]
-        )
-
-        from .comparisons.comparisons import init_comparisons
-        app = init_comparisons(
-            app,
-            data_iterative=data["iterative"]
-        )
-
-        from .coverage.coverage import init_coverage
-        app = init_coverage(
-            app,
-            data_coverage=data["coverage"]
-        )
+        err_msg = "Application not loaded, no data available."
+        logging.info("\n\nStarting the applications:\n" + "-" * 26 + "\n")
+
+        if C.START_FAILURES:
+            logging.info(C.NEWS_TITLE)
+            if data["statistics"].empty or data["trending"].empty:
+                logging.error(err_msg)
+            else:
+                from .news.news import init_news
+                app = init_news(app, data["statistics"], data["trending"])
+        if C.START_STATISTICS:
+            logging.info(C.STATS_TITLE)
+            if data["statistics"].empty or data["trending"].empty:
+                logging.error(err_msg)
+            else:
+                from .stats.stats import init_stats
+                app = init_stats(app, data["statistics"], data["trending"])
+        if C.START_TRENDING:
+            logging.info(C.TREND_TITLE)
+            if data["trending"].empty:
+                logging.error(err_msg)
+            else:
+                from .trending.trending import init_trending
+                app = init_trending(app, data["trending"])
+        if C.START_REPORT:
+            logging.info(C.REPORT_TITLE)
+            if data["iterative"].empty:
+                logging.error(err_msg)
+            else:
+                from .report.report import init_report
+                app = init_report(app, data["iterative"])
+        if C.START_COMPARISONS:
+            logging.info(C.COMP_TITLE)
+            if data["iterative"].empty:
+                logging.error(err_msg)
+            else:
+                from .comparisons.comparisons import init_comparisons
+                app = init_comparisons(app, data["iterative"])
+        if C.START_COVERAGE:
+            logging.info(C.COVERAGE_TITLE)
+            if data["coverage"].empty:
+                logging.error(err_msg)
+            else:
+                from .coverage.coverage import init_coverage
+                app = init_coverage(app, data["coverage"])
+        if C.START_SEARCH:
+            logging.info(C.SEARCH_TITLE)
+            if all((data["trending"].empty, data["iterative"].empty,
+                    data["coverage"].empty)):
+                logging.error(err_msg)
+            else:
+                from .search.search import init_search
+                app = init_search(app, data)
 
     return app