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