From aca99c171b7ba99505bcc9db207dd2bd7a29ee4d Mon Sep 17 00:00:00 2001 From: thomaswoehlke <thomas.woehlke@gmail.com> Date: Mon, 25 Jan 2021 12:34:18 +0100 Subject: [PATCH] work --- .../covid19/vaccination/vaccination_model.py | 209 +----------------- .../vaccination/vaccination_service_import.py | 6 +- 2 files changed, 5 insertions(+), 210 deletions(-) diff --git a/org/woehlke/covid19/vaccination/vaccination_model.py b/org/woehlke/covid19/vaccination/vaccination_model.py index 8a6d334d..a64ddd2a 100644 --- a/org/woehlke/covid19/vaccination/vaccination_model.py +++ b/org/woehlke/covid19/vaccination/vaccination_model.py @@ -4,213 +4,8 @@ from database import db, ITEMS_PER_PAGE from sqlalchemy.orm import joinedload, raiseload -class VaccinationDateReported(db.Model): - __tablename__ = 'vaccination_date_reported' - - id = db.Column(db.Integer, primary_key=True) - date_reported = db.Column(db.String(255), nullable=False, unique=True) - - @classmethod - def remove_all(cls): - db.session.execute("delete from " + cls.__tablename__) - db.session.commit() - return None - - @classmethod - def get_all_as_page(cls, page): - return db.session.query(cls).order_by(cls.date_reported.desc()).paginate(page, per_page=ITEMS_PER_PAGE) - - @classmethod - def get_all(cls): - return db.session.query(cls).all() - - @classmethod - def get_all_as_dict(cls): - dates_reported = {} - for my_date_reported in cls.get_all(): - dates_reported[my_date_reported.date_reported] = my_date_reported - return dates_reported - - @classmethod - def get_by_id(cls, other_id): - return db.session.query(cls).filter(cls.id == other_id).one() - - @classmethod - def find_by_date_reported(cls, i_date_reported): - return db.session.query(cls).filter(cls.date_reported == i_date_reported).one_or_none() - - -class VaccinationRegion(db.Model): - __tablename__ = 'vaccination_region' - - id = db.Column(db.Integer, primary_key=True) - region = db.Column(db.String(255), unique=True) - - @classmethod - def remove_all(cls): - db.session.execute("delete from " + cls.__tablename__) - db.session.commit() - return None - - @classmethod - def get_all(cls): - return db.session.query(cls).all() - - @classmethod - def get_all_as_page(cls, page): - return db.session.query(cls).order_by(cls.region).paginate(page, per_page=ITEMS_PER_PAGE) - - @classmethod - def get_all_as_dict(cls): - regions = {} - for my_region in cls.get_all(): - regions[my_region.region] = my_region - return regions - - @classmethod - def get_by_id(cls, other_id): - return db.session.query(cls).filter(cls.id == other_id).one() - - @classmethod - def find_by_region(cls, i_who_region): - my_region = db.session.query(cls).filter(cls.region == i_who_region).one_or_none() - return my_region - - -class VaccinationCountry(db.Model): - __tablename__ = 'vaccination_country' - - id = db.Column(db.Integer, primary_key=True) - country_code = db.Column(db.String(255), unique=True, nullable=False) - country = db.Column(db.String(255), unique=True, nullable=False) - region_id = db.Column(db.Integer, db.ForeignKey('vaccination_region.id'), nullable=False) - region = db.relationship( - 'VaccinationRegion', - lazy='subquery', - order_by='VaccinationRegion.region') - - @classmethod - def remove_all(cls): - db.session.execute("delete from " + cls.__tablename__) - db.session.commit() - 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) - - @classmethod - def get_all(cls): - return db.session.query(cls).order_by(cls.country).all() - - @classmethod - def get_all_as_dict(cls): - countries = {} - for my_country in cls.get_all(): - countries[my_country.country_code] = my_country - return countries - - @classmethod - def get_by_id(cls, other_id): - 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() - - @classmethod - def find_by_country_code_and_country_and_who_region_id(cls, i_country_code, i_country, my_region): - return db.session.query(cls).filter( - and_( - cls.country_code == i_country_code, - cls.country == i_country, - cls.region_id == my_region.id - ) - ).one_or_none() - - @classmethod - def find_by_country_code(cls, i_country_code): - return db.session.query(cls).filter( - cls.country_code == i_country_code - ).one_or_none() - - @classmethod - def get_who_countries_for_region(cls, region, page): - return db.session.query(cls).filter( - cls.region == region - ).order_by(cls.country).paginate(page, per_page=ITEMS_PER_PAGE) - - -class VaccinationData(db.Model): - __tablename__ = 'vaccination_global_data' - - id = db.Column(db.Integer, primary_key=True) - cases_new = db.Column(db.Integer, nullable=False) - cases_cumulative = db.Column(db.Integer, nullable=False) - deaths_new = db.Column(db.Integer, nullable=False) - deaths_cumulative = db.Column(db.Integer, nullable=False) - date_reported_id = db.Column(db.Integer, - db.ForeignKey('vaccination_date_reported.id'), nullable=False) - date_reported = db.relationship( - 'VaccinationDateReported', lazy='joined', order_by='desc(VaccinationDateReported.date_reported)') - country_id = db.Column(db.Integer, - db.ForeignKey('vaccination_country.id'), nullable=False) - country = db.relationship( - 'VaccinationCountry', lazy='joined', order_by='asc(VaccinationCountry.country)') - - @classmethod - def remove_all(cls): - db.session.execute("delete from " + cls.__tablename__) - db.session.commit() - return None - - @classmethod - def get_all_as_page(cls, page): - return db.session.query(cls).paginate(page, per_page=ITEMS_PER_PAGE) - - @classmethod - def get_all(cls): - return db.session.query(cls).all() - - @classmethod - def get_by_id(cls, other_id): - return db.session.query(cls).filter(cls.id == other_id).one() - - @classmethod - def find_one_or_none_by_date_and_country(cls, my_date_reported, my_country): - return db.session.query(cls).filter( - and_( - cls.date_reported_id == my_date_reported.id, - cls.country_id == my_country.id - ) - ).one_or_none() - - @classmethod - def get_data_for_country(cls, who_country, page): - return db.session.query(cls).filter( - cls.country_id == who_country.id - ).populate_existing().options( - joinedload(cls.country).subqueryload(VaccinationCountry.region), - joinedload(cls.date_reported) - ).paginate(page, per_page=ITEMS_PER_PAGE) - - @classmethod - def get_data_for_day(cls, date_reported, page): - return db.session.query(cls).filter( - cls.date_reported_id == date_reported.id - ).populate_existing().options( - joinedload(cls.country).subqueryload(VaccinationCountry.region), - joinedload(cls.date_reported) - ).order_by( - cls.deaths_new.desc(), - cls.cases_new.desc(), - cls.deaths_cumulative.desc(), - cls.cases_cumulative.desc() - ).paginate(page, per_page=ITEMS_PER_PAGE) - - -class VaccinationDataImportTable(db.Model): - __tablename__ = 'vaccination_data_import' +class VaccinationGermanyTimeline(db.Model): + __tablename__ = 'vaccination_germany_timeline' id = db.Column(db.Integer, primary_key=True) datum = db.Column(db.String(255), nullable=False) diff --git a/org/woehlke/covid19/vaccination/vaccination_service_import.py b/org/woehlke/covid19/vaccination/vaccination_service_import.py index 796857bd..1ec838a0 100644 --- a/org/woehlke/covid19/vaccination/vaccination_service_import.py +++ b/org/woehlke/covid19/vaccination/vaccination_service_import.py @@ -3,7 +3,7 @@ import sys import csv import psycopg2 from database import db, app -from org.woehlke.covid19.vaccination.vaccination_model import VaccinationDataImportTable +from org.woehlke.covid19.vaccination.vaccination_model import VaccinationGermanyTimeline vaccination_service_import = None @@ -35,12 +35,12 @@ class VaccinationServiceImport: else: keyDate_reported = 'Date_reported' try: - VaccinationDataImportTable.remove_all() + VaccinationGermanyTimeline.remove_all() k = 0 with open(self.__src_cvsfile_name, newline='\n') as csv_file: file_reader = csv.DictReader(csv_file, delimiter='\t', quotechar='"') for row in file_reader: - o = VaccinationDataImportTable( + o = VaccinationGermanyTimeline( datum=row['date'], dosen_kumulativ=int(row['dosen_kumulativ']), dosen_differenz_zum_vortag=int(row['dosen_differenz_zum_vortag']), -- GitLab