From 6eb75fa43a721f770cc71b85413fb5c8654ef35e Mon Sep 17 00:00:00 2001
From: thomaswoehlke <thomas.woehlke@gmail.com>
Date: Thu, 29 Apr 2021 20:12:09 +0200
Subject: [PATCH] working on: 0.0.32 Release

---
 .../application/application_views.py          |   4 +-
 .../application/navigation/navbar.html        |   2 +
 .../application/navigation/navtabs.html       |   6 +
 .../divi/navigation/divi_navbar_dropdown.html |  34 ++---
 .../divi/navigation/divi_navtabs.html         |  16 +-
 .../intensivregister_test/__init__.py         |   0
 .../divi_test_service.py                      |  44 ++++++
 .../intensivregister_test/divi_test_views.py  | 137 ++++++++++++++++++
 .../templates/__init__.py                     |   0
 .../templates/who_test/divi_tests.html        |  59 ++++++++
 10 files changed, 276 insertions(+), 26 deletions(-)
 create mode 100644 src/covid19/blueprints/intensivregister_test/__init__.py
 create mode 100644 src/covid19/blueprints/intensivregister_test/divi_test_service.py
 create mode 100644 src/covid19/blueprints/intensivregister_test/divi_test_views.py
 create mode 100644 src/covid19/blueprints/intensivregister_test/templates/__init__.py
 create mode 100644 src/covid19/blueprints/intensivregister_test/templates/who_test/divi_tests.html

diff --git a/src/covid19/blueprints/application/application_views.py b/src/covid19/blueprints/application/application_views.py
index 758e28cd..9aa4ef90 100644
--- a/src/covid19/blueprints/application/application_views.py
+++ b/src/covid19/blueprints/application/application_views.py
@@ -12,7 +12,7 @@ from covid19.blueprints.who.who_views import app_who
 from covid19.blueprints.owid.owid_views import app_owid
 from covid19.blueprints.user.user_views import app_user
 from covid19.blueprints.intensivregister.divi_views import app_divi
-
+from covid19.blueprints.intensivregister_test.divi_test_views import app_divi_test
 
 from covid19.blueprints.owid_test.owid_test_views import app_owid_test
 from covid19.blueprints.who_test.who_test_views import app_who_test
@@ -32,6 +32,8 @@ app.register_blueprint(app_divi, url_prefix='/divi')
 
 app.register_blueprint(app_owid_test, url_prefix='/owid/test')
 app.register_blueprint(app_who_test, url_prefix='/who/test')
+app.register_blueprint(app_divi_test, url_prefix='/divi/test')
+
 
 ############################################################################################
 #
diff --git a/src/covid19/blueprints/application/templates/application/navigation/navbar.html b/src/covid19/blueprints/application/templates/application/navigation/navbar.html
index 04b4adea..7c025ece 100644
--- a/src/covid19/blueprints/application/templates/application/navigation/navbar.html
+++ b/src/covid19/blueprints/application/templates/application/navigation/navbar.html
@@ -16,6 +16,8 @@
 
                     {% include 'who/navigation/who_navbar_dropdown.html' %}
 
+                    {% include 'divi/navigation/divi_navbar_dropdown.html' %}
+
                     {% include 'ecdc/navigation/ecdc_navbar_dropdown.html' %}
 
                     {% include 'owid/navigation/owid_navbar_dropdown.html' %}
diff --git a/src/covid19/blueprints/application/templates/application/navigation/navtabs.html b/src/covid19/blueprints/application/templates/application/navigation/navtabs.html
index 44fb12b4..6e0a6f43 100644
--- a/src/covid19/blueprints/application/templates/application/navigation/navtabs.html
+++ b/src/covid19/blueprints/application/templates/application/navigation/navtabs.html
@@ -12,6 +12,12 @@
                             WHO
                         </a>
                     </li>
+                    <li class="nav-item">
+                        <a class="nav-link"
+                           href="{{ url_for( 'divi.url_divi_info') }}">
+                            DIVI
+                        </a>
+                    </li>
                     <li class="nav-item">
                         <a class="nav-link"
                            href="{{ url_for( 'ecdc.url_ecdc_info') }}">
diff --git a/src/covid19/blueprints/intensivregister/templates/divi/navigation/divi_navbar_dropdown.html b/src/covid19/blueprints/intensivregister/templates/divi/navigation/divi_navbar_dropdown.html
index efed2bfd..42eee206 100644
--- a/src/covid19/blueprints/intensivregister/templates/divi/navigation/divi_navbar_dropdown.html
+++ b/src/covid19/blueprints/intensivregister/templates/divi/navigation/divi_navbar_dropdown.html
@@ -1,37 +1,37 @@
                 <li class="dropdown">
                     <a class="dropdown-toggle nav-link" data-toggle="dropdown" href="javascript:void(0)">
-                        WHO<i class="glyphicon glyphicon-chevron-down small"></i>
+                        DIVI<i class="glyphicon glyphicon-chevron-down small"></i>
                     </a>
                     <ul class="dropdown-menu">
                         <li>
-                            <a class="dropdown-item" href="{{ url_for( 'who.url_divi_date_reported_all') }}">
-                                WHO
+                            <a class="dropdown-item" href="{{ url_for( 'divi.url_divi_date_reported_all') }}">
+                                DIVI
                             </a>
                         </li>
                         <li>
                             <div class="dropdown-divider"></div>
                         </li>
                         <li>
-                            <a class="dropdown-item" href="{{ url_for( 'who.url_divi_germany') }}">
-                                WHO Germany
+                            <a class="dropdown-item" href="{{ url_for( 'divi.url_divi_germany') }}">
+                                DIVI Germany
                             </a>
                         </li>
                         <li>
                             <div class="dropdown-divider"></div>
                         </li>
                         <li>
-                            <a class="dropdown-item" href="{{ url_for( 'who.url_divi_region_all') }}">
-                                WHO Regions
+                            <a class="dropdown-item" href="{{ url_for( 'divi.url_divi_region_all') }}">
+                                DIVI Regions
                             </a>
                         </li>
                         <li>
-                            <a class="dropdown-item" href="{{ url_for( 'who.url_divi_date_reported_all') }}">
-                                WHO Date Reported
+                            <a class="dropdown-item" href="{{ url_for( 'divi.url_divi_date_reported_all') }}">
+                                DIVI Date Reported
                             </a>
                         </li>
                         <li>
-                            <a class="dropdown-item" href="{{ url_for( 'who.url_divi_country_all') }}">
-                                WHO Countries
+                            <a class="dropdown-item" href="{{ url_for( 'divi.url_divi_country_all') }}">
+                                DIVI Countries
                             </a>
                         </li>
                         <li>
@@ -39,8 +39,8 @@
                         </li>
                         {% if current_user.is_authenticated %}
                         <li>
-                            <a class="dropdown-item" href="{{ url_for( 'who.url_divi_imported') }}">
-                                WHO imported
+                            <a class="dropdown-item" href="{{ url_for( 'divi.url_divi_imported') }}">
+                                DIVI imported
                             </a>
                         </li>
                         {% endif %}
@@ -48,14 +48,14 @@
                             <div class="dropdown-divider"></div>
                         </li>
                         <li>
-                            <a class="dropdown-item" href="{{ url_for( 'who.url_divi_info') }}">
-                                WHO Info
+                            <a class="dropdown-item" href="{{ url_for( 'divi.url_divi_info') }}">
+                                DIVI Info
                             </a>
                         </li>
                         {% if current_user.is_authenticated %}
                         <li>
-                            <a class="dropdown-item" href="{{ url_for( 'who.url_divi_tasks') }}">
-                                WHO Tasks
+                            <a class="dropdown-item" href="{{ url_for( 'divi.url_divi_tasks') }}">
+                                DIVI Tasks
                             </a>
                         </li>
                         {% endif %}
diff --git a/src/covid19/blueprints/intensivregister/templates/divi/navigation/divi_navtabs.html b/src/covid19/blueprints/intensivregister/templates/divi/navigation/divi_navtabs.html
index 7d26db70..71862974 100644
--- a/src/covid19/blueprints/intensivregister/templates/divi/navigation/divi_navtabs.html
+++ b/src/covid19/blueprints/intensivregister/templates/divi/navigation/divi_navtabs.html
@@ -6,40 +6,40 @@
                 <ul class="nav nav-tabs">
                     <li class="nav-item">
                         <a class="nav-link"
-                           href="{{ url_for( 'who.url_divi_info') }}">WHO Info</a>
+                           href="{{ url_for( 'divi.url_divi_info') }}">DIVI Info</a>
                     </li>
                     {% if current_user.is_authenticated %}
                     <li class="nav-item">
                         <a class="nav-link"
-                           href="{{ url_for( 'who.url_divi_tasks') }}">WHO tasks</a>
+                           href="{{ url_for( 'divi.url_divi_tasks') }}">DIVI tasks</a>
                     </li>
                     {% endif %}
                     {% if current_user.is_authenticated %}
                     <li class="nav-item">
                         <a class="nav-link"
-                           href="{{ url_for( 'divi_test.url_divi_test_tests') }}">WHO Tests</a>
+                           href="{{ url_for( 'divi.url_divi_test_tests') }}">DIVI Tests</a>
                     </li>
                     {% endif %}
                     <li class="nav-item">
                         <a class="nav-link"
-                           href="{{ url_for( 'who.url_divi_date_reported_all') }}">WHO Date Reported</a>
+                           href="{{ url_for( 'divi.url_divi_date_reported_all') }}">DIVI Date Reported</a>
                     </li>
                     <li class="nav-item">
                         <a class="nav-link"
-                           href="{{ url_for( 'who.url_divi_germany') }}">WHO Germany</a>
+                           href="{{ url_for( 'divi.url_divi_germany') }}">DIVI Germany</a>
                     </li>
                     <li class="nav-item">
                         <a class="nav-link"
-                           href="{{ url_for( 'who.url_divi_region_all') }}">WHO Regions</a>
+                           href="{{ url_for( 'divi.url_divi_region_all') }}">DIVI Regions</a>
                     </li>
                     <li class="nav-item">
                         <a class="nav-link"
-                           href="{{ url_for( 'who.url_divi_country_all') }}">WHO Countries</a>
+                           href="{{ url_for( 'divi.url_divi_country_all') }}">DIVI Countries</a>
                     </li>
                     {% if current_user.is_authenticated %}
                     <li class="nav-item">
                         <a class="nav-link"
-                           href="{{ url_for( 'who.url_divi_imported') }}">WHO imported</a>
+                           href="{{ url_for( 'divi.url_divi_imported') }}">DIVI imported</a>
                     </li>
                     {% endif %}
                 </ul>
diff --git a/src/covid19/blueprints/intensivregister_test/__init__.py b/src/covid19/blueprints/intensivregister_test/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/src/covid19/blueprints/intensivregister_test/divi_test_service.py b/src/covid19/blueprints/intensivregister_test/divi_test_service.py
new file mode 100644
index 00000000..8f147bf7
--- /dev/null
+++ b/src/covid19/blueprints/intensivregister_test/divi_test_service.py
@@ -0,0 +1,44 @@
+from database import app
+from covid19.blueprints.application.application_service_config import ApplicationServiceConfig
+from covid19.blueprints.intensivregister.divi_model import DiviDateReported, DiviData
+
+
+class DiviTestService:
+    def __init__(self, database, who_service):
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" DIVI Test Service [init]")
+        app.logger.debug("------------------------------------------------------------")
+        self.__database = database
+        self.__service = who_service
+        self.cfg = ApplicationServiceConfig.create_config_for_who()
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.info(" DIVI Test Service [ready]")
+
+    def delete_last_day(self):
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" DiviTestService.delete_last_day() [START]")
+        app.logger.debug("------------------------------------------------------------")
+        joungest_datum_str = DiviData.get_joungest_datum()
+        joungest_datum = DiviDateReported.find_by_date_reported(joungest_datum_str)
+        app.logger.info("joungest_datum:")
+        app.logger.info(joungest_datum)
+        app.logger.info("WhoData.get_data_for_one_day(joungest_datum):")
+        i = 0
+        for data in DiviData.get_data_for_one_day(joungest_datum):
+            i += 1
+            line = " | " + str(i) + " | " + str(data.date_reported) + " | " + data.country.country + " | to be deleted"
+            app.logger.info(line)
+        app.logger.info("WhoData.delete_data_for_one_day(joungest_datum)")
+        DiviData.delete_data_for_one_day(joungest_datum)
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" DiviTestService.delete_last_day() [DONE]")
+        app.logger.debug("------------------------------------------------------------")
+
+    def run_update_star_schema_incremental(self):
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" DiviTestService.run_update_star_schema_incremental() [START]")
+        app.logger.debug("------------------------------------------------------------")
+        self.__service.run_update_star_schema_incremental()
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" DiviTestService.run_update_star_schema_incremental() [DONE]")
+        app.logger.debug("------------------------------------------------------------")
diff --git a/src/covid19/blueprints/intensivregister_test/divi_test_views.py b/src/covid19/blueprints/intensivregister_test/divi_test_views.py
new file mode 100644
index 00000000..2f13f31b
--- /dev/null
+++ b/src/covid19/blueprints/intensivregister_test/divi_test_views.py
@@ -0,0 +1,137 @@
+from flask import render_template, redirect, url_for, flash, Blueprint
+from celery import states
+from celery.utils.log import get_task_logger
+from flask_login import login_required
+
+from database import app, db
+from covid19.blueprints.application.application_services import divi_service
+from covid19.blueprints.application.application_workers import celery
+
+from covid19.blueprints.intensivregister.divi_model_import import DiviImport
+from covid19.blueprints.intensivregister.divi_model import DiviData
+from covid19.blueprints.application.application_model_transient import ApplicationPage
+
+from covid19.blueprints.intensivregister_test.divi_test_service import DiviTestService
+
+divi_test_service = DiviTestService(db, divi_service)
+
+app_divi_test = Blueprint('divi_test', __name__, template_folder='templates', url_prefix='/divi/test')
+
+# ---------------------------------------------------------------------------------------------------------------
+#  Url Routes Frontend
+# ---------------------------------------------------------------------------------------------------------------
+
+
+@app_divi_test.route('/tests')
+@login_required
+def url_divi_test_tests():
+    page_info = ApplicationPage('WHO', "Tests")
+    return render_template(
+        'divi_test/divi_tests.html',
+        page_info=page_info)
+
+
+@app_divi_test.route('/divi_import/countries')
+@login_required
+def url_divi_test_divi_import_countries():
+    flash("url_divi_mytest - START: DiviImport.countries()")
+    app.logger.info("url_divi_mytest - START: DiviImport.countries()")
+    i = 0
+    for c in DiviImport.countries():
+        i += 1
+        line = " | " + str(i) + " | " + c.countries.country_code + " | " + c.countries.country + " | " + c.countries.divi_region + " | "
+        app.logger.info(line)
+    flash("url_divi_mytest - DONE: DiviImport.countries()")
+    return redirect(url_for('divi_test.url_divi_test_tests'))
+
+
+@app_divi_test.route('/divi_import/get_new_dates_as_array')
+@login_required
+def url_divi_test_divi_import_get_new_dates_as_array():
+    app.logger.info("url_divi_mytest - DONE: DiviImport.countries()")
+    flash("url_divi_mytest - START: DiviImport.get_new_dates_as_array()")
+    app.logger.info("url_divi_mytest - START: DiviImport.get_new_dates_as_array()")
+    app.logger.info("DiviImport.get_new_dates_as_array():")
+    i = 0
+    for date_reported in DiviImport.get_new_dates_as_array():
+        i += 1
+        line = " | " + str(i) + " | " + date_reported + " | "
+        app.logger.info(line)
+    flash("url_divi_mytest - DONE: DiviImport.get_new_dates_as_array()")
+    app.logger.info("url_divi_mytest - DONE: DiviImport.get_new_dates_as_array()")
+    return redirect(url_for('divi_test.url_divi_test_tests'))
+
+@app_divi_test.route('/divi_data/get_datum_of_all_divi_data')
+@login_required
+def url_divi_test_divi_data_get_datum_of_all_divi_data():
+    app.logger.info("url_divi_test_divi_data_get_datum_of_all_divi_data - DONE: DiviData.get_datum_of_all_divi_data()")
+    flash("url_divi_test_divi_data_get_datum_of_all_divi_data - START: DiviData.get_datum_of_all_divi_data()")
+    for datum in DiviData.get_datum_of_all_data():
+        app.logger.info(str(datum))
+    flash("url_divi_test_divi_data_get_datum_of_all_divi_data - DONE: DiviData.get_datum_of_all_divi_data()")
+    app.logger.info("url_divi_test_divi_data_get_datum_of_all_divi_data - DONE: DiviData.get_datum_of_all_divi_data()")
+    return redirect(url_for('divi_test.url_divi_test_tests'))
+
+@app_divi_test.route('/divi_data/get_datum_of_all_divi_import')
+@login_required
+def url_divi_test_divi_data_get_datum_of_all_divi_import():
+    app.logger.info("url_divi_test_divi_data_get_datum_of_all_divi_import - START: DiviImport.get_datum_of_all_divi_import()")
+    flash("url_divi_test_divi_data_get_datum_of_all_divi_import - START: DiviImport.get_datum_of_all_divi_import()")
+    for datum in DiviImport.get_datum_of_all_divi_import():
+        app.logger.info(str(datum))
+    flash("url_divi_test_divi_data_get_datum_of_all_divi_import - DONE: DiviImport.get_datum_of_all_divi_import()")
+    app.logger.info("url_divi_test_divi_data_get_datum_of_all_divi_import - DONE: DiviImport.get_datum_of_all_divi_import()")
+    return redirect(url_for('divi_test.url_divi_test_tests'))
+
+@app_divi_test.route('/divi_service/service_update/divi_import_get_new_dates_as_array')
+@login_required
+def url_divi_test_divi_service_divi_import_get_new_dates_as_array():
+    app.logger.info("url_divi_test_divi_import_get_new_dates_as_array - START: WhoService.divi_import_get_new_dates_as_array()")
+    flash("url_divi_test_divi_import_get_new_dates_as_array - START: WhoService.divi_import_get_new_dates_as_array()")
+    for datum in divi_service.service_update.divi_import_get_new_dates_as_array():
+        app.logger.info(str(datum))
+    flash("url_divi_test_divi_import_get_new_dates_as_array - DONE: WhoService.divi_import_get_new_dates_as_array()")
+    app.logger.info("url_divi_test_divi_import_get_new_dates_as_array - DONE: WhoService.divi_import_get_new_dates_as_array()")
+    return redirect(url_for('divi_test.url_divi_test_tests'))
+
+@app_divi_test.route('/divi_test_service/delete_last_day')
+@login_required
+def url_divi_test_divi_test_service_delete_last_days_data():
+    app.logger.info("url_divi_test_divi_test_service_delete_last_days_data - START: WhoService.divi_import_get_new_dates_as_array()")
+    flash("url_divi_test_divi_test_service_delete_last_days_data - START: WhoService.divi_import_get_new_dates_as_array()")
+    divi_test_service.delete_last_day()
+    flash("url_divi_test_divi_test_service_delete_last_days_data - DONE: WhoService.divi_import_get_new_dates_as_array()")
+    app.logger.info("url_divi_test_divi_test_service_delete_last_days_data - DONE: WhoService.divi_import_get_new_dates_as_array()")
+    return redirect(url_for('divi_test.url_divi_test_tests'))
+
+
+# ----------------------------------------------------------------------------------------------------------------
+#  Celery TASKS
+# ----------------------------------------------------------------------------------------------------------------
+
+
+@celery.task(bind=True)
+def task_divi_test_update_star_schema_incremental(self):
+    logger = get_task_logger(__name__)
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: task_divi_test_update_star_schema_incremental [OK] ")
+    logger.info("------------------------------------------------------------")
+    divi_test_service.run_update_star_schema_incremental()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (task_divi_test_update_star_schema_incremental)"
+    return result
+
+# ----------------------------------------------------------------------------------------------------------------
+#  URL Routes for Celery TASKS
+# ----------------------------------------------------------------------------------------------------------------
+
+@app_divi_test.route('/task/update_star_schema_incremental')
+@login_required
+def url_task_divi_test_update_star_schema_incremental():
+    app.logger.info("url_task_divi_update_star_schema_incremental - START: task_divi_update_star_schema_incremental()")
+    flash("url_task_divi_update_star_schema_incremental - START: task_divi_update_star_schema_incremental()")
+    task_divi_test_update_star_schema_incremental.apply_async()
+    flash("url_task_divi_update_star_schema_incremental - DONE: task_divi_update_star_schema_incremental()")
+    app.logger.info("url_task_divi_update_star_schema_incremental - DONE: task_divi_update_star_schema_incremental()")
+    return redirect(url_for('divi_test.url_divi_test_tests'))
diff --git a/src/covid19/blueprints/intensivregister_test/templates/__init__.py b/src/covid19/blueprints/intensivregister_test/templates/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/src/covid19/blueprints/intensivregister_test/templates/who_test/divi_tests.html b/src/covid19/blueprints/intensivregister_test/templates/who_test/divi_tests.html
new file mode 100644
index 00000000..a47341ba
--- /dev/null
+++ b/src/covid19/blueprints/intensivregister_test/templates/who_test/divi_tests.html
@@ -0,0 +1,59 @@
+{% extends 'application/page_layout.html' %}
+
+{% block content %}
+    {{super()}}
+    {% include 'divi/navigation/divi_navtabs.html' %}
+
+    <div class="container">
+        <div class="row">
+            <div class="col">
+                <div class="btn-group-vertical" role="group" aria-label="Views">
+                    <a class="btn btn-primary btn-lg btn-block text-left"
+                       href="{{ url_for( 'divi.url_divi_tasks') }}"
+                       role="button">WHO :: Tasks</a>
+                </div>
+            </div>
+        </div>
+        <p></p>
+        <div class="row">
+            <div class="col">
+                <div class="btn-group-vertical" role="group" aria-label="Views">
+                    <a class="btn btn-danger btn-lg btn-block text-left"
+                       href="{{ url_for( 'divi_test.url_divi_test_who_import_countries') }}"
+                       role="button">url_divi_test_who_import_countries</a>
+                    <a class="btn btn-primary btn-lg btn-block text-left"
+                       href="{{ url_for( 'divi_test.url_divi_test_who_import_get_new_dates_as_array') }}"
+                       role="button">url_divi_test_who_import_get_new_dates_as_array</a>
+                    <a class="btn btn-danger btn-lg btn-block text-left"
+                       href="{{ url_for( 'divi_test.url_divi_test_who_data_get_datum_of_all_who_data') }}"
+                       role="button">url_divi_test_who_data_get_datum_of_all_who_data</a>
+                    <a class="btn btn-primary btn-lg btn-block text-left"
+                       href="{{ url_for( 'divi_test.url_divi_test_who_data_get_datum_of_all_who_import') }}"
+                       role="button">url_divi_test_who_data_get_datum_of_all_who_import</a>
+                    <a class="btn btn-danger btn-lg btn-block text-left"
+                       href="{{ url_for( 'divi_test.url_divi_test_who_service_who_import_get_new_dates_as_array') }}"
+                       role="button">url_divi_test_who_service_who_import_get_new_dates_as_array</a>
+                    <a class="btn btn-primary btn-lg btn-block text-left"
+                       href="{{ url_for( 'divi_test.url_divi_test_divi_test_service_delete_last_days_data') }}"
+                       role="button">url_divi_test_divi_test_service_delete_last_days_data</a>
+                </div>
+            </div>
+            <div class="col">
+                 <div class="btn-group-vertical" role="group" aria-label="Views">
+                    <a class="btn btn-primary btn-lg btn-block text-left"
+                       href="{{ url_for( 'divi_test.url_task_divi_test_update_star_schema_incremental') }}"
+                       role="button">url_task_divi_test_update_star_schema_incremental</a>
+                </div>
+            </div>
+        </div>
+    </div>
+{% endblock %}
+
+
+
+{% block footer_container %}
+
+{% endblock %}
+
+
+
-- 
GitLab