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