From a9cec57fcd0ab5ea38434f0187fb754aefe7d8ae Mon Sep 17 00:00:00 2001
From: thomaswoehlke <thomas.woehlke@gmail.com>
Date: Tue, 25 May 2021 14:39:36 +0200
Subject: [PATCH] Refactoring: vaccination

---
 src/flask_covid19/blueprints/app_all/all_model.py           | 6 +++++-
 src/flask_covid19/blueprints/data_divi/divi_model.py        | 2 +-
 .../blueprints/data_divi/divi_service_import.py             | 1 +
 .../blueprints/data_divi/divi_service_update.py             | 3 ++-
 src/flask_covid19/blueprints/data_ecdc/ecdc_model.py        | 2 +-
 .../blueprints/data_ecdc/ecdc_service_import.py             | 3 ++-
 .../blueprints/data_ecdc/ecdc_service_update.py             | 5 ++---
 .../blueprints/data_owid/owid_service_import.py             | 3 ++-
 .../blueprints/data_owid/owid_service_update.py             | 3 ++-
 src/flask_covid19/blueprints/data_rki/rki_service_import.py | 3 ++-
 src/flask_covid19/blueprints/data_rki/rki_service_update.py | 3 ++-
 .../blueprints/data_vaccination/vaccination_model.py        | 1 +
 .../data_vaccination/vaccination_service_import.py          | 3 ++-
 .../data_vaccination/vaccination_service_update.py          | 3 ++-
 src/flask_covid19/blueprints/data_who/who_model.py          | 3 ---
 src/flask_covid19/blueprints/data_who/who_service_import.py | 3 ++-
 src/flask_covid19/blueprints/data_who/who_service_update.py | 3 ++-
 17 files changed, 31 insertions(+), 19 deletions(-)

diff --git a/src/flask_covid19/blueprints/app_all/all_model.py b/src/flask_covid19/blueprints/app_all/all_model.py
index 3f7e3fc1..c62a7fb2 100644
--- a/src/flask_covid19/blueprints/app_all/all_model.py
+++ b/src/flask_covid19/blueprints/app_all/all_model.py
@@ -315,7 +315,7 @@ class BlueprintLocation(db.Model):
 class BlueprintFactTableTimeSeries(db.Model):
     __tablename__ = 'blueprint_data_timeline'
     __table_args__ = (
-        db.UniqueConstraint('location_id', 'date_reported_id', name='uix_blueprint_data'),
+        db.UniqueConstraint('date_reported_id', name='uix_blueprint_data_timeline'),
     )
     id = db.Column(db.Integer, primary_key=True)
     date_reported_id = db.Column(db.Integer, db.ForeignKey('blueprint_date_reported.id'), nullable=False)
@@ -373,6 +373,10 @@ class BlueprintFactTable(db.Model):
     __table_args__ = (
         db.UniqueConstraint('location_id', 'date_reported_id', name='uix_blueprint_data'),
     )
+
+    def __str__(self):
+        return self.date_reported.__str__() + " " + self.location.__str__()
+
     id = db.Column(db.Integer, primary_key=True)
     date_reported_id = db.Column(db.Integer, db.ForeignKey('blueprint_date_reported.id'), nullable=False)
     date_reported = db.relationship(
diff --git a/src/flask_covid19/blueprints/data_divi/divi_model.py b/src/flask_covid19/blueprints/data_divi/divi_model.py
index ae4da87b..687a5ab7 100644
--- a/src/flask_covid19/blueprints/data_divi/divi_model.py
+++ b/src/flask_covid19/blueprints/data_divi/divi_model.py
@@ -60,7 +60,7 @@ class DiviCountry(BlueprintLocation):
     id = db.Column(db.Integer, primary_key=True)
     location_code = db.Column(db.String(255), unique=True, nullable=True)
     location = db.Column(db.String(255), nullable=False, unique=True)
-    location_group_id = db.Column(db.Integer, db.ForeignKey('blueprint_location_group.id'), nullable=False)
+    location_group_id = db.Column(db.Integer, db.ForeignKey('divi_country_region.id'), nullable=False)
     location_group = db.relationship(
         'DiviRegion',
         lazy='joined',
diff --git a/src/flask_covid19/blueprints/data_divi/divi_service_import.py b/src/flask_covid19/blueprints/data_divi/divi_service_import.py
index 29c7a6b0..55b14a07 100644
--- a/src/flask_covid19/blueprints/data_divi/divi_service_import.py
+++ b/src/flask_covid19/blueprints/data_divi/divi_service_import.py
@@ -4,6 +4,7 @@ import psycopg2
 
 from database import db, app
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 from flask_covid19.blueprints.data_divi.divi_model_import import DiviImport
 
 
diff --git a/src/flask_covid19/blueprints/data_divi/divi_service_update.py b/src/flask_covid19/blueprints/data_divi/divi_service_update.py
index a703398d..eaafd48e 100644
--- a/src/flask_covid19/blueprints/data_divi/divi_service_update.py
+++ b/src/flask_covid19/blueprints/data_divi/divi_service_update.py
@@ -1,6 +1,7 @@
 from database import db, app
 
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 
 from flask_covid19.blueprints.data_divi.divi_model import DiviRegion, DiviDateReported, DiviCountry, DiviData
 from flask_covid19.blueprints.data_divi.divi_model_import import DiviImport
@@ -28,7 +29,7 @@ class DiviServiceUpdateFull(DiviServiceUpdateBase):
             output = " [ " + str(i) + " ] " + i_date_reported
             c = DiviDateReported.find_by_date_reported(i_date_reported)
             if c is None:
-                o = DiviDateReported.create_new_object_factory(my_date_rep=i_date_reported)
+                o = BlueprintDateReportedFactory.create_new_object_for_divi(my_date_rep=i_date_reported)
                 db.session.add(o)
                 db.session.commit()
                 output += " added"
diff --git a/src/flask_covid19/blueprints/data_ecdc/ecdc_model.py b/src/flask_covid19/blueprints/data_ecdc/ecdc_model.py
index 460f5035..01c4240a 100644
--- a/src/flask_covid19/blueprints/data_ecdc/ecdc_model.py
+++ b/src/flask_covid19/blueprints/data_ecdc/ecdc_model.py
@@ -176,7 +176,7 @@ class EcdcData(BlueprintFactTable):
         'EcdcCountry',
         lazy='joined',
         cascade='save-update',
-        order_by='asc(EcdcDateReported.location)')
+        order_by='asc(EcdcCountry.location)')
     processed_update = db.Column(db.Boolean, nullable=False)
     processed_full_update = db.Column(db.Boolean, nullable=False)
     #
diff --git a/src/flask_covid19/blueprints/data_ecdc/ecdc_service_import.py b/src/flask_covid19/blueprints/data_ecdc/ecdc_service_import.py
index 0f9cef4b..a39a00f5 100644
--- a/src/flask_covid19/blueprints/data_ecdc/ecdc_service_import.py
+++ b/src/flask_covid19/blueprints/data_ecdc/ecdc_service_import.py
@@ -4,6 +4,7 @@ import psycopg2
 from database import db, app
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
 from flask_covid19.blueprints.data_ecdc.ecdc_model import EcdcDateReported
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 from flask_covid19.blueprints.data_ecdc.ecdc_model_import import EcdcImport, EcdcFlat
 
 
@@ -30,7 +31,7 @@ class EcdcServiceImport:
                 file_reader = csv.DictReader(csv_file, delimiter=',', quotechar='"')
                 for row in file_reader:
                     date_rep = row['dateRep']
-                    d = EcdcDateReported.create_new_object_factory(my_date_rep=date_rep)
+                    d = BlueprintDateReportedFactory.create_new_object_for_ecdc(my_date_rep=date_rep)
                     o = EcdcImport(
                         date_rep=date_rep,
                         day=row['day'],
diff --git a/src/flask_covid19/blueprints/data_ecdc/ecdc_service_update.py b/src/flask_covid19/blueprints/data_ecdc/ecdc_service_update.py
index 7495de21..2242bf7e 100644
--- a/src/flask_covid19/blueprints/data_ecdc/ecdc_service_update.py
+++ b/src/flask_covid19/blueprints/data_ecdc/ecdc_service_update.py
@@ -1,6 +1,7 @@
 from database import db, app
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
 from flask_covid19.blueprints.data_ecdc.ecdc_model_import import EcdcImport
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 from flask_covid19.blueprints.data_ecdc.ecdc_model import EcdcDateReported, EcdcContinent, EcdcCountry, EcdcData
 
 
@@ -26,9 +27,7 @@ class EcdcServiceUpdateFull(EcdcServiceUpdateBase):
         for result_item in result_date_rep:
             k += 1
             my_date_rep = result_item[0]
-            o = EcdcDateReported.create_new_object_factory(
-                my_date_rep=my_date_rep,
-            )
+            o = BlueprintDateReportedFactory.create_new_object_for_ecdc(my_date_rep=my_date_rep)
             db.session.add(o)
             a = str(o)
             b = str(k)
diff --git a/src/flask_covid19/blueprints/data_owid/owid_service_import.py b/src/flask_covid19/blueprints/data_owid/owid_service_import.py
index 7ca6214d..dbeebabd 100644
--- a/src/flask_covid19/blueprints/data_owid/owid_service_import.py
+++ b/src/flask_covid19/blueprints/data_owid/owid_service_import.py
@@ -4,6 +4,7 @@ from database import db, app
 
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
 from flask_covid19.blueprints.data_owid.owid_model import OwidDateReported
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 from flask_covid19.blueprints.data_owid.owid_model_import import OwidImport, OwidFlat
 
 
@@ -31,7 +32,7 @@ class OwidServiceImport:
                 k = 0
                 for row in file_reader:
                     date_reported = row['date']
-                    d = OwidDateReported.create_new_object_factory(my_date_rep=date_reported)
+                    d = BlueprintDateReportedFactory.create_new_object_for_owid(my_date_rep=date_reported)
                     o = OwidImport(
                         iso_code=row['iso_code'],
                         date=date_reported,
diff --git a/src/flask_covid19/blueprints/data_owid/owid_service_update.py b/src/flask_covid19/blueprints/data_owid/owid_service_update.py
index 2a4808ce..b05e65db 100644
--- a/src/flask_covid19/blueprints/data_owid/owid_service_update.py
+++ b/src/flask_covid19/blueprints/data_owid/owid_service_update.py
@@ -1,5 +1,6 @@
 from database import db, app
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 from flask_covid19.blueprints.data_owid.owid_model import OwidDateReported, OwidData, OwidContinent, OwidCountry
 from flask_covid19.blueprints.data_owid.owid_model_import import OwidImport
 
@@ -25,7 +26,7 @@ class OwidServiceUpdateFull(OwidServiceUpdateBase):
         log_lines = []
         for i_date_reported, in OwidImport.get_dates():
             i += 1
-            o = OwidDateReported.create_new_object_factory(my_date_rep=i_date_reported)
+            o = BlueprintDateReportedFactory.create_new_object_for_owid(my_date_rep=i_date_reported)
             db.session.add(o)
             output = " full update  OWID date_reported [ " + str(i) + " ] " + i_date_reported + " added"
             log_lines.append(output)
diff --git a/src/flask_covid19/blueprints/data_rki/rki_service_import.py b/src/flask_covid19/blueprints/data_rki/rki_service_import.py
index ed5bc71c..3388d1b4 100644
--- a/src/flask_covid19/blueprints/data_rki/rki_service_import.py
+++ b/src/flask_covid19/blueprints/data_rki/rki_service_import.py
@@ -3,6 +3,7 @@ import psycopg2
 
 from database import db, app
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 from flask_covid19.blueprints.data_rki.rki_model import RkiMeldedatum
 from flask_covid19.blueprints.data_rki.rki_model_import import RkiImport, RkiFlat
 
@@ -32,7 +33,7 @@ class RkiServiceImport:
                 for row in file_reader:
                     k = k + 1
                     meldedatum = row['Meldedatum']
-                    d = RkiMeldedatum.create_new_object_factory(my_date_rep=meldedatum)
+                    d = BlueprintDateReportedFactory.create_new_object_for_rki(my_date_rep=meldedatum)
                     # app.logger.info("RKI meldedatum: " + str(d) + " " + meldedatum)
                     o = RkiImport(
                         fid=row['FID'],
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 06d032b9..a7d966f8 100644
--- a/src/flask_covid19/blueprints/data_rki/rki_service_update.py
+++ b/src/flask_covid19/blueprints/data_rki/rki_service_update.py
@@ -1,6 +1,7 @@
 from database import db, app
 
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
+from flask_covid19.blueprints.app_web.all_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 import RkiImport
 
@@ -26,7 +27,7 @@ class RkiServiceUpdateFull(RkiServiceUpdateBase):
         output_lines = []
         for datum_of_import in RkiImport.get_datum_of_all_import():
             i += 1
-            o = RkiMeldedatum.create_new_object_factory(my_date_rep=datum_of_import)
+            o = BlueprintDateReportedFactory.create_new_object_for_rki(my_date_rep=datum_of_import)
             db.session.add(o)
             output = "  [ " + str(i) + " ] full update RKI meldedatum ... " + str(o)
             output_lines.append(output)
diff --git a/src/flask_covid19/blueprints/data_vaccination/vaccination_model.py b/src/flask_covid19/blueprints/data_vaccination/vaccination_model.py
index 6e206238..32aaff55 100644
--- a/src/flask_covid19/blueprints/data_vaccination/vaccination_model.py
+++ b/src/flask_covid19/blueprints/data_vaccination/vaccination_model.py
@@ -38,6 +38,7 @@ class VaccinationDateReported(BlueprintDateReported):
 
 class VaccinationData(BlueprintFactTableTimeSeries):
     __tablename__ = 'vaccination'
+    __mapper_args__ = {'concrete': True}
 
     id = db.Column(db.Integer, primary_key=True)
     date_reported_id = db.Column(db.Integer, db.ForeignKey('vaccination_date_reported.id'), nullable=False)
diff --git a/src/flask_covid19/blueprints/data_vaccination/vaccination_service_import.py b/src/flask_covid19/blueprints/data_vaccination/vaccination_service_import.py
index 9927ec1d..a8fa7cf8 100644
--- a/src/flask_covid19/blueprints/data_vaccination/vaccination_service_import.py
+++ b/src/flask_covid19/blueprints/data_vaccination/vaccination_service_import.py
@@ -4,6 +4,7 @@ import psycopg2
 from database import db, app
 
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 
 from flask_covid19.blueprints.data_vaccination.vaccination_model import VaccinationDateReported
 from flask_covid19.blueprints.data_vaccination.vaccination_model_import import VaccinationImport, VaccinationFlat
@@ -39,7 +40,7 @@ class VaccinationServiceImport:
                 file_reader = csv.DictReader(csv_file, delimiter='\t', quotechar='"')
                 for row in file_reader:
                     date_reported = row['date']
-                    d = VaccinationDateReported.create_new_object_factory(my_date_rep=date_reported)
+                    d = BlueprintDateReportedFactory.create_new_object_for_vaccination(my_date_rep=date_reported)
                     o = VaccinationImport(
                         dosen_kumulativ=self.__int(row['dosen_kumulativ']),
                         dosen_differenz_zum_vortag=self.__int(row['dosen_differenz_zum_vortag']),
diff --git a/src/flask_covid19/blueprints/data_vaccination/vaccination_service_update.py b/src/flask_covid19/blueprints/data_vaccination/vaccination_service_update.py
index d9a844f3..87f711a4 100644
--- a/src/flask_covid19/blueprints/data_vaccination/vaccination_service_update.py
+++ b/src/flask_covid19/blueprints/data_vaccination/vaccination_service_update.py
@@ -1,5 +1,6 @@
 from database import db, app
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 from flask_covid19.blueprints.data_vaccination.vaccination_model_import import VaccinationImport
 from flask_covid19.blueprints.data_vaccination.vaccination_model import VaccinationDateReported
 from flask_covid19.blueprints.data_vaccination.vaccination_model import VaccinationData
@@ -26,7 +27,7 @@ class VaccinationServiceUpdateFull(VaccinationServiceUpdateBase):
         i = 0
         for one_date_reported in date_reported_list:
             i += 1
-            o = VaccinationDateReported.create_new_object_factory(one_date_reported)
+            o = BlueprintDateReportedFactory.create_new_object_for_vaccination(my_date_rep=one_date_reported)
             db.session.add(o)
             output = " full_update RkiVaccination date_reported [ " + str(i) + " ] " + str(o)
             app.logger.info(output)
diff --git a/src/flask_covid19/blueprints/data_who/who_model.py b/src/flask_covid19/blueprints/data_who/who_model.py
index 3f9a96c0..c03fa1b5 100644
--- a/src/flask_covid19/blueprints/data_who/who_model.py
+++ b/src/flask_covid19/blueprints/data_who/who_model.py
@@ -130,9 +130,6 @@ class WhoData(BlueprintFactTable):
     __tablename__ = 'who'
     __mapper_args__ = {'concrete': True}
 
-    def __str__(self):
-        return self.date_reported.__str__() + " " + self.location.__str__()
-
     id = db.Column(db.Integer, primary_key=True)
     date_reported_id = db.Column(db.Integer, db.ForeignKey('who_date_reported.id'), nullable=False)
     date_reported = db.relationship(
diff --git a/src/flask_covid19/blueprints/data_who/who_service_import.py b/src/flask_covid19/blueprints/data_who/who_service_import.py
index 5a0fcc8a..ca00c01b 100644
--- a/src/flask_covid19/blueprints/data_who/who_service_import.py
+++ b/src/flask_covid19/blueprints/data_who/who_service_import.py
@@ -2,6 +2,7 @@ import sys
 import csv
 import psycopg2
 from database import db, app
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
 from flask_covid19.blueprints.data_who.who_model import WhoDateReported
 from flask_covid19.blueprints.data_who.who_model_import import WhoImport, WhoFlat
@@ -35,7 +36,7 @@ class WhoServiceImport:
                 k = 0
                 for row in file_reader:
                     date_reported = row[keyDate_reported]
-                    d = WhoDateReported.create_new_object_factory(date_reported)
+                    d = BlueprintDateReportedFactory.create_new_object_for_who(my_date_rep=date_reported)
                     o = WhoImport(
                         new_cases=row['New_cases'],
                         cumulative_cases=row['Cumulative_cases'],
diff --git a/src/flask_covid19/blueprints/data_who/who_service_update.py b/src/flask_covid19/blueprints/data_who/who_service_update.py
index aa935f35..0d0d5b2a 100644
--- a/src/flask_covid19/blueprints/data_who/who_service_update.py
+++ b/src/flask_covid19/blueprints/data_who/who_service_update.py
@@ -1,5 +1,6 @@
 from database import db, app
 from flask_covid19.blueprints.app_all.all_config import BlueprintConfig
+from flask_covid19.blueprints.app_web.all_model_factory import BlueprintDateReportedFactory
 from flask_covid19.blueprints.data_who.who_model import WhoCountryRegion, WhoDateReported, WhoCountry, WhoData
 from flask_covid19.blueprints.data_who.who_model_import import WhoImport
 
@@ -35,7 +36,7 @@ class WhoServiceUpdateFull(WhoServiceUpdateBase):
         #    app.logger.info(str(b))
         for s_date_reported in WhoImport.get_dates_reported_as_string_array():
             i += 1
-            o = WhoDateReported.create_new_object_factory(my_date_rep=s_date_reported)
+            o = BlueprintDateReportedFactory.create_new_object_for_who(my_date_rep=s_date_reported)
             db.session.add(o)
             a = str(o)
             b = str(i)
-- 
GitLab