diff --git a/covid19python/__init__.py b/app.py similarity index 81% rename from covid19python/__init__.py rename to app.py index a79557bc21dddd2cf00843f5979b536e991d085c..a159881e82c831fa652a64c6b2006130e5668a10 100644 --- a/covid19python/__init__.py +++ b/app.py @@ -12,12 +12,14 @@ from org.woehlke.covid19.vaccination.vaccination_service import VaccinationServi from org.woehlke.covid19.admin.admin_service import AdminService from org.woehlke.covid19.vaccination.vaccination_model import VaccinationDataImportTable -from covid19python_mq import who_run_update_task, who_update_short_task, who_update_initial_task -from covid19python_mq import alive_message_task -from covid19python_mq import europe_update_initial_task -from covid19python_mq import vaccination_update_initial_task -from covid19python_mq import admin_database_drop_create_task +#from covid19python_mq import who_run_update_task, who_update_short_task, who_update_initial_task +#from covid19python_mq import alive_message_task +#from covid19python_mq import europe_update_initial_task +#from covid19python_mq import vaccination_update_initial_task +#from covid19python_mq import admin_database_drop_create_task +from celery.utils.log import get_task_logger +from celery import Celery, states drop_and_create_data_again = True @@ -27,6 +29,115 @@ vaccination_service = None admin_service = None +############################################################################################ +# +# Celery +# +celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL']) +celery.conf.update(app.config) +celery.conf.result_backend = app.config['CELERY_BROKER_URL'] +celery.conf.broker_transport_options = {'visibility_timeout': 18000, 'max_retries': 5} +celery.conf.worker_send_task_events = app.config['CELERY_CONF_WORKER_SEND_TASK_EVENTS'] +celery.conf.task_send_sent_event = app.config['CELERY_CONF_TASK_SEND_SENT_EVENT'] + + +@celery.task(bind=True) +def who_run_update_task(self, import_file=True): + logger = get_task_logger(__name__) + self.update_state(state=states.STARTED) + logger.info("------------------------------------------------------------") + logger.info(" Received: who_run_update_task [OK] ") + logger.info("------------------------------------------------------------") + who_service.run_update(import_file) + self.update_state(state=states.SUCCESS) + result = "OK (who_run_update_task)" + return result + + +@celery.task(bind=True) +def who_update_short_task(self): + logger = get_task_logger(__name__) + self.update_state(state=states.STARTED) + logger.info("------------------------------------------------------------") + logger.info(" Received: who_update_short_task [OK] ") + logger.info("------------------------------------------------------------") + who_service.run_update_short() + self.update_state(state=states.SUCCESS) + result = "OK (who_update_short_task)" + return result + + +@celery.task(bind=True) +def who_update_initial_task(self): + logger = get_task_logger(__name__) + self.update_state(state=states.STARTED) + logger.info("------------------------------------------------------------") + logger.info(" Received: who_update_initial_task [OK] ") + logger.info("------------------------------------------------------------") + who_service.run_update_initial() + self.update_state(state=states.SUCCESS) + result = "OK (who_update_initial_task)" + return result + + +@celery.task(bind=True) +def alive_message_task(self): + logger = get_task_logger(__name__) + self.update_state(state=states.STARTED) + logger.info("------------------------------------------------------------") + logger.info(" Received: Alive Message [OK] ") + logger.info("------------------------------------------------------------") + self.update_state(state=states.SUCCESS) + result = "OK" + return result + + +@celery.task(bind=True) +def europe_update_initial_task(self): + logger = get_task_logger(__name__) + self.update_state(state=states.STARTED) + logger.info("------------------------------------------------------------") + logger.info(" Received: europe_update_task [OK] ") + logger.info("------------------------------------------------------------") + europe_service.run_update_initial() + self.update_state(state=states.SUCCESS) + result = "OK (europe_update_task)" + return result + + +@celery.task(bind=True) +def vaccination_update_initial_task(self): + logger = get_task_logger(__name__) + self.update_state(state=states.STARTED) + logger.info("------------------------------------------------------------") + logger.info(" Received: vaccination_update_initial_task [OK] ") + logger.info("------------------------------------------------------------") + vaccination_service.run_update_initial() + self.update_state(state=states.SUCCESS) + result = "OK (vaccination_update_initial_task)" + return result + + +@celery.task(bind=True) +def admin_database_drop_create_task(self): + logger = get_task_logger(__name__) + self.update_state(state=states.STARTED) + logger.info("------------------------------------------------------------") + logger.info(" Received: admin_database_drop_create_task [OK] ") + logger.info("------------------------------------------------------------") + who_service.run_update_initial() + europe_service.run_update_initial() + vaccination_service.run_update_initial() + admin_service.run_admin_database_dump() + self.update_state(state=states.SUCCESS) + result = "OK (admin_database_drop_create_task)" + return result + + +############################################################################################ +# +# WEB +# class ApplicationPage: def __init__(self, default_title, default_subtitle=None, default_subtitle_info=None): @@ -599,4 +710,4 @@ if __name__ == '__main__': europe_service = EuropeService(db) vaccination_service = VaccinationService(db) admin_service = AdminService(db) - app.run(debug=run_run_with_debug, port=5001) + app.run(debug=run_run_with_debug) diff --git a/app_worker.py b/app_worker.py new file mode 100644 index 0000000000000000000000000000000000000000..f5fc29099b74481095a12110258524b093eb7603 --- /dev/null +++ b/app_worker.py @@ -0,0 +1,10 @@ +from app import celery + +################################################################################################################# +# +# MAIN +# +################################################################################################################# +if __name__ == '__main__': + args = ['worker', '-l', 'INFO'] + celery.start(args) diff --git a/covid19python/views.py b/covid19python/views.py deleted file mode 100644 index 2534d4fdbdb04c6b988eb41ceca1095a0e952a88..0000000000000000000000000000000000000000 --- a/covid19python/views.py +++ /dev/null @@ -1,23 +0,0 @@ -from covid19python import app -from logging.config import dictConfig -from flask import render_template, redirect, url_for, flash -from sqlalchemy.exc import OperationalError -from database import db, my_logging_config, run_run_with_debug -from org.woehlke.covid19.who.who_model import WhoGlobalDataImportTable -from org.woehlke.covid19.who.who_model import WhoRegion, WhoCountry, WhoDateReported, WhoGlobalData -from org.woehlke.covid19.europe.europe_model import EuropeDataImportTable, EuropeDateReported, EuropeContinent -from org.woehlke.covid19.europe.europe_model import EuropeCountry, EuropeData -from org.woehlke.covid19.who.who_service import WhoService -from org.woehlke.covid19.europe.europe_service import EuropeService -from org.woehlke.covid19.vaccination.vaccination_service import VaccinationService -from org.woehlke.covid19.admin.admin_service import AdminService -from org.woehlke.covid19.vaccination.vaccination_model import VaccinationDataImportTable - -from covid19python import who_service, europe_service, vaccination_service, admin_service - -from covid19python_mq import who_run_update_task, who_update_short_task, who_update_initial_task -from covid19python_mq import alive_message_task -from covid19python_mq import europe_update_initial_task -from covid19python_mq import vaccination_update_initial_task -from covid19python_mq import admin_database_drop_create_task - diff --git a/covid19python_mq/__init__.py b/covid19python_mq/__init__.py deleted file mode 100644 index fbfcddaf162da5c0e6301187627c6d97fa95d3bc..0000000000000000000000000000000000000000 --- a/covid19python_mq/__init__.py +++ /dev/null @@ -1,120 +0,0 @@ -from logging.config import dictConfig -from celery.utils.log import get_task_logger -from celery import Celery, states -from database import db, app, my_logging_config -from org.woehlke.covid19.who.who_service import WhoService -from org.woehlke.covid19.europe.europe_service import EuropeService -from org.woehlke.covid19.vaccination.vaccination_service import VaccinationService -from org.woehlke.covid19.admin.admin_service import AdminService - - -celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL']) -celery.conf.update(app.config) -celery.conf.result_backend = app.config['CELERY_BROKER_URL'] -celery.conf.broker_transport_options = {'visibility_timeout': 18000, 'max_retries': 5} -celery.conf.worker_send_task_events = app.config['CELERY_CONF_WORKER_SEND_TASK_EVENTS'] -celery.conf.task_send_sent_event = app.config['CELERY_CONF_TASK_SEND_SENT_EVENT'] - - -@celery.task(bind=True) -def who_run_update_task(self, import_file=True): - logger = get_task_logger(__name__) - self.update_state(state=states.STARTED) - logger.info("------------------------------------------------------------") - logger.info(" Received: who_run_update_task [OK] ") - logger.info("------------------------------------------------------------") - who_service.run_update(import_file) - self.update_state(state=states.SUCCESS) - result = "OK (who_run_update_task)" - return result - - -@celery.task(bind=True) -def who_update_short_task(self): - logger = get_task_logger(__name__) - self.update_state(state=states.STARTED) - logger.info("------------------------------------------------------------") - logger.info(" Received: who_update_short_task [OK] ") - logger.info("------------------------------------------------------------") - who_service.run_update_short() - self.update_state(state=states.SUCCESS) - result = "OK (who_update_short_task)" - return result - - -@celery.task(bind=True) -def who_update_initial_task(self): - logger = get_task_logger(__name__) - self.update_state(state=states.STARTED) - logger.info("------------------------------------------------------------") - logger.info(" Received: who_update_initial_task [OK] ") - logger.info("------------------------------------------------------------") - who_service.run_update_initial() - self.update_state(state=states.SUCCESS) - result = "OK (who_update_initial_task)" - return result - - -@celery.task(bind=True) -def alive_message_task(self): - logger = get_task_logger(__name__) - self.update_state(state=states.STARTED) - logger.info("------------------------------------------------------------") - logger.info(" Received: Alive Message [OK] ") - logger.info("------------------------------------------------------------") - self.update_state(state=states.SUCCESS) - result = "OK" - return result - - -@celery.task(bind=True) -def europe_update_initial_task(self): - logger = get_task_logger(__name__) - self.update_state(state=states.STARTED) - logger.info("------------------------------------------------------------") - logger.info(" Received: europe_update_task [OK] ") - logger.info("------------------------------------------------------------") - europe_service.run_update_initial() - self.update_state(state=states.SUCCESS) - result = "OK (europe_update_task)" - return result - - -@celery.task(bind=True) -def vaccination_update_initial_task(self): - logger = get_task_logger(__name__) - self.update_state(state=states.STARTED) - logger.info("------------------------------------------------------------") - logger.info(" Received: vaccination_update_initial_task [OK] ") - logger.info("------------------------------------------------------------") - vaccination_service.run_update_initial() - self.update_state(state=states.SUCCESS) - result = "OK (vaccination_update_initial_task)" - return result - - -@celery.task(bind=True) -def admin_database_drop_create_task(self): - logger = get_task_logger(__name__) - self.update_state(state=states.STARTED) - logger.info("------------------------------------------------------------") - logger.info(" Received: admin_database_drop_create_task [OK] ") - logger.info("------------------------------------------------------------") - who_service.run_update_initial() - europe_service.run_update_initial() - vaccination_service.run_update_initial() - admin_service.run_admin_database_dump() - self.update_state(state=states.SUCCESS) - result = "OK (admin_database_drop_create_task)" - return result - - -if __name__ == '__main__': - db.create_all() - dictConfig(my_logging_config) - who_service = WhoService(db) - europe_service = EuropeService(db) - vaccination_service = VaccinationService(db) - admin_service = AdminService(db) - args = ['worker', '-l', 'INFO'] - celery.start(args) diff --git a/database.py b/database.py index 8cbd019fc8191c6e276ce314bd723e9b45026ece..c9200f2ab237d8e67126ada7044214494636a8f8 100644 --- a/database.py +++ b/database.py @@ -14,7 +14,6 @@ DB_URL = 'postgresql+psycopg2://{user}:{pw}@{url}/{db}'.format( app.config['SQLALCHEMY_DATABASE_URI'] = DB_URL app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # silence the deprecation warning db = SQLAlchemy(app) -run_run_with_debug = app.config['APP_DEBUGGER_ACTIVE'] my_logging_config = { 'version': 1, 'formatters': {'default': { @@ -30,3 +29,4 @@ my_logging_config = { 'handlers': ['wsgi'] } } +run_run_with_debug = app.config['APP_DEBUGGER_ACTIVE'] diff --git a/run.sh b/run.sh deleted file mode 100755 index 05f98ceb4f45bf25ca9a8383c281a3e407e64348..0000000000000000000000000000000000000000 --- a/run.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -export FLASK_ENV=development -export FLASK_APP=covid19python -pip install -e . -flask run diff --git a/run_mq.sh b/run_mq.sh deleted file mode 100755 index 13d3e2fc1d370162dd769b8103ed8b64ed384286..0000000000000000000000000000000000000000 --- a/run_mq.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -export FLASK_ENV=development -export FLASK_APP=covid19python_mq -pip install -e . -flask run diff --git a/run_web.sh b/run_web.sh new file mode 100755 index 0000000000000000000000000000000000000000..89b5994d38fa85c7582864e18868095edb814a26 --- /dev/null +++ b/run_web.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +#export FLASK_ENV=development +#export FLASK_APP=covid19python +#pip install -e . +#flask run +. venv/bin/activate +python app.py + diff --git a/run_worker.sh b/run_worker.sh new file mode 100755 index 0000000000000000000000000000000000000000..6da8952243f63e770a09a7b8cc27e20065523366 --- /dev/null +++ b/run_worker.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +#export FLASK_ENV=development +#export FLASK_APP=app +#pip install -e . +#flask run + +. venv/bin/activate +python app_worker.py diff --git a/setup.cfg b/setup.cfg index eac3523aa593523208d7002c767dc457baa51603..c6535022fb30b8343ca21c38948bc4375025c07d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,11 +1,10 @@ [metadata] -name = covid19python +name = app version = 0.0.12 [options] packages = - covid19python - covid19python_mq + app install_requires = requests importlib; python_version >= "3.7" diff --git a/setup.py b/setup.py index b9ccabfde765933752f2eaa67de7691f91d6cdd7..5229fa33ee8df69abc31f667dbc9b386d95d69a8 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages setup( - name='covid19python', + name='app', version='0.0.12', packages=find_packages(), url='https://github.com/thomaswoehlke/covid19python', diff --git a/start_server_mq.sh b/start_server_mq.sh index 70b9da95b1c7fc1d4f46165dae381fa09b5bd7bd..f946eaad7b61b40c22395cfbcf3254302e877ca1 100755 --- a/start_server_mq.sh +++ b/start_server_mq.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash -python app_mq.py -celery -A app_mq.celery worker -l INFO +python app.py +#celery -A app_mq.celery worker -l INFO diff --git a/covid19python/static/favicon.ico b/static/favicon.ico similarity index 100% rename from covid19python/static/favicon.ico rename to static/favicon.ico diff --git a/covid19python/templates/admin/admin_info.html b/templates/admin/admin_info.html similarity index 100% rename from covid19python/templates/admin/admin_info.html rename to templates/admin/admin_info.html diff --git a/covid19python/templates/admin/admin_tasks.html b/templates/admin/admin_tasks.html similarity index 100% rename from covid19python/templates/admin/admin_tasks.html rename to templates/admin/admin_tasks.html diff --git a/covid19python/templates/europe/europe_continent_all.html b/templates/europe/europe_continent_all.html similarity index 100% rename from covid19python/templates/europe/europe_continent_all.html rename to templates/europe/europe_continent_all.html diff --git a/covid19python/templates/europe/europe_continent_germany.html b/templates/europe/europe_continent_germany.html similarity index 100% rename from covid19python/templates/europe/europe_continent_germany.html rename to templates/europe/europe_continent_germany.html diff --git a/covid19python/templates/europe/europe_continent_one.html b/templates/europe/europe_continent_one.html similarity index 100% rename from covid19python/templates/europe/europe_continent_one.html rename to templates/europe/europe_continent_one.html diff --git a/covid19python/templates/europe/europe_country_all.html b/templates/europe/europe_country_all.html similarity index 100% rename from covid19python/templates/europe/europe_country_all.html rename to templates/europe/europe_country_all.html diff --git a/covid19python/templates/europe/europe_country_germany.html b/templates/europe/europe_country_germany.html similarity index 100% rename from covid19python/templates/europe/europe_country_germany.html rename to templates/europe/europe_country_germany.html diff --git a/covid19python/templates/europe/europe_country_one.html b/templates/europe/europe_country_one.html similarity index 100% rename from covid19python/templates/europe/europe_country_one.html rename to templates/europe/europe_country_one.html diff --git a/covid19python/templates/europe/europe_data.html b/templates/europe/europe_data.html similarity index 100% rename from covid19python/templates/europe/europe_data.html rename to templates/europe/europe_data.html diff --git a/covid19python/templates/europe/europe_date_reported_all.html b/templates/europe/europe_date_reported_all.html similarity index 100% rename from covid19python/templates/europe/europe_date_reported_all.html rename to templates/europe/europe_date_reported_all.html diff --git a/covid19python/templates/europe/europe_date_reported_one.html b/templates/europe/europe_date_reported_one.html similarity index 100% rename from covid19python/templates/europe/europe_date_reported_one.html rename to templates/europe/europe_date_reported_one.html diff --git a/covid19python/templates/europe/europe_date_reported_one_cases_weekly.html b/templates/europe/europe_date_reported_one_cases_weekly.html similarity index 100% rename from covid19python/templates/europe/europe_date_reported_one_cases_weekly.html rename to templates/europe/europe_date_reported_one_cases_weekly.html diff --git a/covid19python/templates/europe/europe_date_reported_one_deaths_weekly.html b/templates/europe/europe_date_reported_one_deaths_weekly.html similarity index 100% rename from covid19python/templates/europe/europe_date_reported_one_deaths_weekly.html rename to templates/europe/europe_date_reported_one_deaths_weekly.html diff --git a/covid19python/templates/europe/europe_date_reported_one_notification_rate.html b/templates/europe/europe_date_reported_one_notification_rate.html similarity index 100% rename from covid19python/templates/europe/europe_date_reported_one_notification_rate.html rename to templates/europe/europe_date_reported_one_notification_rate.html diff --git a/covid19python/templates/europe/europe_imported.html b/templates/europe/europe_imported.html similarity index 100% rename from covid19python/templates/europe/europe_imported.html rename to templates/europe/europe_imported.html diff --git a/covid19python/templates/europe/europe_info.html b/templates/europe/europe_info.html similarity index 100% rename from covid19python/templates/europe/europe_info.html rename to templates/europe/europe_info.html diff --git a/covid19python/templates/europe/europe_tasks.html b/templates/europe/europe_tasks.html similarity index 100% rename from covid19python/templates/europe/europe_tasks.html rename to templates/europe/europe_tasks.html diff --git a/covid19python/templates/europe/fragment_europe_continent_table.html b/templates/europe/fragment_europe_continent_table.html similarity index 100% rename from covid19python/templates/europe/fragment_europe_continent_table.html rename to templates/europe/fragment_europe_continent_table.html diff --git a/covid19python/templates/europe/fragment_europe_country_table.html b/templates/europe/fragment_europe_country_table.html similarity index 100% rename from covid19python/templates/europe/fragment_europe_country_table.html rename to templates/europe/fragment_europe_country_table.html diff --git a/covid19python/templates/europe/fragment_europe_data_imported_table.html b/templates/europe/fragment_europe_data_imported_table.html similarity index 100% rename from covid19python/templates/europe/fragment_europe_data_imported_table.html rename to templates/europe/fragment_europe_data_imported_table.html diff --git a/covid19python/templates/europe/fragment_europe_data_table.html b/templates/europe/fragment_europe_data_table.html similarity index 100% rename from covid19python/templates/europe/fragment_europe_data_table.html rename to templates/europe/fragment_europe_data_table.html diff --git a/covid19python/templates/europe/fragment_europe_date_reported_table.html b/templates/europe/fragment_europe_date_reported_table.html similarity index 100% rename from covid19python/templates/europe/fragment_europe_date_reported_table.html rename to templates/europe/fragment_europe_date_reported_table.html diff --git a/covid19python/templates/fragment_flashed_messages.html b/templates/fragment_flashed_messages.html similarity index 100% rename from covid19python/templates/fragment_flashed_messages.html rename to templates/fragment_flashed_messages.html diff --git a/covid19python/templates/fragment_navbar.html b/templates/fragment_navbar.html similarity index 100% rename from covid19python/templates/fragment_navbar.html rename to templates/fragment_navbar.html diff --git a/covid19python/templates/fragment_navtabs.html b/templates/fragment_navtabs.html similarity index 100% rename from covid19python/templates/fragment_navtabs.html rename to templates/fragment_navtabs.html diff --git a/covid19python/templates/fragment_navtabs_admin.html b/templates/fragment_navtabs_admin.html similarity index 100% rename from covid19python/templates/fragment_navtabs_admin.html rename to templates/fragment_navtabs_admin.html diff --git a/covid19python/templates/fragment_navtabs_europe.html b/templates/fragment_navtabs_europe.html similarity index 100% rename from covid19python/templates/fragment_navtabs_europe.html rename to templates/fragment_navtabs_europe.html diff --git a/covid19python/templates/fragment_navtabs_nrw.html b/templates/fragment_navtabs_nrw.html similarity index 100% rename from covid19python/templates/fragment_navtabs_nrw.html rename to templates/fragment_navtabs_nrw.html diff --git a/covid19python/templates/fragment_navtabs_rki.html b/templates/fragment_navtabs_rki.html similarity index 100% rename from covid19python/templates/fragment_navtabs_rki.html rename to templates/fragment_navtabs_rki.html diff --git a/covid19python/templates/fragment_navtabs_vaccination.html b/templates/fragment_navtabs_vaccination.html similarity index 100% rename from covid19python/templates/fragment_navtabs_vaccination.html rename to templates/fragment_navtabs_vaccination.html diff --git a/covid19python/templates/fragment_navtabs_who.html b/templates/fragment_navtabs_who.html similarity index 100% rename from covid19python/templates/fragment_navtabs_who.html rename to templates/fragment_navtabs_who.html diff --git a/covid19python/templates/fragment_pagination.html b/templates/fragment_pagination.html similarity index 100% rename from covid19python/templates/fragment_pagination.html rename to templates/fragment_pagination.html diff --git a/covid19python/templates/nrw/nrw_imported.html b/templates/nrw/nrw_imported.html similarity index 100% rename from covid19python/templates/nrw/nrw_imported.html rename to templates/nrw/nrw_imported.html diff --git a/covid19python/templates/nrw/nrw_info.html b/templates/nrw/nrw_info.html similarity index 100% rename from covid19python/templates/nrw/nrw_info.html rename to templates/nrw/nrw_info.html diff --git a/covid19python/templates/nrw/nrw_stadt.html b/templates/nrw/nrw_stadt.html similarity index 100% rename from covid19python/templates/nrw/nrw_stadt.html rename to templates/nrw/nrw_stadt.html diff --git a/covid19python/templates/nrw/nrw_tasks.html b/templates/nrw/nrw_tasks.html similarity index 100% rename from covid19python/templates/nrw/nrw_tasks.html rename to templates/nrw/nrw_tasks.html diff --git a/covid19python/templates/page_home.html b/templates/page_home.html similarity index 100% rename from covid19python/templates/page_home.html rename to templates/page_home.html diff --git a/covid19python/templates/page_layout.html b/templates/page_layout.html similarity index 100% rename from covid19python/templates/page_layout.html rename to templates/page_layout.html diff --git a/covid19python/templates/rki/rki_imported.html b/templates/rki/rki_imported.html similarity index 100% rename from covid19python/templates/rki/rki_imported.html rename to templates/rki/rki_imported.html diff --git a/covid19python/templates/rki/rki_info.html b/templates/rki/rki_info.html similarity index 100% rename from covid19python/templates/rki/rki_info.html rename to templates/rki/rki_info.html diff --git a/covid19python/templates/rki/rki_tasks.html b/templates/rki/rki_tasks.html similarity index 100% rename from covid19python/templates/rki/rki_tasks.html rename to templates/rki/rki_tasks.html diff --git a/covid19python/templates/vaccination/vaccination_imported.html b/templates/vaccination/vaccination_imported.html similarity index 100% rename from covid19python/templates/vaccination/vaccination_imported.html rename to templates/vaccination/vaccination_imported.html diff --git a/covid19python/templates/vaccination/vaccination_info.html b/templates/vaccination/vaccination_info.html similarity index 100% rename from covid19python/templates/vaccination/vaccination_info.html rename to templates/vaccination/vaccination_info.html diff --git a/covid19python/templates/vaccination/vaccination_tasks.html b/templates/vaccination/vaccination_tasks.html similarity index 100% rename from covid19python/templates/vaccination/vaccination_tasks.html rename to templates/vaccination/vaccination_tasks.html diff --git a/covid19python/templates/who/fragment_who_country_table.html b/templates/who/fragment_who_country_table.html similarity index 100% rename from covid19python/templates/who/fragment_who_country_table.html rename to templates/who/fragment_who_country_table.html diff --git a/covid19python/templates/who/fragment_who_global_data_table.html b/templates/who/fragment_who_global_data_table.html similarity index 100% rename from covid19python/templates/who/fragment_who_global_data_table.html rename to templates/who/fragment_who_global_data_table.html diff --git a/covid19python/templates/who/who_country_all.html b/templates/who/who_country_all.html similarity index 100% rename from covid19python/templates/who/who_country_all.html rename to templates/who/who_country_all.html diff --git a/covid19python/templates/who/who_country_germany.html b/templates/who/who_country_germany.html similarity index 100% rename from covid19python/templates/who/who_country_germany.html rename to templates/who/who_country_germany.html diff --git a/covid19python/templates/who/who_country_one.html b/templates/who/who_country_one.html similarity index 100% rename from covid19python/templates/who/who_country_one.html rename to templates/who/who_country_one.html diff --git a/covid19python/templates/who/who_date_reported_all.html b/templates/who/who_date_reported_all.html similarity index 100% rename from covid19python/templates/who/who_date_reported_all.html rename to templates/who/who_date_reported_all.html diff --git a/covid19python/templates/who/who_date_reported_one.html b/templates/who/who_date_reported_one.html similarity index 100% rename from covid19python/templates/who/who_date_reported_one.html rename to templates/who/who_date_reported_one.html diff --git a/covid19python/templates/who/who_imported.html b/templates/who/who_imported.html similarity index 100% rename from covid19python/templates/who/who_imported.html rename to templates/who/who_imported.html diff --git a/covid19python/templates/who/who_info.html b/templates/who/who_info.html similarity index 100% rename from covid19python/templates/who/who_info.html rename to templates/who/who_info.html diff --git a/covid19python/templates/who/who_region_all.html b/templates/who/who_region_all.html similarity index 100% rename from covid19python/templates/who/who_region_all.html rename to templates/who/who_region_all.html diff --git a/covid19python/templates/who/who_region_one.html b/templates/who/who_region_one.html similarity index 100% rename from covid19python/templates/who/who_region_one.html rename to templates/who/who_region_one.html diff --git a/covid19python/templates/who/who_tasks.html b/templates/who/who_tasks.html similarity index 100% rename from covid19python/templates/who/who_tasks.html rename to templates/who/who_tasks.html