From 83ea387caf245694255b680dd0d1cac394b45af2 Mon Sep 17 00:00:00 2001
From: thomaswoehlke <thomas.woehlke@gmail.com>
Date: Tue, 19 Jan 2021 17:44:42 +0100
Subject: [PATCH] ### 0.0.9 Release * Fixed #18 /europe/update: Download *
 Fixed #19 /europe/update: Import File to DB * Issue #20 /europe/update:
 Update DB * Issue #21 update_date_reported * Issue #22 update_continent *
 Issue #23 update_country * Issue #24 update_data * Issue #3 ORM: 3NF for
 ecdc_europa_data_import * Issue #4 data update for 3NF
 ecdc_europa_data_import

---
 README.md                                  |  4 +++
 app.py                                     | 27 ++++++++++++++
 org/woehlke/covid19/admin/__init__.py      |  0
 org/woehlke/covid19/admin/admin_service.py | 41 ++++++++++++++++++++++
 4 files changed, 72 insertions(+)
 create mode 100644 org/woehlke/covid19/admin/__init__.py
 create mode 100644 org/woehlke/covid19/admin/admin_service.py

diff --git a/README.md b/README.md
index a90bb5c7..ec518e2f 100644
--- a/README.md
+++ b/README.md
@@ -198,6 +198,10 @@ class WhoGlobalDataImportTable(db.Model):
 * Issue #22 update_continent
 * Issue #23 update_country
 * Issue #24 update_data
+* Issue #25 /who/update/initial update_data_initial
+* Issue #26 /admin/database/dump
+* Issue #27 /admin/database/drop
+* Issue #28 /admin/database/import
 * Issue #3 ORM: 3NF for ecdc_europa_data_import
 * Issue #4 data update for 3NF ecdc_europa_data_import
 
diff --git a/app.py b/app.py
index 54193018..79d87f02 100644
--- a/app.py
+++ b/app.py
@@ -309,6 +309,33 @@ def url_alive_message_start():
     return redirect(url_for('home'))
 
 
+@app.route('/admin/database/dump')
+def url_admin_database_dump():
+    app.logger.info("url_admin_database_dump [start]")
+    alive_message_task.apply_async()
+    flash("alive_message_task started")
+    app.logger.info("url_admin_database_dump [done]")
+    return redirect(url_for('home'))
+
+
+@app.route('/admin/database/import')
+def url_admin_database_import():
+    app.logger.info("url_admin_database_import [start]")
+    alive_message_task.apply_async()
+    flash("alive_message_task started")
+    app.logger.info("url_admin_database_import [done]")
+    return redirect(url_for('home'))
+
+
+@app.route('/admin/database/drop')
+def url_admin_database_drop():
+    app.logger.info("url_admin_database_drop [start]")
+    alive_message_task.apply_async()
+    flash("alive_message_task started")
+    app.logger.info("url_admin_database_drop [done]")
+    return redirect(url_for('home'))
+
+
 if __name__ == '__main__':
     dictConfig(my_logging_comfig)
     db.create_all()
diff --git a/org/woehlke/covid19/admin/__init__.py b/org/woehlke/covid19/admin/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/org/woehlke/covid19/admin/admin_service.py b/org/woehlke/covid19/admin/admin_service.py
new file mode 100644
index 00000000..969bd8f8
--- /dev/null
+++ b/org/woehlke/covid19/admin/admin_service.py
@@ -0,0 +1,41 @@
+import os
+from database import app
+
+admin_service = None
+
+
+class AdminService:
+    def __init__(self, database):
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" Admin Service [init]")
+        app.logger.info("------------------------------------------------------------")
+        self.__database = database
+        self.limit_nr = 20
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info(" Admin Service [ready]")
+
+    def run_admin_database_dump(self):
+        app.logger.info(" run update countries [begin]")
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info("... TBD")
+        app.logger.info(" run update countries [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def run_admin_database_import(self):
+        app.logger.info(" run update countries [begin]")
+        app.logger.info("------------------------------------------------------------")
+        app.logger.info("... TBD")
+        app.logger.info(" run update countries [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
+
+    def run_admin_database_drop(self):
+        app.logger.info(" run update countries [begin]")
+        app.logger.info("------------------------------------------------------------")
+        self.__database.drop_all()
+        self.__database.create_all()
+        app.logger.info("")
+        app.logger.info(" run update countries [done]")
+        app.logger.info("------------------------------------------------------------")
+        return self
-- 
GitLab