From 1023efbfb0ef9096b76214fc79720e09eed1827a Mon Sep 17 00:00:00 2001
From: thomaswoehlke <thomas.woehlke@gmail.com>
Date: Sun, 25 Apr 2021 13:46:46 +0200
Subject: [PATCH] work

---
 .../application/application_views.py          |  3 +
 .../owid/navigation/owid_navtabs.html         |  6 ++
 src/covid19/blueprints/owid_test/__init__.py  |  0
 .../blueprints/owid_test/owid_test_views.py   | 67 +++++++++++++++++++
 .../owid_test/templates/__init__.py           |  0
 .../templates/owid_test/owid_tests.html       | 41 ++++++++++++
 .../templates/who/navigation/who_navtabs.html |  6 ++
 .../who/templates/who/who_tasks.html          |  6 +-
 src/covid19/blueprints/who/who_model.py       |  6 +-
 .../blueprints/who_test/templates/__init__.py |  0
 .../templates/who_test/who_tests.html         | 50 ++++++++++++++
 .../blueprints/who_test/who_test_views.py     | 14 +++-
 12 files changed, 190 insertions(+), 9 deletions(-)
 create mode 100644 src/covid19/blueprints/owid_test/__init__.py
 create mode 100644 src/covid19/blueprints/owid_test/owid_test_views.py
 create mode 100644 src/covid19/blueprints/owid_test/templates/__init__.py
 create mode 100644 src/covid19/blueprints/owid_test/templates/owid_test/owid_tests.html
 create mode 100644 src/covid19/blueprints/who_test/templates/__init__.py
 create mode 100644 src/covid19/blueprints/who_test/templates/who_test/who_tests.html

diff --git a/src/covid19/blueprints/application/application_views.py b/src/covid19/blueprints/application/application_views.py
index 7133a95a..a3e7886c 100644
--- a/src/covid19/blueprints/application/application_views.py
+++ b/src/covid19/blueprints/application/application_views.py
@@ -12,6 +12,8 @@ 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.owid_test.owid_test_views import app_owid_test
 from covid19.blueprints.who_test.who_test_views import app_who_test
 
 app_application = Blueprint('application', __name__, template_folder='templates', url_prefix='/')
@@ -26,6 +28,7 @@ app.register_blueprint(app_who, url_prefix='/who')
 app.register_blueprint(app_owid, url_prefix='/owid')
 app.register_blueprint(app_user, url_prefix='/usr')
 
+app.register_blueprint(app_owid_test, url_prefix='/owid/test')
 app.register_blueprint(app_who_test, url_prefix='/who/test')
 
 ############################################################################################
diff --git a/src/covid19/blueprints/owid/templates/owid/navigation/owid_navtabs.html b/src/covid19/blueprints/owid/templates/owid/navigation/owid_navtabs.html
index 00cf32bb..f63c40ca 100644
--- a/src/covid19/blueprints/owid/templates/owid/navigation/owid_navtabs.html
+++ b/src/covid19/blueprints/owid/templates/owid/navigation/owid_navtabs.html
@@ -14,6 +14,12 @@
                            href="{{ url_for( 'owid.url_owid_tasks') }}">OWID tasks</a>
                     </li>
                     {% endif %}
+                    {% if current_user.is_authenticated %}
+                    <li class="nav-item">
+                        <a class="nav-link"
+                           href="{{ url_for( 'owid_test.url_owid_test_tests') }}">OWID Tests</a>
+                    </li>
+                    {% endif %}
                     <li class="nav-item">
                         <a class="nav-link"
                            href="{{ url_for( 'owid.url_owid_date_reported_all') }}">OWID Date Reported</a>
diff --git a/src/covid19/blueprints/owid_test/__init__.py b/src/covid19/blueprints/owid_test/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/src/covid19/blueprints/owid_test/owid_test_views.py b/src/covid19/blueprints/owid_test/owid_test_views.py
new file mode 100644
index 00000000..7917de66
--- /dev/null
+++ b/src/covid19/blueprints/owid_test/owid_test_views.py
@@ -0,0 +1,67 @@
+from flask import render_template, redirect, url_for, flash, Blueprint
+from sqlalchemy.exc import OperationalError
+from celery import states
+from celery.utils.log import get_task_logger
+from flask_admin.contrib.sqla import ModelView
+from flask_login import login_required
+
+from database import app, admin, db
+from covid19.blueprints.application.application_services import owid_service
+from covid19.blueprints.application.application_workers import celery
+from covid19.blueprints.owid.owid_model import OwidDateReported, OwidData, OwidContinent, OwidCountry
+from covid19.blueprints.owid.owid_model_import import OwidImport
+from covid19.blueprints.application.application_model_transient import ApplicationPage
+
+
+app_owid_test = Blueprint('owid_test', __name__, template_folder='templates', url_prefix='/owid/test')
+
+# ---------------------------------------------------------------------------------------------------------------
+#  Url Routes Frontend
+# ---------------------------------------------------------------------------------------------------------------
+
+@app_owid_test.route('/tests')
+@login_required
+def url_owid_test_tests():
+    page_info = ApplicationPage('OWID', "Tests")
+    return render_template(
+        'owid_test/owid_tests.html',
+        page_info=page_info)
+
+@app_owid_test.route('/update_dimension_tables_only')
+@login_required
+def url_owid_test_update_dimension_tables_only():
+    app.logger.info("test_update_dimension_tables_only - START")
+    flash("test_update_dimension_tables_only - START")
+    return redirect(url_for('owid_test.url_owid_test_tests'))
+
+@app_owid_test.route('/update_fact_table_incremental_only')
+@login_required
+def url_owid_test_update_fact_table_incremental_only():
+    app.logger.info("update_fact_table_incremental_only - START")
+    flash("update_fact_table_incremental_only - START")
+    return redirect(url_for('owid_test.url_owid_test_tests'))
+
+@app_owid_test.route('/update_fact_table_initial_only')
+@login_required
+def url_owid_test_update_fact_table_initial_only():
+    app.logger.info("update_fact_table_initial_only - START")
+    flash("update_fact_table_initial_only - START")
+    return redirect(url_for('owid_test.url_owid_test_tests'))
+
+@app_owid_test.route('/update_star_schema_incremental')
+@login_required
+def url_owid_test_update_star_schema_incremental():
+    app.logger.info("update_star_schema_incremental - START")
+    flash("update_star_schema_incremental - START")
+    return redirect(url_for('owid_test.url_owid_test_tests'))
+
+@app_owid_test.route('/update_star_schema_initial')
+@login_required
+def url_owid_test_update_star_schema_initial():
+    app.logger.info("update_star_schema_initial - START")
+    flash("update_star_schema_initial - START")
+    return redirect(url_for('owid_test.url_owid_test_tests'))
+
+
+
+
diff --git a/src/covid19/blueprints/owid_test/templates/__init__.py b/src/covid19/blueprints/owid_test/templates/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/src/covid19/blueprints/owid_test/templates/owid_test/owid_tests.html b/src/covid19/blueprints/owid_test/templates/owid_test/owid_tests.html
new file mode 100644
index 00000000..3034516a
--- /dev/null
+++ b/src/covid19/blueprints/owid_test/templates/owid_test/owid_tests.html
@@ -0,0 +1,41 @@
+{% extends 'application/page_layout.html' %}
+
+{% block content %}
+    {{super()}}
+     {% include 'owid/navigation/owid_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-danger btn-lg btn-block text-left"
+                       href="{{ url_for( 'owid_test.url_owid_test_update_dimension_tables_only') }}"
+                       role="button">test_update_dimension_tables_only</a>
+                    <a class="btn btn-secondary btn-lg btn-block text-left"
+                       href="{{ url_for( 'owid_test.url_owid_test_update_fact_table_incremental_only') }}"
+                       role="button">test_update_fact_table_incremental_only</a>
+                    <a class="btn btn-danger btn-lg btn-block text-left"
+                       href="{{ url_for( 'owid_test.url_owid_test_update_fact_table_initial_only') }}"
+                       role="button">test_update_fact_table_initial_only</a>
+                    <a class="btn btn-secondary btn-lg btn-block text-left"
+                       href="{{ url_for( 'owid_test.url_owid_test_update_star_schema_incremental') }}"
+                       role="button">test_update_star_schema_incremental</a>
+                    <a class="btn btn-danger btn-lg btn-block text-left"
+                       href="{{ url_for( 'owid_test.url_owid_test_update_star_schema_initial') }}"
+                       role="button">test_update_star_schema_initial</a>
+                </div>
+            </div>
+            <div class="col">
+            </div>
+        </div>
+    </div>
+{% endblock %}
+
+
+
+{% block footer_container %}
+
+{% endblock %}
+
+
+
diff --git a/src/covid19/blueprints/who/templates/who/navigation/who_navtabs.html b/src/covid19/blueprints/who/templates/who/navigation/who_navtabs.html
index d0392ab5..032b51dc 100644
--- a/src/covid19/blueprints/who/templates/who/navigation/who_navtabs.html
+++ b/src/covid19/blueprints/who/templates/who/navigation/who_navtabs.html
@@ -14,6 +14,12 @@
                            href="{{ url_for( 'who.url_who_tasks') }}">WHO tasks</a>
                     </li>
                     {% endif %}
+                    {% if current_user.is_authenticated %}
+                    <li class="nav-item">
+                        <a class="nav-link"
+                           href="{{ url_for( 'who_test.url_who_test_tests') }}">WHO Tests</a>
+                    </li>
+                    {% endif %}
                     <li class="nav-item">
                         <a class="nav-link"
                            href="{{ url_for( 'who.url_who_date_reported_all') }}">WHO Date Reported</a>
diff --git a/src/covid19/blueprints/who/templates/who/who_tasks.html b/src/covid19/blueprints/who/templates/who/who_tasks.html
index e8110fb7..b2b020dc 100644
--- a/src/covid19/blueprints/who/templates/who/who_tasks.html
+++ b/src/covid19/blueprints/who/templates/who/who_tasks.html
@@ -39,12 +39,12 @@
         <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( 'who_test.url_who_test_who_import_get_new_dates_as_array') }}"
-                       role="button">url_who_test_who_import_get_new_dates_as_array</a>
                     <a class="btn btn-danger btn-lg btn-block text-left"
                        href="{{ url_for( 'who_test.url_who_test_who_import_countries') }}"
                        role="button">url_who_test_who_import_countries</a>
+                    <a class="btn btn-danger btn-lg btn-block text-left"
+                       href="{{ url_for( 'who_test.url_who_test_who_import_get_new_dates_as_array') }}"
+                       role="button">url_who_test_who_import_get_new_dates_as_array</a>
                 </div>
             </div>
             <div class="col">
diff --git a/src/covid19/blueprints/who/who_model.py b/src/covid19/blueprints/who/who_model.py
index 158e1ca0..2abc2964 100644
--- a/src/covid19/blueprints/who/who_model.py
+++ b/src/covid19/blueprints/who/who_model.py
@@ -68,7 +68,7 @@ class WhoCountry(db.Model):
     region = db.relationship(
         'WhoRegion',
         lazy='joined',
-        cascade='all',
+        cascade='save-update',
         order_by='WhoRegion.region')
 
     def __str__(self):
@@ -173,14 +173,14 @@ class WhoData(db.Model):
     date_reported = db.relationship(
         'WhoDateReported',
         lazy='joined',
-        cascade='all',
+        cascade='save-update',
         order_by='desc(WhoDateReported.date_reported)')
     country_id = db.Column(db.Integer,
         db.ForeignKey('who_country.id'), nullable=False)
     country = db.relationship(
         'WhoCountry',
         lazy='joined',
-        cascade='all',
+        cascade='save-update',
         order_by='asc(WhoCountry.country)')
 
     @classmethod
diff --git a/src/covid19/blueprints/who_test/templates/__init__.py b/src/covid19/blueprints/who_test/templates/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/src/covid19/blueprints/who_test/templates/who_test/who_tests.html b/src/covid19/blueprints/who_test/templates/who_test/who_tests.html
new file mode 100644
index 00000000..3be40b56
--- /dev/null
+++ b/src/covid19/blueprints/who_test/templates/who_test/who_tests.html
@@ -0,0 +1,50 @@
+{% extends 'application/page_layout.html' %}
+
+{% block content %}
+    {{super()}}
+    {% include 'who/navigation/who_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( 'who.url_who_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( 'who_test.url_who_test_who_import_countries') }}"
+                       role="button">url_who_test_who_import_countries</a>
+                    <a class="btn btn-danger btn-lg btn-block text-left"
+                       href="{{ url_for( 'who_test.url_who_test_who_import_get_new_dates_as_array') }}"
+                       role="button">url_who_test_who_import_get_new_dates_as_array</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( 'who.url_task_who_update_star_schema_initial') }}"
+                       role="button">WHO :: Task :: update :: star_schema :: initial</a>
+                    <a class="btn btn-primary btn-lg btn-block text-left"
+                       href="{{ url_for( 'who.url_task_who_update_star_schema_incremental') }}"
+                       role="button">WHO :: Task :: update :: star_schema :: incremental</a>
+                </div>
+            </div>
+        </div>
+    </div>
+{% endblock %}
+
+
+
+{% block footer_container %}
+
+{% endblock %}
+
+
+
diff --git a/src/covid19/blueprints/who_test/who_test_views.py b/src/covid19/blueprints/who_test/who_test_views.py
index 609a680d..732ad7d2 100644
--- a/src/covid19/blueprints/who_test/who_test_views.py
+++ b/src/covid19/blueprints/who_test/who_test_views.py
@@ -26,6 +26,14 @@ app_who_test = Blueprint('who_test', __name__, template_folder='templates', url_
 # ---------------------------------------------------------------------------------------------------------------
 
 
+@app_who_test.route('/tests')
+@login_required
+def url_who_test_tests():
+    page_info = ApplicationPage('WHO', "Tests")
+    return render_template(
+        'who_test/who_tests.html',
+        page_info=page_info)
+
 @app_who_test.route('/who_import/countries')
 @login_required
 def url_who_test_who_import_countries():
@@ -37,10 +45,10 @@ def url_who_test_who_import_countries():
         line = " | " + str(i) + " | " + c.countries.country_code + " | " + c.countries.country + " | " + c.countries.who_region + " | "
         app.logger.info(line)
     flash("url_who_mytest - DONE: WhoImport.countries()")
-    return redirect(url_for('who.url_who_tasks'))
+    return redirect(url_for('who_test.url_who_test_tests'))
 
 
-@app_who_test.route('/mytest')
+@app_who_test.route('/who_import/get_new_dates_as_array')
 @login_required
 def url_who_test_who_import_get_new_dates_as_array():
     app.logger.info("url_who_mytest - DONE: WhoImport.countries()")
@@ -71,4 +79,4 @@ def url_who_test_who_import_get_new_dates_as_array():
         app.logger.info(line)
     flash("url_who_mytest - DONE: WhoImport.get_new_dates_as_array()")
     app.logger.info("url_who_mytest - DONE: WhoImport.get_new_dates_as_array()")
-    return redirect(url_for('who.url_who_tasks'))
+    return redirect(url_for('who_test.url_who_test_tests'))
-- 
GitLab