From f013041ffbde3d77b1c1e23edf845b3a687d0d15 Mon Sep 17 00:00:00 2001
From: thomaswoehlke <thomas.woehlke@gmail.com>
Date: Sun, 25 Apr 2021 20:53:06 +0200
Subject: [PATCH] work

---
 data                                          |  2 +-
 src/covid19/blueprints/owid/owid_model.py     | 33 +++++++
 .../owid/templates/owid/owid_tasks.html       |  8 +-
 .../blueprints/owid_test/owid_test_service.py | 49 +++++++++++
 .../blueprints/owid_test/owid_test_views.py   | 86 +++++++++++++++++++
 .../templates/owid_test/owid_tests.html       | 48 ++++++++++-
 6 files changed, 219 insertions(+), 7 deletions(-)
 create mode 100644 src/covid19/blueprints/owid_test/owid_test_service.py

diff --git a/data b/data
index 01fbfd9c..a9036e3f 160000
--- a/data
+++ b/data
@@ -1 +1 @@
-Subproject commit 01fbfd9c20e59113107dd57779a2f7d89a90dc69
+Subproject commit a9036e3f575858d46b73f5b7f8ed9f74f2f7bef8
diff --git a/src/covid19/blueprints/owid/owid_model.py b/src/covid19/blueprints/owid/owid_model.py
index 3aa69945..f7c3c8d7 100644
--- a/src/covid19/blueprints/owid/owid_model.py
+++ b/src/covid19/blueprints/owid/owid_model.py
@@ -43,6 +43,11 @@ class OwidDateReported(ApplicationDateReported):
             year_week=my_year_week
         )
 
+    @classmethod
+    def find_by_date_reported(cls, joungest_datum_str):
+        # TODO
+        pass
+
 
 class OwidContinent(ApplicationRegion):
     __tablename__ = 'owid_country_continent'
@@ -231,16 +236,44 @@ class OwidData(db.Model):
 
     @classmethod
     def get_data_for_day_order_by_deaths_new(cls, date_reported, page):
+        # TODO
         pass
 
     @classmethod
     def get_data_for_day_order_by_deaths_cumulative(cls, date_reported, page):
+        # TODO
         pass
 
     @classmethod
     def get_data_for_day_order_by_cases_cumulative(cls, date_reported, page):
+        # TODO
         pass
 
     @classmethod
     def get_data_for_day_order_by_cases_new(cls, date_reported, page):
+        # TODO
+        pass
+
+    @classmethod
+    def get_joungest_datum(cls):
+        # TODO
+        pass
+
+    @classmethod
+    def get_data_for_one_day(cls, date_reported):
+        return db.session.query(cls).filter(
+            cls.date_reported_id == date_reported.id
+        ).populate_existing().options(
+            joinedload(cls.country).joinedload(OwidCountry.continent),
+            joinedload(cls.date_reported)
+        ).order_by(
+            cls.new_deaths.desc(),
+            cls.new_cases.desc(),
+            cls.new_deaths_per_million.desc(),
+            cls.new_cases_per_million.desc()
+        ).all()
+
+    @classmethod
+    def delete_data_for_one_day(cls, date_reported):
+        # TODO
         pass
diff --git a/src/covid19/blueprints/owid/templates/owid/owid_tasks.html b/src/covid19/blueprints/owid/templates/owid/owid_tasks.html
index 8f20a561..239be8c3 100644
--- a/src/covid19/blueprints/owid/templates/owid/owid_tasks.html
+++ b/src/covid19/blueprints/owid/templates/owid/owid_tasks.html
@@ -18,16 +18,16 @@
             </div>
             <div class="col">
                 <div class="btn-group-vertical" role="group" aria-label="Views">
-                    <a class="btn btn-secondary btn-lg btn-block text-left"
+                    <a class="btn btn-success btn-lg btn-block text-left"
                        href="{{ url_for( 'owid.url_task_owid_download_only') }}"
                        role="button">OWID :: Task :: download :: only</a>
-                    <a class="btn btn-secondary btn-lg btn-block text-left"
+                    <a class="btn btn-info btn-lg btn-block text-left"
                        href="{{ url_for( 'owid.url_task_owid_import_only') }}"
                        role="button">OWID :: Task :: import :: only</a>
-                    <a class="btn btn-secondary btn-lg btn-block text-left"
+                    <a class="btn btn-warning btn-lg btn-block text-left"
                        href="{{ url_for( 'owid.url_task_owid_update_dimension_tables_only') }}"
                        role="button">OWID :: Task :: update :: dimension-tables : only</a>
-                    <a class="btn btn-secondary btn-lg btn-block text-left"
+                    <a class="btn btn-danger btn-lg btn-block text-left"
                        href="{{ url_for( 'owid.url_task_owid_update_fact_table_incremental_only') }}"
                        role="button">OWID :: Task :: update :: fact-table :: only :: incremental</a>
                     <a class="btn btn-secondary btn-lg btn-block text-left"
diff --git a/src/covid19/blueprints/owid_test/owid_test_service.py b/src/covid19/blueprints/owid_test/owid_test_service.py
new file mode 100644
index 00000000..294c8c9e
--- /dev/null
+++ b/src/covid19/blueprints/owid_test/owid_test_service.py
@@ -0,0 +1,49 @@
+from flask import flash
+
+from database import app
+
+from covid19.blueprints.application.application_service_config import ApplicationServiceConfig
+from covid19.blueprints.application.application_service_download import ApplicationServiceDownload
+from covid19.blueprints.owid.owid_service_import import OwidServiceImport
+from covid19.blueprints.owid.owid_service_update import OwidServiceUpdate
+from covid19.blueprints.owid.owid_model import OwidDateReported, OwidContinent, OwidCountry, OwidData
+
+
+class OwidTestService:
+    def __init__(self, database):
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" OwidTestService [init]")
+        app.logger.debug("------------------------------------------------------------")
+        self.__database = database
+        self.cfg = ApplicationServiceConfig.create_config_for_owid()
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.info(" OwidTestService [ready]")
+
+    def delete_last_day(self):
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" OwidTestService.delete_last_day() [START]")
+        app.logger.debug("------------------------------------------------------------")
+        joungest_datum_str = OwidData.get_joungest_datum()
+        joungest_datum = OwidDateReported.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 OwidData.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)")
+        OwidData.delete_data_for_one_day(joungest_datum)
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" OwidTestService.delete_last_day() [DONE]")
+        app.logger.debug("------------------------------------------------------------")
+
+    def run_update_star_schema_incremental(self):
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" OwidTestService.run_update_star_schema_incremental() [START]")
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug("")
+        app.logger.debug("------------------------------------------------------------")
+        app.logger.debug(" OwidTestService.run_update_star_schema_incremental() [DONE]")
+        app.logger.debug("------------------------------------------------------------")
diff --git a/src/covid19/blueprints/owid_test/owid_test_views.py b/src/covid19/blueprints/owid_test/owid_test_views.py
index 7917de66..c1aa98f3 100644
--- a/src/covid19/blueprints/owid_test/owid_test_views.py
+++ b/src/covid19/blueprints/owid_test/owid_test_views.py
@@ -12,6 +12,9 @@ from covid19.blueprints.owid.owid_model import OwidDateReported, OwidData, OwidC
 from covid19.blueprints.owid.owid_model_import import OwidImport
 from covid19.blueprints.application.application_model_transient import ApplicationPage
 
+from covid19.blueprints.owid_test.owid_test_service import OwidTestService
+
+owid_test_service = OwidTestService(db)
 
 app_owid_test = Blueprint('owid_test', __name__, template_folder='templates', url_prefix='/owid/test')
 
@@ -63,5 +66,88 @@ def url_owid_test_update_star_schema_initial():
     return redirect(url_for('owid_test.url_owid_test_tests'))
 
 
+@app_owid_test.route('/update_star_schema_initial')
+@login_required
+def url_owid_test_owid_import_countries():
+    app.logger.info("update_star_schema_initial - START")
+    flash("update_star_schema_initial - 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_owid_import_get_new_dates_as_array():
+    app.logger.info("update_star_schema_initial - START")
+    flash("update_star_schema_initial - 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_owid_data_get_datum_of_all_owid_data():
+    app.logger.info("update_star_schema_initial - START")
+    flash("update_star_schema_initial - 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_owid_data_get_datum_of_all_owid_import():
+    app.logger.info("update_star_schema_initial - START")
+    flash("update_star_schema_initial - 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_owid_service_owid_import_get_new_dates_as_array():
+    app.logger.info("update_star_schema_initial - START")
+    flash("update_star_schema_initial - 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_owid_test_service_delete_last_days_data():
+    app.logger.info("update_star_schema_initial - START")
+    flash("update_star_schema_initial - START")
+    return redirect(url_for('owid_test.url_owid_test_tests'))
+
+
+
+# ----------------------------------------------------------------------------------------------------------------
+#  Celery TASKS
+# ----------------------------------------------------------------------------------------------------------------
+
+
+@celery.task(bind=True)
+def task_owid_test_update_star_schema_incremental(self):
+    logger = get_task_logger(__name__)
+    self.update_state(state=states.STARTED)
+    logger.info("------------------------------------------------------------")
+    logger.info(" Received: task_owid_test_update_star_schema_incremental [OK] ")
+    logger.info("------------------------------------------------------------")
+    owid_test_service.run_update_star_schema_incremental()
+    self.update_state(state=states.SUCCESS)
+    result = "OK (task_owid_test_update_star_schema_incremental)"
+    return result
+
+# ----------------------------------------------------------------------------------------------------------------
+#  URL Routes for Celery TASKS
+# ----------------------------------------------------------------------------------------------------------------
+
+@app_owid_test.route('/task/update_star_schema_incremental')
+@login_required
+def url_task_owid_test_update_star_schema_incremental():
+    app.logger.info("url_task_owid_test_update_star_schema_incremental - START: task_owid_test_update_star_schema_incremental()")
+    flash("url_task_owid_test_update_star_schema_incremental - START: task_owid_test_update_star_schema_incremental()")
+    task_owid_test_update_star_schema_incremental.apply_async()
+    flash("url_task_owid_test_update_star_schema_incremental - DONE: task_owid_test_update_star_schema_incremental()")
+    app.logger.info("url_task_owid_test_update_star_schema_incremental - DONE: task_owid_test_update_star_schema_incremental()")
+    return redirect(url_for('owid_test.url_owid_test_tests'))
+
+
+
+
 
 
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
index 3034516a..a4416ef5 100644
--- a/src/covid19/blueprints/owid_test/templates/owid_test/owid_tests.html
+++ b/src/covid19/blueprints/owid_test/templates/owid_test/owid_tests.html
@@ -6,6 +6,52 @@
 
     <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( 'owid.url_owid_tasks') }}"
+                       role="button">OWID :: Tasks</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( 'owid_test.url_task_owid_test_update_star_schema_incremental') }}"
+                       role="button">url_task_owid_test_update_star_schema_incremental</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( 'owid_test.url_owid_test_owid_import_countries') }}"
+                       role="button">url_owid_test_owid_import_countries</a>
+                    <a class="btn btn-primary btn-lg btn-block text-left"
+                       href="{{ url_for( 'owid_test.url_owid_test_owid_import_get_new_dates_as_array') }}"
+                       role="button">url_owid_test_owid_import_get_new_dates_as_array</a>
+                    <a class="btn btn-danger btn-lg btn-block text-left"
+                       href="{{ url_for( 'owid_test.url_owid_test_owid_data_get_datum_of_all_owid_data') }}"
+                       role="button">url_owid_test_owid_data_get_datum_of_all_owid_data</a>
+                    <a class="btn btn-primary btn-lg btn-block text-left"
+                       href="{{ url_for( 'owid_test.url_owid_test_owid_data_get_datum_of_all_owid_import') }}"
+                       role="button">url_owid_test_owid_data_get_datum_of_all_owid_import</a>
+                    <a class="btn btn-danger btn-lg btn-block text-left"
+                       href="{{ url_for( 'owid_test.url_owid_test_owid_service_owid_import_get_new_dates_as_array') }}"
+                       role="button">url_owid_test_owid_service_owid_import_get_new_dates_as_array</a>
+                    <a class="btn btn-primary btn-lg btn-block text-left"
+                       href="{{ url_for( 'owid_test.url_owid_test_owid_test_service_delete_last_days_data') }}"
+                       role="button">url_owid_test_owid_test_service_delete_last_days_data</a>
+                </div>
+            </div>
+            <div class="col">
+            </div>
+        </div>
+        <p></p>
+        <div class="row">
+            <div class="col">
+            </div>
             <div class="col">
                 <div class="btn-group-vertical" role="group" aria-label="Views">
                     <a class="btn btn-danger btn-lg btn-block text-left"
@@ -25,8 +71,6 @@
                        role="button">test_update_star_schema_initial</a>
                 </div>
             </div>
-            <div class="col">
-            </div>
         </div>
     </div>
 {% endblock %}
-- 
GitLab