From e43bf9b0b0c306709e09eb683ddbb61684aa1a8c Mon Sep 17 00:00:00 2001 From: thomaswoehlke <thomas.woehlke@gmail.com> Date: Sat, 30 Jan 2021 18:08:55 +0100 Subject: [PATCH] ### 0.0.13 Release * Fixed #49 EuropeServiceUpdate.__update_data_short() (wontfix) * Fixed #52 download vaccination timeline data file * Fixed #53 import vaccination timeline data file into db * Fixed #54 /vaccination/imported * Fixed #57 frontend: use npm for handling 3rdParty css and javascript modules like jQuery, Bootstrap * Fixed #58 frontend: remove jumbotron from all pageheader, put jumbotron as main content on home page * Fixed #47 major refactoring: Routes from app.py to org...who,europe,... (Doublette von #65) * Fixed #48 major refactoring: Tasks from server_mq.py to org...who,europe,... (Doublette von #65) * Fixed #64 major refactoring: create two packages: for web app and for celery worker * Issue #65 major refactoring: add flask-blueprints for admin, common, europe, rki, vaccination, who ### 0.0.14 Release * Issue #66 frontend: migrate to Bootstrap Theme sb-admin-angular * Issue #67 implement Flask-Login ### 0.0.15 Release * Issue #5 Visual Graphs for Data per Countries order by Date * Issue #59 frontend: add correct breadcrumb to every page * Issue #60 frontend: better design for tables * Issue #61 frontend: better design for navtabs * Issue #62 frontend: better design for pages * Issue #63 frontend: add footer design ### 0.0.16 Release * Issue #28 /admin/database/import * Issue #39 SQLalchemy instead of SQL: AllModelClasses.remove_all() * Issue #40 SQLalchemy instead of SQL: EuropeDataImportTable.get_date_rep() * Issue #41 SQLalchemy instead of SQL: EuropeDataImportTable.get_countries_of_continent() * Issue #42 SQLalchemy instead of SQL: WhoGlobalDataImportTable.get_new_dates_as_array() --- README.md | 4 +- covid19/oodm/admin/admin_service.py | 8 +- covid19/oodm/common/common_model.py | 2 +- covid19/oodm/common/common_service.py | 8 +- covid19/oodm/europe/europe_model.py | 80 ------------------ covid19/oodm/europe/europe_model_import.py | 81 +++++++++++++++++++ covid19/oodm/europe/europe_service.py | 15 +--- covid19/oodm/europe/europe_service_config.py | 9 +++ .../oodm/europe/europe_service_download.py | 19 ++--- covid19/oodm/europe/europe_service_import.py | 14 ++-- covid19/oodm/europe/europe_service_update.py | 21 +++-- covid19/oodm/nrw/__init__.py | 0 covid19/oodm/rki/rki_model_import.py | 74 +++++++++++++++++ covid19/oodm/rki/rki_service.py | 8 +- covid19/oodm/rki/rki_service_download.py | 28 +++---- covid19/oodm/rki/rki_service_import.py | 10 +-- covid19/oodm/rki/rki_service_update.py | 12 +-- covid19/oodm/vaccination/vaccination_model.py | 63 --------------- .../vaccination/vaccination_model_import.py | 65 +++++++++++++++ .../vaccination/vaccination_service_config.py | 11 +++ .../vaccination_service_download.py | 11 +-- .../vaccination/vaccination_service_import.py | 4 +- covid19/oodm/who/who_model.py | 79 ------------------ covid19/oodm/who/who_model_import.py | 80 ++++++++++++++++++ covid19/oodm/who/who_service.py | 15 +--- covid19/oodm/who/who_service_config.py | 9 +++ covid19/oodm/who/who_service_download.py | 19 ++--- covid19/oodm/who/who_service_import.py | 14 ++-- covid19/oodm/who/who_service_update.py | 22 +++-- covid19/views.py | 1 - covid19/views_admin.py | 7 +- covid19/views_europe.py | 4 +- covid19/views_nrw.py | 64 --------------- covid19/views_rki.py | 2 +- covid19/views_vaccination.py | 9 +-- covid19/views_who.py | 9 +-- 36 files changed, 434 insertions(+), 447 deletions(-) create mode 100644 covid19/oodm/europe/europe_model_import.py create mode 100644 covid19/oodm/europe/europe_service_config.py delete mode 100644 covid19/oodm/nrw/__init__.py create mode 100644 covid19/oodm/rki/rki_model_import.py create mode 100644 covid19/oodm/vaccination/vaccination_model_import.py create mode 100644 covid19/oodm/vaccination/vaccination_service_config.py create mode 100644 covid19/oodm/who/who_model_import.py create mode 100644 covid19/oodm/who/who_service_config.py delete mode 100644 covid19/views_nrw.py diff --git a/README.md b/README.md index ee1ed77c..1ab85f8d 100644 --- a/README.md +++ b/README.md @@ -236,9 +236,11 @@ class WhoGlobalDataImportTable(db.Model): * Fixed #58 frontend: remove jumbotron from all pageheader, put jumbotron as main content on home page * Fixed #47 major refactoring: Routes from app.py to org...who,europe,... (Doublette von #65) * Fixed #48 major refactoring: Tasks from server_mq.py to org...who,europe,... (Doublette von #65) -* Fixed #64 major refactoring: create two packages: for web app and for celery worker +* Fixed #64 major refactoring: create two packages: for web app and for celery worker +* Issue #68 TODO: move Queries from Services to Model-Classes * Issue #65 major refactoring: add flask-blueprints for admin, common, europe, rki, vaccination, who + ### 0.0.14 Release * Issue #66 frontend: migrate to Bootstrap Theme sb-admin-angular * Issue #67 implement Flask-Login diff --git a/covid19/oodm/admin/admin_service.py b/covid19/oodm/admin/admin_service.py index 83b6e054..599d35e6 100644 --- a/covid19/oodm/admin/admin_service.py +++ b/covid19/oodm/admin/admin_service.py @@ -6,12 +6,12 @@ from database import app class AdminService: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" Admin Service [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" Admin Service [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database self.limit_nr = 20 - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") app.logger.info(" Admin Service [ready]") def run_admin_database_dump(self): diff --git a/covid19/oodm/common/common_model.py b/covid19/oodm/common/common_model.py index 97b724f1..66217d8c 100644 --- a/covid19/oodm/common/common_model.py +++ b/covid19/oodm/common/common_model.py @@ -1,4 +1,4 @@ -from dfdsfjshdbjhfds import db, ITEMS_PER_PAGE +from database import db, ITEMS_PER_PAGE class CommonDatum(db.Model): diff --git a/covid19/oodm/common/common_service.py b/covid19/oodm/common/common_service.py index 8203d45a..e2bc66a4 100644 --- a/covid19/oodm/common/common_service.py +++ b/covid19/oodm/common/common_service.py @@ -3,10 +3,10 @@ from database import app class CommonService: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" Common Service [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" Common Service [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database self.limit_nr = 20 - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") app.logger.info(" Common Service [ready]") diff --git a/covid19/oodm/europe/europe_model.py b/covid19/oodm/europe/europe_model.py index 631db4d0..89e8bd33 100644 --- a/covid19/oodm/europe/europe_model.py +++ b/covid19/oodm/europe/europe_model.py @@ -3,86 +3,6 @@ from datetime import date from database import db, ITEMS_PER_PAGE -class EuropeDataImportTable(db.Model): - __tablename__ = 'europe_data_import' - - id = db.Column(db.Integer, primary_key=True) - date_rep = db.Column(db.String(255), nullable=False) - year_week = db.Column(db.String(255), nullable=False) - cases_weekly = db.Column(db.String(255), nullable=False) - deaths_weekly = db.Column(db.String(255), nullable=False) - pop_data_2019 = db.Column(db.String(255), nullable=False) - countries_and_territories = db.Column(db.String(255), nullable=False) - geo_id = db.Column(db.String(255), nullable=False) - country_territory_code = db.Column(db.String(255), nullable=False) - continent_exp = db.Column(db.String(255), nullable=False) - notification_rate_per_100000_population_14days = db.Column(db.String(255), nullable=False) - - @classmethod - def remove_all(cls): - # TODO: SQLalchemy instead of SQL - db.session.execute("delete from " + cls.__tablename__ + " cascade") - db.session.commit() - return None - - @classmethod - def get_all_as_page(cls, page): - #TODO: #51 order_by: year_week, country - 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 get_date_rep(cls): - #TODO: SQLalchemy instead of SQL - sql = "select distinct date_rep, year_week from europe_data_import order by year_week desc" - return db.session.execute(sql).fetchall() - - @classmethod - def get_continent(cls): - # TODO: SQLalchemy instead of SQL - sql = "select distinct continent_exp from europe_data_import order by continent_exp asc" - return db.session.execute(sql).fetchall() - - @classmethod - def get_countries_of_continent(cls, my_continent): - my_continent_exp = my_continent.continent_exp - my_params = {} - my_params['my_continent_param'] = my_continent_exp - # TODO: SQLalchemy instead of SQL - sql = """ - select distinct - countries_and_territories, - geo_id, - country_territory_code, - pop_data_2019, - continent_exp - from - europe_data_import - group by - countries_and_territories, - geo_id, - country_territory_code, - pop_data_2019, - continent_exp - having - continent_exp = :my_continent_param - order by - countries_and_territories - """ - return db.session.execute(sql, my_params).fetchall() - - @classmethod - def find_by_date_reported(cls, europe_date_reported): - return db.session.query(cls).filter(cls.year_week == europe_date_reported.year_week).all() - - class EuropeDateReported(db.Model): __tablename__ = 'europe_date_reported' diff --git a/covid19/oodm/europe/europe_model_import.py b/covid19/oodm/europe/europe_model_import.py new file mode 100644 index 00000000..4570ba8d --- /dev/null +++ b/covid19/oodm/europe/europe_model_import.py @@ -0,0 +1,81 @@ +from database import db, ITEMS_PER_PAGE + + +class EuropeDataImportTable(db.Model): + __tablename__ = 'europe_data_import' + + id = db.Column(db.Integer, primary_key=True) + date_rep = db.Column(db.String(255), nullable=False) + year_week = db.Column(db.String(255), nullable=False) + cases_weekly = db.Column(db.String(255), nullable=False) + deaths_weekly = db.Column(db.String(255), nullable=False) + pop_data_2019 = db.Column(db.String(255), nullable=False) + countries_and_territories = db.Column(db.String(255), nullable=False) + geo_id = db.Column(db.String(255), nullable=False) + country_territory_code = db.Column(db.String(255), nullable=False) + continent_exp = db.Column(db.String(255), nullable=False) + notification_rate_per_100000_population_14days = db.Column(db.String(255), nullable=False) + + @classmethod + def remove_all(cls): + # TODO: SQLalchemy instead of SQL + db.session.execute("delete from " + cls.__tablename__ + " cascade") + db.session.commit() + return None + + @classmethod + def get_all_as_page(cls, page): + #TODO: #51 order_by: year_week, country + 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 get_date_rep(cls): + #TODO: SQLalchemy instead of SQL + sql = "select distinct date_rep, year_week from europe_data_import order by year_week desc" + return db.session.execute(sql).fetchall() + + @classmethod + def get_continent(cls): + # TODO: SQLalchemy instead of SQL + sql = "select distinct continent_exp from europe_data_import order by continent_exp asc" + return db.session.execute(sql).fetchall() + + @classmethod + def get_countries_of_continent(cls, my_continent): + my_continent_exp = my_continent.continent_exp + my_params = {} + my_params['my_continent_param'] = my_continent_exp + # TODO: SQLalchemy instead of SQL + sql = """ + select distinct + countries_and_territories, + geo_id, + country_territory_code, + pop_data_2019, + continent_exp + from + europe_data_import + group by + countries_and_territories, + geo_id, + country_territory_code, + pop_data_2019, + continent_exp + having + continent_exp = :my_continent_param + order by + countries_and_territories + """ + return db.session.execute(sql, my_params).fetchall() + + @classmethod + def find_by_date_reported(cls, europe_date_reported): + return db.session.query(cls).filter(cls.year_week == europe_date_reported.year_week).all() diff --git a/covid19/oodm/europe/europe_service.py b/covid19/oodm/europe/europe_service.py index 85451732..36a4f91b 100644 --- a/covid19/oodm/europe/europe_service.py +++ b/covid19/oodm/europe/europe_service.py @@ -1,5 +1,3 @@ -import os - from database import app from covid19.oodm.europe.europe_service_download import EuropeServiceDownload from covid19.oodm.europe.europe_service_import import EuropeServiceImport @@ -8,19 +6,14 @@ from covid19.oodm.europe.europe_service_update import EuropeServiceUpdate class EuropeService: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" Europe Service [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" Europe Service [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database - self.limit_nr = 20 - self.__europa_cvsfile_name = "ecdc_europa_data.csv" - self.__src_europa_cvsfile_name = "data"+os.sep+self.__europa_cvsfile_name - self.__src_europa_cvsfile_tmp_name = "data"+os.sep+"tmp_"+self.__europa_cvsfile_name - self.__url_src_data = "https://opendata.ecdc.europa.eu/covid19/casedistribution/csv/" self.europe_service_download = EuropeServiceDownload(database) self.europe_service_import = EuropeServiceImport(database) self.europe_service_update = EuropeServiceUpdate(database) - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") app.logger.info(" Europe Service [ready] ") def download(self): diff --git a/covid19/oodm/europe/europe_service_config.py b/covid19/oodm/europe/europe_service_config.py new file mode 100644 index 00000000..bf152db3 --- /dev/null +++ b/covid19/oodm/europe/europe_service_config.py @@ -0,0 +1,9 @@ +import os + + +class EuropeServiceDownloadConfig: + def __init__(self): + self.limit_nr = 20 + self.data_path = ".."+os.sep+"data" + self.cvsfile_name = "ecdc_europa_data.csv" + self.url_src_data = "https://opendata.ecdc.europa.eu/covid19/casedistribution/csv/" diff --git a/covid19/oodm/europe/europe_service_download.py b/covid19/oodm/europe/europe_service_download.py index fdf7107e..39d880a0 100644 --- a/covid19/oodm/europe/europe_service_download.py +++ b/covid19/oodm/europe/europe_service_download.py @@ -2,25 +2,18 @@ import os import wget from flask import flash from database import app - - -class EuropeServiceDownloadConfig: - def __init__(self): - self.limit_nr = 20 - self.data_path = ".."+os.sep+"data" - self.cvsfile_name = "ecdc_europa_data.csv" - self.url_src_data = "https://opendata.ecdc.europa.eu/covid19/casedistribution/csv/" +from covid19.oodm.europe.europe_service_config import EuropeServiceDownloadConfig class EuropeServiceDownload: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" Europe Service Download [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" Europe Service Download [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database self.cfg = EuropeServiceDownloadConfig() - app.logger.info("------------------------------------------------------------") - app.logger.info(" Europe Service Download [ready] ") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" Europe Service Download [ready] ") def download(self): src_cvsfile_name = self.cfg.data_path+os.sep+self.cfg.cvsfile_name diff --git a/covid19/oodm/europe/europe_service_import.py b/covid19/oodm/europe/europe_service_import.py index 6e9eae7e..bbc41fe2 100644 --- a/covid19/oodm/europe/europe_service_import.py +++ b/covid19/oodm/europe/europe_service_import.py @@ -3,19 +3,19 @@ import csv import psycopg2 from database import db, app -from covid19.oodm.europe.europe_model import EuropeDataImportTable -from covid19.oodm.europe.europe_service_download import EuropeServiceDownloadConfig +from covid19.oodm.europe.europe_model_import import EuropeDataImportTable +from covid19.oodm.europe.europe_service_config import EuropeServiceDownloadConfig class EuropeServiceImport: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" Europe Service Import [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" Europe Service Import [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database self.cfg = EuropeServiceDownloadConfig() - app.logger.info("------------------------------------------------------------") - app.logger.info(" Europe Service Import [ready] ") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" Europe Service Import [ready] ") def import_datafile_to_db(self): src_cvsfile_name = self.cfg.data_path+os.sep+self.cfg.cvsfile_name diff --git a/covid19/oodm/europe/europe_service_update.py b/covid19/oodm/europe/europe_service_update.py index 8a15b190..b3f3474a 100644 --- a/covid19/oodm/europe/europe_service_update.py +++ b/covid19/oodm/europe/europe_service_update.py @@ -1,22 +1,19 @@ -import os from database import db, app -from covid19.oodm.europe.europe_model import EuropeDataImportTable, \ - EuropeDateReported, EuropeContinent, EuropeCountry, EuropeData +from covid19.oodm.europe.europe_service_config import EuropeServiceDownloadConfig +from covid19.oodm.europe.europe_model_import import EuropeDataImportTable +from covid19.oodm.europe.europe_model import EuropeDateReported, EuropeContinent, EuropeCountry, EuropeData class EuropeServiceUpdate: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" Europe Service Update [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" Europe Service Update [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database - self.limit_nr = 20 - self.__cvsfile_name = "ecdc_europa_data.csv" - self.__src_cvsfile_name = "data" + os.sep + self.__cvsfile_name - self.__src_cvsfile_tmp_name = "data" + os.sep + "tmp_" + self.__cvsfile_name + self.cfg = EuropeServiceDownloadConfig() self.__url_src_data = "https://opendata.ecdc.europa.eu/covid19/casedistribution/csv/" - app.logger.info("------------------------------------------------------------") - app.logger.info(" Europe Service Update [ready] ") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" Europe Service Update [ready] ") def __update_date_reported(self): app.logger.info(" __update_date_reported [begin]") diff --git a/covid19/oodm/nrw/__init__.py b/covid19/oodm/nrw/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/covid19/oodm/rki/rki_model_import.py b/covid19/oodm/rki/rki_model_import.py new file mode 100644 index 00000000..00a9055d --- /dev/null +++ b/covid19/oodm/rki/rki_model_import.py @@ -0,0 +1,74 @@ +from database import db, ITEMS_PER_PAGE + + +class RkiGermanyDataImportTable(db.Model): + __tablename__ = 'rki_global_data_import' + + id = db.Column(db.Integer, primary_key=True) + date_reported = db.Column(db.String(255), nullable=False) + country_code = db.Column(db.String(255), nullable=False) + country = db.Column(db.String(255), nullable=False) + who_region = db.Column(db.String(255), nullable=False) + new_cases = db.Column(db.String(255), nullable=False) + cumulative_cases = db.Column(db.String(255), nullable=False) + new_deaths = db.Column(db.String(255), nullable=False) + cumulative_deaths = db.Column(db.String(255), nullable=False) + + @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 get_regions(cls): + return db.session.query(cls.who_region).distinct() + + @classmethod + def get_dates_reported(cls): + return db.session.query(cls.date_reported).distinct() + + @classmethod + def get_for_one_day(cls, day): + return db.session.query(cls).filter(cls.date_reported == day).all() + + @classmethod + def get_new_dates_as_array(cls): + sql_query = """ + select + date_reported + from + who_global_data_import + where + date_reported + not in ( + select + distinct + who_date_reported.date_reported + from + who_global_data + left join + who_date_reported + on + who_global_data.date_reported_id=who_date_reported.id + ) + group by + who_global_data_import.date_reported + order by date_reported desc + """ + new_dates = [] + for item in db.session.execute(sql_query): + new_dates.append(item['date_reported']) + return new_dates diff --git a/covid19/oodm/rki/rki_service.py b/covid19/oodm/rki/rki_service.py index 03dd9357..f8934da7 100644 --- a/covid19/oodm/rki/rki_service.py +++ b/covid19/oodm/rki/rki_service.py @@ -7,15 +7,15 @@ from covid19.oodm.rki.rki_service_update import RkiServiceUpdate class RkiService: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" RKI Service [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" RKI Service [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database self.limit_nr = 20 self.service_download = RkiServiceDownload(database) self.service_import = RkiServiceImport(database) self.service_update = RkiServiceUpdate(database) - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") app.logger.info(" RKI Service [ready]") def run_download(self): diff --git a/covid19/oodm/rki/rki_service_download.py b/covid19/oodm/rki/rki_service_download.py index 8c600fe9..ed188bd7 100644 --- a/covid19/oodm/rki/rki_service_download.py +++ b/covid19/oodm/rki/rki_service_download.py @@ -8,9 +8,9 @@ from database import app class RkiServiceDownload: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" RKI Service Download [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" RKI Service Download [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database self.limit_nr = 20 datum_heute = date.today().isoformat() @@ -21,8 +21,8 @@ class RkiServiceDownload: self.__landkreise_cvsfile_name = "RKI_COVID19__"+datum_heute+"__landkreise.csv" self.__landkreise_url_src ="https://opendata.arcgis.com/datasets/917fc37a709542548cc3be077a786c17_0.csv" # - app.logger.info("------------------------------------------------------------") - app.logger.info(" RKI Service Download [ready]") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" RKI Service Download [ready]") def __download_file(self, datascope, cvsfile_name, url_src): src_cvsfile_path = ".." + os.sep + "data" + os.sep + cvsfile_name @@ -38,19 +38,19 @@ class RkiServiceDownload: data_file = wget.download(url_src, src_cvsfile_path) app.logger.info(" " + data_file + " ") except RuntimeError as error: - app.logger.info("############################################################") - app.logger.info(" " + error + " ") - app.logger.info("############################################################") + app.logger.error("############################################################") + app.logger.error(" " + error + " ") + app.logger.error("############################################################") flash(message="error while downloading: " + url_src, category='error') except Exception as error: - app.logger.info("############################################################") - app.logger.info(error) - app.logger.info("############################################################") + app.logger.error("############################################################") + app.logger.error(error) + app.logger.error("############################################################") flash(message="error after downloading: " + url_src, category='error') except AttributeError as aerror: - app.logger.info("############################################################") - app.logger.info(aerror) - app.logger.info("############################################################") + app.logger.error("############################################################") + app.logger.error(aerror) + app.logger.error("############################################################") finally: app.logger.info("------------------------------------------------------------") app.logger.info(" download - RKI "+datascope+" [done] ") diff --git a/covid19/oodm/rki/rki_service_import.py b/covid19/oodm/rki/rki_service_import.py index 69421d1a..acea710a 100644 --- a/covid19/oodm/rki/rki_service_import.py +++ b/covid19/oodm/rki/rki_service_import.py @@ -10,17 +10,17 @@ from covid19.oodm.who.who_model import WhoGlobalDataImportTable class RkiServiceImport: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" RKI Service Import [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" RKI Service Import [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database self.limit_nr = 20 self.__who_cvsfile_name = "WHO-COVID-19-global-data.csv" self.__src_who_cvsfile_name = "data"+os.sep+self.__who_cvsfile_name self.__src_who_cvsfile_tmp_name = "data"+os.sep+"tmp_"+self.__who_cvsfile_name self.__url_src_data = "https://covid19.who.int/"+self.__who_cvsfile_name - app.logger.info("------------------------------------------------------------") - app.logger.info(" RKI Service Import [ready]") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" RKI Service Import [ready]") def import_file(self): app.logger.info(" import RKI [begin]") diff --git a/covid19/oodm/rki/rki_service_update.py b/covid19/oodm/rki/rki_service_update.py index 71328ab6..cacd89ce 100644 --- a/covid19/oodm/rki/rki_service_update.py +++ b/covid19/oodm/rki/rki_service_update.py @@ -9,13 +9,13 @@ rki_service_update = None class RkiServiceUpdate: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" RKI Service Update [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" RKI Service Update [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database self.limit_nr = 20 - app.logger.info("------------------------------------------------------------") - app.logger.info(" RKI Service Update [ready]") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" RKI Service Update [ready]") def __update_who_date_reported(self): app.logger.info(" update who_date_reported [begin]") @@ -24,7 +24,7 @@ class RkiServiceUpdate: for i_date_reported, in RkiGermanyDataImportTable.get_dates_reported(): c = RkiDateReported.find_by_date_reported(i_date_reported) if c is None: - o = RkiDateReported.create_new_object_factor(my_date_rep=i_date_reported) + o = RkiDateReported.create_new_object_factory(my_date_rep=i_date_reported) db.session.add(o) app.logger.info(" update who_date_reported "+i_date_reported+" added NEW") if i % 10 == 0: diff --git a/covid19/oodm/vaccination/vaccination_model.py b/covid19/oodm/vaccination/vaccination_model.py index 9dfbbc38..517409ac 100644 --- a/covid19/oodm/vaccination/vaccination_model.py +++ b/covid19/oodm/vaccination/vaccination_model.py @@ -1,65 +1,2 @@ from database import db, ITEMS_PER_PAGE - -class VaccinationGermanyTimeline(db.Model): - __tablename__ = 'vaccination_germany_timeline' - - id = db.Column(db.Integer, primary_key=True) - datum = db.Column(db.String(255), nullable=False) - dosen_kumulativ = db.Column(db.Integer, nullable=False) - dosen_differenz_zum_vortag = db.Column(db.Integer, nullable=False) - dosen_biontech_kumulativ = db.Column(db.Integer, nullable=False) - dosen_moderna_kumulativ = db.Column(db.Integer, nullable=False) - personen_erst_kumulativ = db.Column(db.Integer, nullable=False) - personen_voll_kumulativ = db.Column(db.Integer, nullable=False) - impf_quote_erst = db.Column(db.Float, nullable=False) - impf_quote_voll = db.Column(db.Float, nullable=False) - indikation_alter_dosen = db.Column(db.Integer, nullable=False) - indikation_beruf_dosen = db.Column(db.Integer, nullable=False) - indikation_medizinisch_dosen = db.Column(db.Integer, nullable=False) - indikation_pflegeheim_dosen = db.Column(db.Integer, nullable=False) - indikation_alter_erst = db.Column(db.Integer, nullable=False) - indikation_beruf_erst = db.Column(db.Integer, nullable=False) - indikation_medizinisch_erst = db.Column(db.Integer, nullable=False) - indikation_pflegeheim_erst = db.Column(db.Integer, nullable=False) - indikation_alter_voll = db.Column(db.Integer, nullable=False) - indikation_beruf_voll = db.Column(db.Integer, nullable=False) - indikation_medizinisch_voll = db.Column(db.Integer, nullable=False) - indikation_pflegeheim_voll = db.Column(db.Integer, nullable=False) - - @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.datum.desc())\ - .paginate(page, per_page=ITEMS_PER_PAGE) - - @classmethod - def get_all(cls): - return db.session.query(cls)\ - .order_by(cls.datum.desc())\ - .all() - - @classmethod - def get_by_id(cls, other_id): - return db.session.query(cls)\ - .filter(cls.id == other_id)\ - .one() - - @classmethod - def find_by_id(cls, other_id): - return db.session.query(cls) \ - .filter(cls.id == other_id) \ - .one_or_none() - - @classmethod - def find_by_datum(cls, other_datum): - return db.session.query(cls) \ - .filter(cls.datum == other_datum) \ - .one_or_none() - diff --git a/covid19/oodm/vaccination/vaccination_model_import.py b/covid19/oodm/vaccination/vaccination_model_import.py new file mode 100644 index 00000000..9dfbbc38 --- /dev/null +++ b/covid19/oodm/vaccination/vaccination_model_import.py @@ -0,0 +1,65 @@ +from database import db, ITEMS_PER_PAGE + + +class VaccinationGermanyTimeline(db.Model): + __tablename__ = 'vaccination_germany_timeline' + + id = db.Column(db.Integer, primary_key=True) + datum = db.Column(db.String(255), nullable=False) + dosen_kumulativ = db.Column(db.Integer, nullable=False) + dosen_differenz_zum_vortag = db.Column(db.Integer, nullable=False) + dosen_biontech_kumulativ = db.Column(db.Integer, nullable=False) + dosen_moderna_kumulativ = db.Column(db.Integer, nullable=False) + personen_erst_kumulativ = db.Column(db.Integer, nullable=False) + personen_voll_kumulativ = db.Column(db.Integer, nullable=False) + impf_quote_erst = db.Column(db.Float, nullable=False) + impf_quote_voll = db.Column(db.Float, nullable=False) + indikation_alter_dosen = db.Column(db.Integer, nullable=False) + indikation_beruf_dosen = db.Column(db.Integer, nullable=False) + indikation_medizinisch_dosen = db.Column(db.Integer, nullable=False) + indikation_pflegeheim_dosen = db.Column(db.Integer, nullable=False) + indikation_alter_erst = db.Column(db.Integer, nullable=False) + indikation_beruf_erst = db.Column(db.Integer, nullable=False) + indikation_medizinisch_erst = db.Column(db.Integer, nullable=False) + indikation_pflegeheim_erst = db.Column(db.Integer, nullable=False) + indikation_alter_voll = db.Column(db.Integer, nullable=False) + indikation_beruf_voll = db.Column(db.Integer, nullable=False) + indikation_medizinisch_voll = db.Column(db.Integer, nullable=False) + indikation_pflegeheim_voll = db.Column(db.Integer, nullable=False) + + @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.datum.desc())\ + .paginate(page, per_page=ITEMS_PER_PAGE) + + @classmethod + def get_all(cls): + return db.session.query(cls)\ + .order_by(cls.datum.desc())\ + .all() + + @classmethod + def get_by_id(cls, other_id): + return db.session.query(cls)\ + .filter(cls.id == other_id)\ + .one() + + @classmethod + def find_by_id(cls, other_id): + return db.session.query(cls) \ + .filter(cls.id == other_id) \ + .one_or_none() + + @classmethod + def find_by_datum(cls, other_datum): + return db.session.query(cls) \ + .filter(cls.datum == other_datum) \ + .one_or_none() + diff --git a/covid19/oodm/vaccination/vaccination_service_config.py b/covid19/oodm/vaccination/vaccination_service_config.py new file mode 100644 index 00000000..1b8267fe --- /dev/null +++ b/covid19/oodm/vaccination/vaccination_service_config.py @@ -0,0 +1,11 @@ +import os + + +class VaccinationServiceDownloadConfig: + def __init__(self): + self.limit_nr = 20 + self.data_path = ".." + os.sep + "data" + self.cvsfile_name = "germany_vaccinations_timeseries_v2.tsv" + self.cvsfile_path = self.data_path + os.sep + self.cvsfile_name + self.url_src_data = "https://impfdashboard.de/static/data/germany_vaccinations_timeseries_v2.tsv" + os.makedirs(self.data_path, exist_ok=True) diff --git a/covid19/oodm/vaccination/vaccination_service_download.py b/covid19/oodm/vaccination/vaccination_service_download.py index b853a942..0bd9145f 100644 --- a/covid19/oodm/vaccination/vaccination_service_download.py +++ b/covid19/oodm/vaccination/vaccination_service_download.py @@ -2,16 +2,7 @@ import os import wget from flask import flash from database import app - - -class VaccinationServiceDownloadConfig: - def __init__(self): - self.limit_nr = 20 - self.data_path = ".."+os.sep+"data" - self.cvsfile_name = "germany_vaccinations_timeseries_v2.tsv" - self.cvsfile_path = self.data_path + os.sep + self.cvsfile_name - self.url_src_data = "https://impfdashboard.de/static/data/germany_vaccinations_timeseries_v2.tsv" - os.makedirs(self.data_path, exist_ok=True) +from covid19.oodm.vaccination.vaccination_service_config import VaccinationServiceDownloadConfig class VaccinationServiceDownload: diff --git a/covid19/oodm/vaccination/vaccination_service_import.py b/covid19/oodm/vaccination/vaccination_service_import.py index fe58b48f..d185672a 100644 --- a/covid19/oodm/vaccination/vaccination_service_import.py +++ b/covid19/oodm/vaccination/vaccination_service_import.py @@ -3,8 +3,8 @@ import csv import psycopg2 from database import db, app -from covid19.oodm.vaccination.vaccination_model import VaccinationGermanyTimeline -from covid19.oodm.vaccination.vaccination_service_download import VaccinationServiceDownloadConfig +from covid19.oodm.vaccination.vaccination_model_import import VaccinationGermanyTimeline +from covid19.oodm.vaccination.vaccination_service_config import VaccinationServiceDownloadConfig class VaccinationServiceImport: diff --git a/covid19/oodm/who/who_model.py b/covid19/oodm/who/who_model.py index 6b2da257..10cb003e 100644 --- a/covid19/oodm/who/who_model.py +++ b/covid19/oodm/who/who_model.py @@ -4,85 +4,6 @@ from database import db, ITEMS_PER_PAGE from sqlalchemy.orm import joinedload -class WhoGlobalDataImportTable(db.Model): - __tablename__ = 'who_global_data_import' - - id = db.Column(db.Integer, primary_key=True) - date_reported = db.Column(db.String(255), nullable=False) - country_code = db.Column(db.String(255), nullable=False) - country = db.Column(db.String(255), nullable=False) - who_region = db.Column(db.String(255), nullable=False) - new_cases = db.Column(db.String(255), nullable=False) - cumulative_cases = db.Column(db.String(255), nullable=False) - new_deaths = db.Column(db.String(255), nullable=False) - cumulative_deaths = db.Column(db.String(255), nullable=False) - row_imported = db.Column(db.Boolean, nullable=False) - - @classmethod - def remove_all(cls): - # TODO: SQLalchemy instead of SQL - 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(), - cls.country.asc() - ).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 get_regions(cls): - return db.session.query(cls.who_region).distinct() - - @classmethod - def get_dates_reported(cls): - return db.session.query(cls.date_reported).distinct() - - @classmethod - def get_for_one_day(cls, day): - return db.session.query(cls).filter(cls.date_reported == day).all() - - @classmethod - def get_new_dates_as_array(cls): - # TODO: SQLalchemy instead of SQL - sql_query = """ - select - date_reported - from - who_global_data_import - where - date_reported - not in ( - select - distinct - who_date_reported.date_reported - from - who_global_data - left join - who_date_reported - on - who_global_data.date_reported_id=who_date_reported.id - ) - group by - who_global_data_import.date_reported - order by date_reported desc - """ - new_dates = [] - for item in db.session.execute(sql_query): - new_dates.append(item['date_reported']) - return new_dates - - class WhoDateReported(db.Model): __tablename__ = 'who_date_reported' diff --git a/covid19/oodm/who/who_model_import.py b/covid19/oodm/who/who_model_import.py new file mode 100644 index 00000000..625fc7a7 --- /dev/null +++ b/covid19/oodm/who/who_model_import.py @@ -0,0 +1,80 @@ +from database import db, ITEMS_PER_PAGE + + +class WhoGlobalDataImportTable(db.Model): + __tablename__ = 'who_global_data_import' + + id = db.Column(db.Integer, primary_key=True) + date_reported = db.Column(db.String(255), nullable=False) + country_code = db.Column(db.String(255), nullable=False) + country = db.Column(db.String(255), nullable=False) + who_region = db.Column(db.String(255), nullable=False) + new_cases = db.Column(db.String(255), nullable=False) + cumulative_cases = db.Column(db.String(255), nullable=False) + new_deaths = db.Column(db.String(255), nullable=False) + cumulative_deaths = db.Column(db.String(255), nullable=False) + row_imported = db.Column(db.Boolean, nullable=False) + + @classmethod + def remove_all(cls): + # TODO: SQLalchemy instead of SQL + 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(), + cls.country.asc() + ).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 get_regions(cls): + return db.session.query(cls.who_region).distinct() + + @classmethod + def get_dates_reported(cls): + return db.session.query(cls.date_reported).distinct() + + @classmethod + def get_for_one_day(cls, day): + return db.session.query(cls).filter(cls.date_reported == day).all() + + @classmethod + def get_new_dates_as_array(cls): + # TODO: SQLalchemy instead of SQL + sql_query = """ + select + date_reported + from + who_global_data_import + where + date_reported + not in ( + select + distinct + who_date_reported.date_reported + from + who_global_data + left join + who_date_reported + on + who_global_data.date_reported_id=who_date_reported.id + ) + group by + who_global_data_import.date_reported + order by date_reported desc + """ + new_dates = [] + for item in db.session.execute(sql_query): + new_dates.append(item['date_reported']) + return new_dates diff --git a/covid19/oodm/who/who_service.py b/covid19/oodm/who/who_service.py index a602ebbe..fbc32393 100644 --- a/covid19/oodm/who/who_service.py +++ b/covid19/oodm/who/who_service.py @@ -1,5 +1,3 @@ -import os - from database import app from covid19.oodm.who.who_service_download import WhoServiceDownload from covid19.oodm.who.who_service_import import WhoServiceImport @@ -8,19 +6,14 @@ from covid19.oodm.who.who_service_update import WhoServiceUpdate class WhoService: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" WHO Service [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" WHO Service [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database - self.limit_nr = 20 - self.__who_cvsfile_name = "WHO-COVID-19-global-data.csv" - self.__src_who_cvsfile_name = "data"+os.sep+self.__who_cvsfile_name - self.__src_who_cvsfile_tmp_name = "data"+os.sep+"tmp_"+self.__who_cvsfile_name - self.__url_src_data = "https://covid19.who.int/"+self.__who_cvsfile_name self.who_service_download = WhoServiceDownload(database) self.who_service_import = WhoServiceImport(database) self.who_service_update = WhoServiceUpdate(database) - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") app.logger.info(" WHO Service [ready]") def run_download(self): diff --git a/covid19/oodm/who/who_service_config.py b/covid19/oodm/who/who_service_config.py new file mode 100644 index 00000000..ad967c44 --- /dev/null +++ b/covid19/oodm/who/who_service_config.py @@ -0,0 +1,9 @@ +import os + + +class WhoServiceDownloadConfig: + def __init__(self): + self.limit_nr = 20 + self.data_path = ".."+os.sep+"data" + self.cvsfile_name = "WHO-COVID-19-global-data.csv" + self.url_src_data = "https://covid19.who.int/" + self.cvsfile_name diff --git a/covid19/oodm/who/who_service_download.py b/covid19/oodm/who/who_service_download.py index 9b0221cf..1fab2a1a 100644 --- a/covid19/oodm/who/who_service_download.py +++ b/covid19/oodm/who/who_service_download.py @@ -2,25 +2,18 @@ import os import wget from flask import flash from database import app - - -class WhoServiceDownloadConfig: - def __init__(self): - self.limit_nr = 20 - self.data_path = ".."+os.sep+"data" - self.cvsfile_name = "WHO-COVID-19-global-data.csv" - self.url_src_data = "https://covid19.who.int/" + self.cvsfile_name +from covid19.oodm.who.who_service_config import WhoServiceDownloadConfig class WhoServiceDownload: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" WHO Service Download [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" WHO Service Download [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database self.cfg = WhoServiceDownloadConfig() - app.logger.info("------------------------------------------------------------") - app.logger.info(" WHO Service Download [ready]") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" WHO Service Download [ready]") def download_file(self): src_cvsfile_name = self.cfg.data_path+os.sep+self.cfg.cvsfile_name diff --git a/covid19/oodm/who/who_service_import.py b/covid19/oodm/who/who_service_import.py index b32b80f2..e1a717e0 100644 --- a/covid19/oodm/who/who_service_import.py +++ b/covid19/oodm/who/who_service_import.py @@ -3,21 +3,21 @@ import sys import csv import psycopg2 from database import db, app -from covid19.oodm.who.who_model import WhoGlobalDataImportTable +from covid19.oodm.who.who_model_import import WhoGlobalDataImportTable from covid19.oodm.who.who_service_download import WhoServiceDownloadConfig -who_service_import = None +#who_service_import = None class WhoServiceImport: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" WHO Service Import [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" WHO Service Import [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database self.cfg = WhoServiceDownloadConfig() - app.logger.info("------------------------------------------------------------") - app.logger.info(" WHO Service Import [ready]") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" WHO Service Import [ready]") def import_file(self): src_cvsfile_name = self.cfg.data_path + os.sep + self.cfg.cvsfile_name diff --git a/covid19/oodm/who/who_service_update.py b/covid19/oodm/who/who_service_update.py index ca564d6d..d16c75e6 100644 --- a/covid19/oodm/who/who_service_update.py +++ b/covid19/oodm/who/who_service_update.py @@ -1,23 +1,18 @@ -import os - from database import db, app from covid19.oodm.who.who_model import WhoRegion, WhoDateReported, WhoCountry, WhoGlobalData -from covid19.oodm.who.who_model import WhoGlobalDataImportTable +from covid19.oodm.who.who_model_import import WhoGlobalDataImportTable +from covid19.oodm.who.who_service_download import WhoServiceDownloadConfig class WhoServiceUpdate: def __init__(self, database): - app.logger.info("------------------------------------------------------------") - app.logger.info(" WHO Service Update [init]") - app.logger.info("------------------------------------------------------------") + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" WHO Service Update [init]") + app.logger.debug("------------------------------------------------------------") self.__database = database - self.limit_nr = 20 - self.__cvsfile_name = "WHO-COVID-19-global-data.csv" - self.__src_cvsfile_name = "data" + os.sep + self.__cvsfile_name - self.__src_cvsfile_tmp_name = "data" + os.sep + "tmp_" + self.__cvsfile_name - self.__url_src_data = "https://covid19.who.int/" + self.__cvsfile_name - app.logger.info("------------------------------------------------------------") - app.logger.info(" WHO Service Update [ready]") + self.cfg = WhoServiceDownloadConfig() + app.logger.debug("------------------------------------------------------------") + app.logger.debug(" WHO Service Update [ready]") def __update_who_date_reported(self): app.logger.info(" update who_date_reported [begin]") @@ -64,6 +59,7 @@ class WhoServiceUpdate: def __update_who_country(self): app.logger.info(" update who_country [begin]") app.logger.info("------------------------------------------------------------") + # TODO: Queries to Model-Classes sql_text = """ select distinct who_global_data_import.country_code, diff --git a/covid19/views.py b/covid19/views.py index 0e409327..e16e5362 100644 --- a/covid19/views.py +++ b/covid19/views.py @@ -6,7 +6,6 @@ import covid19.views_who import covid19.views_europe import covid19.views_vaccination import covid19.views_rki -import covid19.views_nrw import covid19.views_admin diff --git a/covid19/views_admin.py b/covid19/views_admin.py index 67a00036..404575d1 100644 --- a/covid19/views_admin.py +++ b/covid19/views_admin.py @@ -1,5 +1,4 @@ from flask import render_template, redirect, url_for, flash -from sqlalchemy.exc import OperationalError from celery import states from celery.utils.log import get_task_logger @@ -7,12 +6,8 @@ from database import app from covid19.services import who_service, europe_service, vaccination_service, admin_service, rki_service from covid19.workers import celery -from covid19.oodm.who.who_model import WhoGlobalDataImportTable -from covid19.oodm.who.who_model import WhoRegion, WhoCountry, WhoDateReported, WhoGlobalData -from covid19.oodm.europe.europe_model import EuropeDataImportTable, EuropeDateReported, EuropeContinent -from covid19.oodm.europe.europe_model import EuropeCountry, EuropeData from covid19.oodm.common.common_model_transient import ApplicationPage -from covid19.oodm.vaccination.vaccination_model import VaccinationGermanyTimeline + drop_and_create_data_again = True diff --git a/covid19/views_europe.py b/covid19/views_europe.py index 55b4b155..bf14483f 100644 --- a/covid19/views_europe.py +++ b/covid19/views_europe.py @@ -6,8 +6,8 @@ from database import app from covid19.services import europe_service from covid19.workers import celery -from covid19.oodm.europe.europe_model import EuropeDataImportTable, EuropeDateReported, EuropeContinent -from covid19.oodm.europe.europe_model import EuropeCountry, EuropeData +from covid19.oodm.europe.europe_model_import import EuropeDataImportTable +from covid19.oodm.europe.europe_model import EuropeDateReported, EuropeContinent, EuropeCountry, EuropeData from covid19.oodm.common.common_model_transient import ApplicationPage diff --git a/covid19/views_nrw.py b/covid19/views_nrw.py deleted file mode 100644 index aa88480b..00000000 --- a/covid19/views_nrw.py +++ /dev/null @@ -1,64 +0,0 @@ -from flask import render_template, redirect, url_for, flash -from sqlalchemy.exc import OperationalError -from celery import states -from celery.utils.log import get_task_logger - -from database import app -from covid19.services import who_service, europe_service, vaccination_service, admin_service, rki_service -from covid19.workers import celery - -from covid19.oodm.who.who_model import WhoGlobalDataImportTable -from covid19.oodm.who.who_model import WhoRegion, WhoCountry, WhoDateReported, WhoGlobalData -from covid19.oodm.europe.europe_model import EuropeDataImportTable, EuropeDateReported, EuropeContinent -from covid19.oodm.europe.europe_model import EuropeCountry, EuropeData -from covid19.oodm.common.common_model_transient import ApplicationPage -from covid19.oodm.vaccination.vaccination_model import VaccinationGermanyTimeline - - -################################################################################################################## -# -# NRW -# -################################################################################################################## -@app.route('/nrw/info') -def url_nrw_info(): - page_info = ApplicationPage('NRW', "Info") - return render_template( - 'nrw/nrw_info.html', - page_info=page_info) - - -@app.route('/nrw/tasks') -def url_nrw_tasks(): - page_info = ApplicationPage('NRW', "Tasks") - return render_template( - 'nrw/nrw_tasks.html', - page_info=page_info) - - -@app.route('/nrw/imported/<int:page>') -@app.route('/nrw/imported') -def url_nrw_imported(page=1): - page_info = ApplicationPage('NRW', "Last Import") - try: - who_imported_all = WhoGlobalDataImportTable.get_all_as_page(page) - except OperationalError: - flash("No data in the database.") - who_imported_all = None - return render_template( - 'nrw/nrw_imported.html', - page_data=who_imported_all, - page_info=page_info) - - -@app.route('/nrw/bochum/<int:page>') -@app.route('/nrw/bochum') -def url_nrw_bochum(page=1): - page_info = ApplicationPage('NRW', "Bochum") - who_country = WhoCountry.get_germany() - list_who_global_data = WhoGlobalData.get_data_for_country(who_country, page) - return render_template( - 'nrw/nrw_stadt.html', - who_country=who_country, - page_data=list_who_global_data, - page_info=page_info) diff --git a/covid19/views_rki.py b/covid19/views_rki.py index 0a6f8b54..2355250c 100644 --- a/covid19/views_rki.py +++ b/covid19/views_rki.py @@ -3,7 +3,7 @@ from sqlalchemy.exc import OperationalError from database import app -from covid19.oodm.who.who_model import WhoGlobalDataImportTable +from covid19.oodm.who.who_model_import import WhoGlobalDataImportTable from covid19.oodm.common.common_model_transient import ApplicationPage drop_and_create_data_again = True diff --git a/covid19/views_vaccination.py b/covid19/views_vaccination.py index e0b088b8..f7000ca9 100644 --- a/covid19/views_vaccination.py +++ b/covid19/views_vaccination.py @@ -1,18 +1,13 @@ from flask import render_template, redirect, url_for, flash -from sqlalchemy.exc import OperationalError from celery import states from celery.utils.log import get_task_logger from database import app -from covid19.services import who_service, europe_service, vaccination_service, admin_service, rki_service +from covid19.services import vaccination_service from covid19.workers import celery -from covid19.oodm.who.who_model import WhoGlobalDataImportTable -from covid19.oodm.who.who_model import WhoRegion, WhoCountry, WhoDateReported, WhoGlobalData -from covid19.oodm.europe.europe_model import EuropeDataImportTable, EuropeDateReported, EuropeContinent -from covid19.oodm.europe.europe_model import EuropeCountry, EuropeData +from covid19.oodm.vaccination.vaccination_model_import import VaccinationGermanyTimeline from covid19.oodm.common.common_model_transient import ApplicationPage -from covid19.oodm.vaccination.vaccination_model import VaccinationGermanyTimeline ################################################################################################################## diff --git a/covid19/views_who.py b/covid19/views_who.py index becdcde3..3c2f1139 100644 --- a/covid19/views_who.py +++ b/covid19/views_who.py @@ -4,15 +4,12 @@ from celery import states from celery.utils.log import get_task_logger from database import app -from covid19.services import who_service, europe_service, vaccination_service, admin_service, rki_service +from covid19.services import who_service from covid19.workers import celery -from covid19.oodm.who.who_model import WhoGlobalDataImportTable +from covid19.oodm.who.who_model_import import WhoGlobalDataImportTable from covid19.oodm.who.who_model import WhoRegion, WhoCountry, WhoDateReported, WhoGlobalData -from covid19.oodm.europe.europe_model import EuropeDataImportTable, EuropeDateReported, EuropeContinent -from covid19.oodm.europe.europe_model import EuropeCountry, EuropeData from covid19.oodm.common.common_model_transient import ApplicationPage -from covid19.oodm.vaccination.vaccination_model import VaccinationGermanyTimeline ################################################################################################################## @@ -24,8 +21,8 @@ from covid19.oodm.vaccination.vaccination_model import VaccinationGermanyTimelin @celery.task(bind=True) def task_who_run_update(self, import_file=True): - logger = get_task_logger(__name__) self.update_state(state=states.STARTED) + logger = get_task_logger(__name__) logger.info("------------------------------------------------------------") logger.info(" Received: task_who_run_update [OK] ") logger.info("------------------------------------------------------------") -- GitLab