From 7884d597f8d1851286faea2990588e312237ac48 Mon Sep 17 00:00:00 2001 From: thomaswoehlke <thomas.woehlke@gmail.com> Date: Wed, 26 May 2021 12:33:10 +0200 Subject: [PATCH] Refactoring: vaccination --- .../blueprints/app_web/web_model_factory.py | 52 +++++++++++++- .../blueprints/data_rki/rki_model_import.py | 30 ++++++++ .../blueprints/data_rki/rki_service_update.py | 69 ++++++++++++++++++- 3 files changed, 149 insertions(+), 2 deletions(-) diff --git a/src/flask_covid19/blueprints/app_web/web_model_factory.py b/src/flask_covid19/blueprints/app_web/web_model_factory.py index 4480b35e..76d8d8ff 100644 --- a/src/flask_covid19/blueprints/app_web/web_model_factory.py +++ b/src/flask_covid19/blueprints/app_web/web_model_factory.py @@ -3,7 +3,7 @@ from flask_covid19.blueprints.app_all.all_model import BlueprintDateReported from flask_covid19.blueprints.data_divi.divi_model import DiviDateReported from flask_covid19.blueprints.data_ecdc.ecdc_model import EcdcDateReported from flask_covid19.blueprints.data_owid.owid_model import OwidDateReported -from flask_covid19.blueprints.data_rki.rki_model import RkiMeldedatum +from flask_covid19.blueprints.data_rki.rki_model import RkiMeldedatum, RkiDatenstand, RkiRefDatum from flask_covid19.blueprints.data_vaccination.vaccination_model import VaccinationDateReported from flask_covid19.blueprints.data_who.who_model import WhoDateReported @@ -168,6 +168,42 @@ class BlueprintDateReportedFactory: processed_full_update=False, ) + @classmethod + def __get_rki_date_datenstand(cls, o: BlueprintDateReported): + return RkiDatenstand( + date_reported_import_str=o.date_reported_import_str, + datum=o.datum, + year_day_of_year=o.year_day_of_year, + year_month=o.year_month, + year_week=o.year_week, + year=o.year, + month=o.month, + day_of_month=o.day_of_month, + day_of_week=o.day_of_week, + day_of_year=o.day_of_year, + week_of_year=o.week_of_year, + processed_update=False, + processed_full_update=False, + ) + + @classmethod + def __get_rki_ref_datum(cls, o: BlueprintDateReported): + return RkiRefDatum( + date_reported_import_str=o.date_reported_import_str, + datum=o.datum, + year_day_of_year=o.year_day_of_year, + year_month=o.year_month, + year_week=o.year_week, + year=o.year, + month=o.month, + day_of_month=o.day_of_month, + day_of_week=o.day_of_week, + day_of_year=o.day_of_year, + week_of_year=o.week_of_year, + processed_update=False, + processed_full_update=False, + ) + @classmethod def __get_vaccination(cls, o: BlueprintDateReported): return VaccinationDateReported( @@ -226,6 +262,20 @@ class BlueprintDateReportedFactory: o = cls.__create_new_object_factory(date_reported_import_str=my_date_rep, my_datum=my_datum) return cls.__get_rki(o) + @classmethod + def create_new_object_for_rki_date_datenstand(cls, my_date_rep: str): + (my_year, my_month, my_day) = cls.__get_datetime_parts(my_date_rep) + my_datum = date(my_year, my_month, my_day) + o = cls.__create_new_object_factory(date_reported_import_str=my_date_rep, my_datum=my_datum) + return cls.__get_rki_date_datenstand(o) + + @classmethod + def create_new_object_for_rki_ref_datum(cls, my_date_rep: str): + (my_year, my_month, my_day) = cls.__get_datetime_parts(my_date_rep) + my_datum = date(my_year, my_month, my_day) + o = cls.__create_new_object_factory(date_reported_import_str=my_date_rep, my_datum=my_datum) + return cls.__get_rki_ref_datum(o) + @classmethod def create_new_object_for_vaccination(cls, my_date_rep: str): o = cls.__create_new_object_factory_for_isoformat(my_date_rep) diff --git a/src/flask_covid19/blueprints/data_rki/rki_model_import.py b/src/flask_covid19/blueprints/data_rki/rki_model_import.py index a8d2bb46..abc5f6d1 100644 --- a/src/flask_covid19/blueprints/data_rki/rki_model_import.py +++ b/src/flask_covid19/blueprints/data_rki/rki_model_import.py @@ -63,6 +63,26 @@ class RkiImport(AllImport): def get_new_aktualisierungen_as_array(cls): return [] + @classmethod + def get_date_datenstand_of_all_import(cls): + dates_reported = [] + bu = Bundle('datenstand', cls.datenstand) + for meldedatum in db.session.query(bu).distinct().order_by(cls.datenstand.desc()): + item = meldedatum[0][0] + if not item in dates_reported: + dates_reported.append(item) + return dates_reported + + @classmethod + def get_date_ref_datum_of_all_import(cls): + dates_reported = [] + bu = Bundle('ref_datum', cls.ref_datum) + for meldedatum in db.session.query(bu).distinct().order_by(cls.ref_datum.desc()): + item = meldedatum[0][0] + if not item in dates_reported: + dates_reported.append(item) + return dates_reported + @classmethod def get_datum_of_all_import(cls): dates_reported = [] @@ -83,6 +103,16 @@ class RkiImport(AllImport): bundesland_list.append(item) return bundesland_list + @classmethod + def get_altersgruppe_list(cls): + altersgruppe_list = [] + bu = Bundle('altersgruppe', cls.altersgruppe) + for altersgruppe_row in db.session.query(bu).distinct().order_by(cls.altersgruppe.asc()): + item = altersgruppe_row[0] + if not item in altersgruppe_list: + altersgruppe_list.append(item) + return altersgruppe_list + @classmethod def find_by_datun(cls, datum: date): return db.session.query(cls)\ diff --git a/src/flask_covid19/blueprints/data_rki/rki_service_update.py b/src/flask_covid19/blueprints/data_rki/rki_service_update.py index 2887a5cb..b4c98628 100644 --- a/src/flask_covid19/blueprints/data_rki/rki_service_update.py +++ b/src/flask_covid19/blueprints/data_rki/rki_service_update.py @@ -2,7 +2,7 @@ from database import db, app from flask_covid19.blueprints.app_all.all_config import BlueprintConfig from flask_covid19.blueprints.app_web.web_model_factory import BlueprintDateReportedFactory -from flask_covid19.blueprints.data_rki.rki_model import RkiData, RkiMeldedatum, RkiBundesland, RkiLandkreis +from flask_covid19.blueprints.data_rki.rki_model import RkiData, RkiMeldedatum, RkiDatenstand, RkiRefDatum, RkiAltersgruppe, RkiBundesland, RkiLandkreis from flask_covid19.blueprints.data_rki.rki_model_import import RkiImport @@ -19,6 +19,46 @@ class RkiServiceUpdateBase: class RkiServiceUpdateFull(RkiServiceUpdateBase): + def __full_update_date_datenstand(self): + app.logger.info(" RkiServiceUpdateFull.__full_update_date_datenstand [begin]") + app.logger.info("------------------------------------------------------------") + RkiDatenstand.remove_all() + i = 0 + output_lines = [] + for datum_of_import in RkiImport.get_date_datenstand_of_all_import(): + i += 1 + o = BlueprintDateReportedFactory.create_new_object_for_rki_date_datenstand(my_date_rep=datum_of_import) + db.session.add(o) + output = " [ " + str(i) + " ] full update RKI date_datenstand ... " + str(o) + output_lines.append(output) + db.session.commit() + for output in output_lines: + app.logger.info(output) + app.logger.info("") + app.logger.info(" RkiServiceUpdateFull.__full_update_date_datenstand [done]") + app.logger.info("------------------------------------------------------------") + return self + + def __full_update_date_ref_datum(self): + app.logger.info(" RkiServiceUpdateFull.__full_update_date_ref_datum [begin]") + app.logger.info("------------------------------------------------------------") + RkiRefDatum.remove_all() + i = 0 + output_lines = [] + for datum_of_import in RkiImport.get_date_ref_datum_of_all_import(): + i += 1 + o = BlueprintDateReportedFactory.create_new_object_for_rki_ref_datum(my_date_rep=datum_of_import) + db.session.add(o) + output = " [ " + str(i) + " ] full update RKI date_ref_datum ... " + str(o) + output_lines.append(output) + db.session.commit() + for output in output_lines: + app.logger.info(output) + app.logger.info("") + app.logger.info(" RkiServiceUpdateFull.__full_update_date_ref_datum [done]") + app.logger.info("------------------------------------------------------------") + return self + def __full_update_date_reported(self): app.logger.info(" RkiServiceUpdateFull.__full_update_date_reported [begin]") app.logger.info("------------------------------------------------------------") @@ -39,6 +79,31 @@ class RkiServiceUpdateFull(RkiServiceUpdateBase): app.logger.info("------------------------------------------------------------") return self + def __full_update_altersgruppe(self): + app.logger.info(" RkiServiceUpdateFull.__full_update_altersgruppe [begin]") + app.logger.info("------------------------------------------------------------") + RkiBundesland.remove_all() + app.logger.info("") + i = 0 + output_lines = [] + for altersgruppe_of_import in RkiImport.get_altersgruppe_list(): + i += 1 + my_altersgruppe = altersgruppe_of_import[0] + o = RkiAltersgruppe( + altersgruppe=my_altersgruppe, + processed_update=False, + processed_full_update=False, + ) + db.session.add(o) + output = " [ " + str(i) + " ] full update RKI altersgruppe ... " + str(o) + output_lines.append(output) + db.session.commit() + for output in output_lines: + app.logger.info(output) + app.logger.info(" RkiServiceUpdateFull.__full_update_altersgruppe [done]") + app.logger.info("------------------------------------------------------------") + return self + def __full_update_bundesland(self): app.logger.info(" RkiServiceUpdateFull.__full_update_bundesland [begin]") app.logger.info("------------------------------------------------------------") @@ -160,6 +225,8 @@ class RkiServiceUpdateFull(RkiServiceUpdateBase): def full_update_dimension_tables(self): RkiData.remove_all() self.__full_update_date_reported() + self.__full_update_date_datenstand() + self.__full_update_date_ref_datum() self.__full_update_landkreis() return self -- GitLab