covid19python
- Version 0.0.5 SNAPSHOT
git
- gitlab: https://git.noc.ruhr-uni-bochum.de/learn_r_and_python/covid19python.git
- github: https://github.com/thomaswoehlke/covid19python.git
Data Sources:
Python
- flask
- flask: pypi
- flask: flask-admin
- flask: werkzeug
- flask: sqlalchemy
- sqlalchemy
- sqlite
- jinja
- jinja: markupsafe
- jinja: itsdangerous
- jinja: click
Info
- http://www.leeladharan.com/sqlalchemy-query-with-or-and-like-common-filters
- https://riptutorial.com/flask/example/22201/pagination-route-example-with-flask-sqlalchemy-paginate
Database
WHO
who_date_reported
CREATE TABLE public.who_date_reported (
id integer NOT NULL,
date_reported character varying(255) NOT NULL
);
class WhoDateReported(db.Model):
__tablename__ = 'who_date_reported'
id = db.Column(db.Integer, primary_key=True)
date_reported = db.Column(db.String(255), unique=True, nullable=False)
who_region
CREATE TABLE public.who_region (
id integer NOT NULL,
region character varying(255) NOT NULL
);
class WhoRegion(db.Model):
__tablename__ = 'who_region'
id = db.Column(db.Integer, primary_key=True)
region = db.Column(db.String(255), unique=True, nullable=False)
who_country
CREATE TABLE public.who_country (
id integer NOT NULL,
country_code character varying(255) NOT NULL,
country character varying(255) NOT NULL,
region_id integer NOT NULL
);
class WhoCountry(db.Model):
__tablename__ = 'who_country'
id = db.Column(db.Integer, primary_key=True)
country_code = db.Column(db.String(255), unique=True, nullable=False)
country = db.Column(db.String(255), unique=False, nullable=False)
region_id = db.Column(db.Integer, db.ForeignKey('who_region.id'), nullable=False)
region = db.relationship('WhoRegion', lazy='joined')
who_global_data
CREATE TABLE public.who_global_data (
id integer NOT NULL,
cases_new integer NOT NULL,
cases_cumulative integer NOT NULL,
deaths_new integer NOT NULL,
deaths_cumulative integer NOT NULL,
date_reported_id integer NOT NULL,
country_id integer NOT NULL
);
class WhoGlobalData(db.Model):
__tablename__ = 'who_global_data'
id = db.Column(db.Integer, primary_key=True)
cases_new = db.Column(db.Integer, nullable=False)
cases_cumulative = db.Column(db.Integer, nullable=False)
deaths_new = db.Column(db.Integer, nullable=False)
deaths_cumulative = db.Column(db.Integer, nullable=False)
date_reported_id = db.Column(db.Integer, db.ForeignKey('who_date_reported.id'), nullable=False)
date_reported = db.relationship('WhoDateReported', lazy='joined')
country_id = db.Column(db.Integer, db.ForeignKey('who_country.id'), nullable=False)
country = db.relationship('WhoCountry', lazy='joined')
who_global_data_import
CREATE TABLE public.who_global_data_import (
id integer NOT NULL,
date_reported character varying(255) NOT NULL,
country_code character varying(255) NOT NULL,
country character varying(255) NOT NULL,
who_region character varying(255) NOT NULL,
new_cases character varying(255) NOT NULL,
cumulative_cases character varying(255) NOT NULL,
new_deaths character varying(255) NOT NULL,
cumulative_deaths character varying(255) NOT NULL,
row_imported boolean NOT NULL
);
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)
Milestones
0.0.1 Release
- Fixed #1 (closed) test 1 2 3
0.0.2 Release
- Fixed #2 (closed) start data update job via web ui
- Fixed #4 (closed) data update: who_country
- Fixed #6 (closed) data update: who_global_data
- Fixed #3 (closed) web ui: show table of who_region
0.0.3 Release
- Fixed #8 (closed) view_who_today_new_deaths
- Fixed #9 (closed) view_who_global_data
- Fixed #10 (closed) view_who_today_new_cases
- Fixed #11 (closed) view_who_germany
- Fixed #12 (closed) view_max_new_deaths_who
0.0.4 Release
- Fixed #13 (closed) Pagination for all Tables
- Fixed #14 (closed) Running on Windows and Linux
- Fixed #15 (closed) Navigation: Region, Countries, Data per Countries order by Date
0.0.5 Release
- Fixed #1 (closed) Async Tasks for import and update Data with Celery and RabbitMQ
- Fixed #2 (closed) Move Repo to github
0.0.6 Release
- Fixed #6 (closed) data of all reported countries for WHO date reported
- Fixed #7 (closed) WHO Countries all - data for Country
0.0.7 Release
- Issue #8 (closed) WhoServiceUpdate.update_db_short()
- Issue #9 (closed) URL: /who/update/short
- Issue #10 (closed) async who_update_short_task
- Issue #11 (closed) WhoServiceUpdate.__update_who_global_data_short()
- Fixed #12 (closed) better layout for flash messages
0.0.8 Release
- Fixed #13 (closed) /who/imported/
- Fixed #14 (closed) /europe/imported/
- Fixed #15 (closed) /who/update: Download
- Fixed #16 (closed) /who/update: Import File to DB
- Fixed #17 (closed) /who/update: Update DB
- Fixed #21 (closed) better templates for who_global_data tables
0.0.9 Release
- Fixed #18 (closed) /europe/update: Download
- Fixed #19 (closed) /europe/update: Import File to DB
- Fixed #20 (closed) /europe/update: Update DB
- Fixed #21 (closed) update_date_reported
- Fixed #22 (closed) update_continent
- Fixed #23 (closed) update_country
- Fixed #24 (closed) update_data
- Fixed #25 (closed) /who/update/initial update_data_initial
- Fixed #27 (closed) /admin/database/drop
- Fixed #3 (closed) ORM: 3NF for ecdc_europa_data_import
- Fixed #4 (closed) data update for 3NF ecdc_europa_data_import
0.0.10 Release
- Fixed #24 (closed) update_data
- Fixed #29 (closed) /who/info
- Fixed #30 (closed) /europa/info
- Fixed #31 (closed) /rki/info
- Fixed #32 (closed) /nrw/info
- Fixed #33 (closed) /europe/date_reported
- Fixed #34 (closed) /europe/continent
- Fixed #35 (closed) /europe/country
- Fixed #36 (closed) /europe/data
- Fixed #37 (closed) switch from RabbitMQ to Redis
- Fixed #38 (closed) update Celery from 4 to 5
0.0.11 Release
- Fixed #26 (closed) /admin/database/dump
- Fixed #43 (closed) /europe/date_reported
- Fixed #44 (closed) /europe/continent
- Fixed #45 (closed) /europe/country
- Fixed #46 (closed) /europe/country/germany
- Fixed #50 (closed) remove unused requirements from requirements.txt
- Fixed #51 (closed) /europe/imported
0.0.12 Release
- Fixed #55 (closed) /vaccination/tasks
- Fixed #56 (closed) /vaccination/info
0.0.13 Release
- Fixed #49 (closed) EuropeServiceUpdate.__update_data_short() (wontfix)
- Fixed #52 (closed) download vaccination timeline data file
- Fixed #53 (closed) import vaccination timeline data file into db
- Fixed #54 (closed) /vaccination/imported
- Fixed #57 (closed) frontend: use npm for handling 3rdParty css and javascript modules like jQuery, Bootstrap
- Fixed #58 (closed) frontend: remove jumbotron from all pageheader, put jumbotron as main content on home page
- Fixed #47 (closed) major refactoring: Routes from app.py to org...who,europe,... (Doublette von #65 (closed))
- Fixed #48 (closed) major refactoring: Tasks from server_mq.py to org...who,europe,... (Doublette von #65 (closed))
- Fixed #64 (closed) major refactoring: create two packages: for web app and for celery worker
- Fixed #68 (closed) TODO: move Queries from Services to Model-Classes
- Fixed #65 (closed) major refactoring: add flask-blueprints for admin, common, europe, rki, vaccination, who
0.0.14 Release
- Issue #66 (closed) frontend: migrate to Bootstrap Theme sb-admin-angular
- Issue #69 (closed) Branch: ISSUE_66_ATTEMPT_01
- Issue #70 (closed) Load Bootstrap-Template sb-admin-angular into static
0.0.15 Release
- Issue #67 (closed) implement Flask-Login
0.0.16 Release
- Issue #5 Visual Graphs for Data per Countries order by Date
- Issue #59 frontend: add correct breadcrumb to every page
- Issue #60 (closed) frontend: better design for tables
- Issue #61 frontend: better design for navtabs
- Issue #62 (closed) frontend: better design for pages
- Issue #63 frontend: add footer design
0.0.17 Release
- Issue #28 (closed) /admin/database/import
- Issue #39 (closed) SQLalchemy instead of SQL: AllModelClasses.remove_all()
- Issue #40 (closed) SQLalchemy instead of SQL: EuropeDataImportTable.get_date_rep()
- Issue #41 (closed) SQLalchemy instead of SQL: EuropeDataImportTable.get_countries_of_continent()
- Issue #42 (closed) SQLalchemy instead of SQL: WhoGlobalDataImportTable.get_new_dates_as_array()