From d6205515a76b48d65a0ccdfc61a7496c8d3e4e56 Mon Sep 17 00:00:00 2001 From: thomaswoehlke <thomas.woehlke@gmail.com> Date: Sun, 14 Feb 2021 23:46:46 +0100 Subject: [PATCH] ### 0.0.17 Release * Fixed #123 split RkiBundeslaenderService into two Services, one for bundeslaender and one for landkreise * Fixed #128 add fields from csv to RkiLandkreiseImport * Fixed #139 refactor RkiBundeslaenderServiceDownload to new method scheme introduced 07.02.2021 * Fixed #140 move WhoImport to RKI in: rk_service_import.py * Fixed #125 implement RkiLandkreise * Fixed #126 implement RkiBundeslaenderImport ### 0.0.18 Release * Fixed #39 SQLalchemy instead of SQL: AllModelClasses.remove_all() * Fixed #40 SQLalchemy instead of SQL: EcdcImport.get_date_rep() * Fixed #41 SQLalchemy instead of SQL: EcdcImport.get_countries_of_continent() * Fixed #107 SQLalchemy instead of SQL in: EcdcImport.get_countries_of_continent * Fixed #109 SQLalchemy instead of SQL in: EcdcImport.get_date_rep * Fixed #110 SQLalchemy instead of SQL in: EcdcImport.get_continent --- .../application/application_model.py | 44 ++++--- .../rki_vaccination/rki_vaccination_model.py | 10 +- .../rki_vaccination_model_import.py | 8 +- .../rki_vaccination_service_update.py | 116 ++++++------------ 4 files changed, 76 insertions(+), 102 deletions(-) diff --git a/src/covid19/blueprints/application/application_model.py b/src/covid19/blueprints/application/application_model.py index 2bc6fdf5..12c7817e 100644 --- a/src/covid19/blueprints/application/application_model.py +++ b/src/covid19/blueprints/application/application_model.py @@ -183,7 +183,7 @@ class ApplicationRegion(db.Model): return db.session.query(cls).all() @classmethod - def get_all_as_page(cls, page): + def get_all_as_page(cls, page: int): return db.session.query(cls)\ .order_by(cls.region)\ .paginate(page, per_page=ITEMS_PER_PAGE) @@ -196,25 +196,25 @@ class ApplicationRegion(db.Model): return regions @classmethod - def get_by_id(cls, other_id): + def get_by_id(cls, other_id: int): return db.session.query(cls)\ .filter(cls.id == other_id)\ .one() @classmethod - def find_by_id(cls, other_id): + def find_by_id(cls, other_id: int): return db.session.query(cls)\ .filter(cls.id == other_id)\ .one_or_none() @classmethod - def get_by_region(cls, i_region): + def get_by_region(cls, i_region: str): return db.session.query(cls)\ .filter(cls.region == i_region)\ .one() @classmethod - def find_by_region(cls, i_region): + def find_by_region(cls, i_region: str): return db.session.query(cls)\ .filter(cls.region == i_region)\ .one_or_none() @@ -240,7 +240,7 @@ class RkiDateReported(ApplicationDateReported): week_of_year = db.Column(db.Integer, nullable=False) @classmethod - def create_new_object_factory(cls, my_date_rep): + def create_new_object_factory(cls, my_date_rep: str): my_datum = date.fromisoformat(my_date_rep) (my_iso_year, week_number, weekday) = my_datum.isocalendar() my_year_week = "" + str(my_iso_year) @@ -292,12 +292,16 @@ class RkiCountry(db.Model): return None @classmethod - def get_all_as_page(cls, page): - return db.session.query(cls).order_by(cls.country).paginate(page, per_page=ITEMS_PER_PAGE) + def get_all_as_page(cls, page: int): + return db.session.query(cls)\ + .order_by(cls.country)\ + .paginate(page, per_page=ITEMS_PER_PAGE) @classmethod def get_all(cls): - return db.session.query(cls).order_by(cls.country).all() + return db.session.query(cls)\ + .order_by(cls.country)\ + .all() @classmethod def get_all_as_dict(cls): @@ -307,15 +311,20 @@ class RkiCountry(db.Model): return countries @classmethod - def get_by_id(cls, other_id): - return db.session.query(cls).filter(cls.id == other_id).one() + def get_by_id(cls, other_id: int): + return db.session.query(cls)\ + .filter(cls.id == other_id)\ + .one() @classmethod def get_germany(cls): - return db.session.query(cls).filter(cls.country_code == 'DE').one() + return db.session.query(cls)\ + .filter(cls.country_code == 'DE')\ + .one() @classmethod - def find_by_country_code_and_country_and_who_region_id(cls, i_country_code, i_country, my_region): + def find_by_country_code_and_country_and_who_region_id(cls, + i_country_code: str, i_country: str, my_region: RkiRegion): return db.session.query(cls).filter( and_( cls.country_code == i_country_code, @@ -325,13 +334,14 @@ class RkiCountry(db.Model): ).one_or_none() @classmethod - def find_by_country_code(cls, i_country_code): + def find_by_country_code(cls, i_country_code: str): return db.session.query(cls).filter( - cls.country_code == i_country_code + cls.country_code == i_country_code ).one_or_none() @classmethod - def get_who_countries_for_region(cls, region, page): + def get_who_countries_for_region(cls, region: str, page: int): return db.session.query(cls).filter( cls.region == region - ).order_by(cls.country).paginate(page, per_page=ITEMS_PER_PAGE) + ).order_by(cls.country)\ + .paginate(page, per_page=ITEMS_PER_PAGE) diff --git a/src/covid19/blueprints/rki_vaccination/rki_vaccination_model.py b/src/covid19/blueprints/rki_vaccination/rki_vaccination_model.py index 29dce236..111af443 100644 --- a/src/covid19/blueprints/rki_vaccination/rki_vaccination_model.py +++ b/src/covid19/blueprints/rki_vaccination/rki_vaccination_model.py @@ -24,7 +24,7 @@ class RkiVaccinationDateReported(ApplicationDateReported): week_of_year = db.Column(db.Integer, nullable=False) @classmethod - def create_new_object_factory(cls, my_date_rep): + def create_new_object_factory(cls, my_date_rep: str): my_datum = date.fromisoformat(my_date_rep) (my_iso_year, week_number, weekday) = my_datum.isocalendar() my_year_week = "" + str(my_iso_year) @@ -84,7 +84,7 @@ class RkiVaccinationData(db.Model): return None @classmethod - def get_all_as_page(cls, page): + def get_all_as_page(cls, page: int): return db.session.query(cls)\ .paginate(page, per_page=ITEMS_PER_PAGE) @@ -93,19 +93,19 @@ class RkiVaccinationData(db.Model): return db.session.query(cls).all() @classmethod - def get_by_id(cls, other_id): + def get_by_id(cls, other_id: int): return db.session.query(cls)\ .filter(cls.id == other_id)\ .one() @classmethod - def find_by_id(cls, other_id): + def find_by_id(cls, other_id: int): return db.session.query(cls) \ .filter(cls.id == other_id) \ .one_or_none() @classmethod - def find_by_datum(cls, other_datum): + def find_by_datum(cls, other_datum: RkiVaccinationDateReported): return db.session.query(cls) \ .filter(cls.date_reported_id == other_datum.id) \ .one_or_none() diff --git a/src/covid19/blueprints/rki_vaccination/rki_vaccination_model_import.py b/src/covid19/blueprints/rki_vaccination/rki_vaccination_model_import.py index 0f5957c2..9d6be30b 100644 --- a/src/covid19/blueprints/rki_vaccination/rki_vaccination_model_import.py +++ b/src/covid19/blueprints/rki_vaccination/rki_vaccination_model_import.py @@ -35,7 +35,7 @@ class RkiVaccinationImport(db.Model): return None @classmethod - def get_all_as_page(cls, page): + def get_all_as_page(cls, page: int): return db.session.query(cls)\ .order_by(cls.datum.desc())\ .paginate(page, per_page=ITEMS_PER_PAGE) @@ -47,19 +47,19 @@ class RkiVaccinationImport(db.Model): .all() @classmethod - def get_by_id(cls, other_id): + def get_by_id(cls, other_id: int): return db.session.query(cls)\ .filter(cls.id == other_id)\ .one() @classmethod - def find_by_id(cls, other_id): + def find_by_id(cls, other_id: int): return db.session.query(cls) \ .filter(cls.id == other_id) \ .one_or_none() @classmethod - def find_by_datum(cls, other_datum): + def find_by_datum(cls, other_datum: str): return db.session.query(cls) \ .filter(cls.datum == other_datum) \ .all() diff --git a/src/covid19/blueprints/rki_vaccination/rki_vaccination_service_update.py b/src/covid19/blueprints/rki_vaccination/rki_vaccination_service_update.py index 458fc4e1..3935b8f7 100644 --- a/src/covid19/blueprints/rki_vaccination/rki_vaccination_service_update.py +++ b/src/covid19/blueprints/rki_vaccination/rki_vaccination_service_update.py @@ -33,7 +33,7 @@ class RkiVaccinationServiceUpdate: app.logger.info("------------------------------------------------------------") return self - def __update_data_initial(self): + def __update_fact_table_initial(self): app.logger.info(" __update_data_initial [begin]") app.logger.info("------------------------------------------------------------") RkiVaccinationData.remove_all() @@ -41,52 +41,50 @@ class RkiVaccinationServiceUpdate: i = 0 for item_date_rep, in result_date_rep: #dt = item_date_rep['date_rep'] - europe_date_reported = RkiVaccinationDateReported.find_by_date_reported( - i_date_reported=item_date_rep + date_reported = RkiVaccinationDateReported.find_by_date_reported( + p_date_reported=item_date_rep ) - if europe_date_reported is None: - o = RkiVaccinationDateReported.create_new_object_factory(item_date_rep) - europe_date_reported = o - result_europe_data_import = RkiVaccinationImport.find_by_datum(europe_date_reported.date_reported) - for item_europe_data_import in result_europe_data_import: + if date_reported is None: + o = RkiVaccinationDateReported.create_new_object_factory(my_date_rep=item_date_rep) + date_reported = o + result_data_import = RkiVaccinationImport.find_by_datum(date_reported.date_reported) + for item_import in result_data_import: o = RkiVaccinationData( - date_reported=europe_date_reported, - dosen_kumulativ=item_europe_data_import.dosen_kumulativ, - dosen_differenz_zum_vortag=item_europe_data_import.dosen_differenz_zum_vortag, - dosen_biontech_kumulativ=item_europe_data_import.dosen_biontech_kumulativ, - dosen_moderna_kumulativ=item_europe_data_import.dosen_moderna_kumulativ, - personen_erst_kumulativ=item_europe_data_import.personen_erst_kumulativ, - personen_voll_kumulativ=item_europe_data_import.personen_voll_kumulativ, - impf_quote_erst=item_europe_data_import.impf_quote_erst, - impf_quote_voll=item_europe_data_import.impf_quote_voll, - indikation_alter_dosen=item_europe_data_import.indikation_alter_dosen, - indikation_beruf_dosen=item_europe_data_import.indikation_beruf_dosen, - indikation_medizinisch_dosen=item_europe_data_import.indikation_medizinisch_dosen, - indikation_pflegeheim_dosen=item_europe_data_import.indikation_pflegeheim_dosen, - indikation_alter_erst=item_europe_data_import.indikation_alter_erst, - indikation_beruf_erst=item_europe_data_import.indikation_beruf_erst, - indikation_medizinisch_erst=item_europe_data_import.indikation_medizinisch_erst, - indikation_pflegeheim_erst=item_europe_data_import.indikation_pflegeheim_erst, - indikation_alter_voll=item_europe_data_import.indikation_alter_voll, - indikation_beruf_voll=item_europe_data_import.indikation_beruf_voll, - indikation_medizinisch_voll=item_europe_data_import.indikation_medizinisch_voll, - indikation_pflegeheim_voll=item_europe_data_import.indikation_pflegeheim_voll + date_reported=date_reported, + dosen_kumulativ=item_import.dosen_kumulativ, + dosen_differenz_zum_vortag=item_import.dosen_differenz_zum_vortag, + dosen_biontech_kumulativ=item_import.dosen_biontech_kumulativ, + dosen_moderna_kumulativ=item_import.dosen_moderna_kumulativ, + personen_erst_kumulativ=item_import.personen_erst_kumulativ, + personen_voll_kumulativ=item_import.personen_voll_kumulativ, + impf_quote_erst=item_import.impf_quote_erst, + impf_quote_voll=item_import.impf_quote_voll, + indikation_alter_dosen=item_import.indikation_alter_dosen, + indikation_beruf_dosen=item_import.indikation_beruf_dosen, + indikation_medizinisch_dosen=item_import.indikation_medizinisch_dosen, + indikation_pflegeheim_dosen=item_import.indikation_pflegeheim_dosen, + indikation_alter_erst=item_import.indikation_alter_erst, + indikation_beruf_erst=item_import.indikation_beruf_erst, + indikation_medizinisch_erst=item_import.indikation_medizinisch_erst, + indikation_pflegeheim_erst=item_import.indikation_pflegeheim_erst, + indikation_alter_voll=item_import.indikation_alter_voll, + indikation_beruf_voll=item_import.indikation_beruf_voll, + indikation_medizinisch_voll=item_import.indikation_medizinisch_voll, + indikation_pflegeheim_voll=item_import.indikation_pflegeheim_voll ) db.session.add(o) - item_europe_data_import.row_imported = True - db.session.add(item_europe_data_import) i += 1 if i % 500 == 0: - app.logger.info(" update Europa initial ... " + str(i) + " rows") + app.logger.info(" update Vaccination initial ... " + str(i) + " rows") db.session.commit() db.session.commit() - app.logger.info(" update Europa initial ... " + str(i) + " rows total") + app.logger.info(" update Vaccination initial ... " + str(i) + " rows total") app.logger.info(" __update_data_initial [done]") app.logger.info("------------------------------------------------------------") return self - def __update_data_incremental(self): - app.logger.info(" __update_data_initial [begin]") + def __update_fact_table_incremental(self): + app.logger.info(" __update_data_initial Vaccination [begin]") app.logger.info("------------------------------------------------------------") result_date_rep = RkiVaccinationImport.get_daterep_missing_in_vaccination_data() i = 0 @@ -122,48 +120,14 @@ class RkiVaccinationServiceUpdate: db.session.add(item_europe_data_import) i += 1 if i % 500 == 0: - app.logger.info(" update Europa initial ... " + str(i) + " rows") + app.logger.info(" update Vaccination initial ... " + str(i) + " rows") db.session.commit() db.session.commit() - app.logger.info(" update Europa initial ... " + str(i) + " rows total") - app.logger.info(" __update_data_initial [done]") + app.logger.info(" update Vaccination initial ... " + str(i) + " rows total") + app.logger.info(" __update_data_initial Vaccination [done]") app.logger.info("------------------------------------------------------------") return self - # TODO: remove DEPRECATED - #def __update_data_short_DEPRECATED(self): - # app.logger.info(" __update_data_initial [begin]") - # app.logger.info("------------------------------------------------------------") - # app.logger.info(" ... ") - # app.logger.info(" __update_data_initial [done]") - # app.logger.info("------------------------------------------------------------") - # return self - - # TODO: remove DEPRECATED - #def update_db_initial_DEPRECATED(self): - # app.logger.info(" update_db_initial [begin]") - # app.logger.info("------------------------------------------------------------") - # RkiVaccinationDateReported.remove_all() - # RkiVaccinationData.remove_all() - # self.__update_date_reported() - # self.__update_data_initial() - # app.logger.info(" update_db_initial [done]") - # app.logger.info("------------------------------------------------------------") - # return self - - # TODO: remove DEPRECATED - #def update_db_short_DEPRECATED(self): - # app.logger.info(" update_db_short [begin]") - # app.logger.info("------------------------------------------------------------") - # RkiVaccinationDateReported.remove_all() - # RkiVaccinationData.remove_all() - # self.__update_date_reported() - # self.__update_data_short_DEPRECATED() - # app.logger.info(" update_db_short [done]") - # app.logger.info("------------------------------------------------------------") - # return self - - # Delegate def __update_dimension_table_date_reported(self): self.__update_date_reported() return self @@ -173,21 +137,21 @@ class RkiVaccinationServiceUpdate: return self def update_fact_table_incremental_only(self): - self.__update_data_incremental() + self.__update_fact_table_incremental() return self def update_fact_table_initial_only(self): - self.__update_data_initial() + self.__update_fact_table_initial() return self def update_star_schema_incremental(self): self.__update_dimension_table_date_reported() - self.__update_data_incremental() + self.__update_fact_table_incremental() return self def update_star_schema_initial(self): RkiVaccinationData.remove_all() RkiVaccinationDateReported.remove_all() self.__update_dimension_table_date_reported() - self.__update_data_initial() + self.__update_fact_table_initial() return self -- GitLab