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