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