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