From 36d67dd859019af9ee0540fff51fb7a6a64c4524 Mon Sep 17 00:00:00 2001
From: "thomas.woehlke" <thomas.woehlke@rub.de>
Date: Wed, 24 Feb 2021 20:52:38 +0100
Subject: [PATCH] Default task

---
 requirements/dev.in                                      | 8 --------
 .../admin/fragments/fragment_admin_navtabs.html          | 8 ++++++++
 src/covid19/blueprints/application/application_model.py  | 3 +++
 src/covid19/blueprints/application/application_views.py  | 2 ++
 src/covid19/blueprints/ecdc/ecdc_model.py                | 3 +++
 src/covid19/blueprints/owid/owid_model.py                | 5 +++++
 .../rki_bundeslaender/rki_bundeslaender_model.py         | 4 ++++
 .../blueprints/rki_landkreise/rki_landkreise_model.py    | 4 ++++
 .../blueprints/rki_vaccination/rki_vaccination_model.py  | 4 ++++
 src/covid19/blueprints/who/who_model.py                  | 9 +++++++++
 src/database.py                                          | 5 +++++
 11 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/requirements/dev.in b/requirements/dev.in
index 6687c805..cd577736 100644
--- a/requirements/dev.in
+++ b/requirements/dev.in
@@ -6,7 +6,6 @@ Flask-SQLAlchemy>=2.4.4
 Flask-Cors>=3.0.10
 Flask-BS4>=4.5.3.0,<5.0.0.0
 flask-resources==0.6.0
-Flask-PluginKit>=3.6.0
 Flask-ResponseBuilder>=2.0.12
 Flask-Babel>=2
 Flask-Admin>=1.5.7
@@ -15,16 +14,9 @@ Flask-Monitoring>=1.1.2
 flask-healthz>=0.0.2
 Flask-Caching>=1.9.0
 Flask-DB>=0.3.0
-flask-pwa>=0.1.0
 Flask-Moment>=0.11.0
-Flask-CKEditor>=0.4.4.1
-flask-checkr>=0.1.2
 flask-whooshalchemy3>=0.2.0
-flask-was>=0.1.0
-Flask-GraphQL>=2.0.1
-flask-hintful>=0.0.7
 Flask-PluginKit>=3.6.0
-Flask-ResponseBuilder>=2.0.12
 flask-filealchemy>=0.6.1
 SQLAlchemy>=1.3.23
 celery[redis]>=5.0.5
diff --git a/src/covid19/blueprints/admin/templates/admin/fragments/fragment_admin_navtabs.html b/src/covid19/blueprints/admin/templates/admin/fragments/fragment_admin_navtabs.html
index 4ddf5d8c..bf4fa0aa 100644
--- a/src/covid19/blueprints/admin/templates/admin/fragments/fragment_admin_navtabs.html
+++ b/src/covid19/blueprints/admin/templates/admin/fragments/fragment_admin_navtabs.html
@@ -16,6 +16,14 @@
                             <a class="nav-link"
                                href="{{ url_for( 'app_admin.url_admin_index') }}">flask admin</a>
                         </li>
+                        <li class="nav-item">
+                            <a class="nav-link"
+                               href="/dashboard">dashboard</a>
+                        </li>
+                        <li class="nav-item">
+                            <a class="nav-link"
+                               href="/redisboard">redisboard</a>
+                        </li>
                     </ul>
                 </nav>
             </div>
diff --git a/src/covid19/blueprints/application/application_model.py b/src/covid19/blueprints/application/application_model.py
index 13a96bc9..ac2014b7 100644
--- a/src/covid19/blueprints/application/application_model.py
+++ b/src/covid19/blueprints/application/application_model.py
@@ -2,6 +2,7 @@ from sqlalchemy import and_, func
 from datetime import date, datetime, time
 from database import db, ITEMS_PER_PAGE
 from sqlalchemy.orm import joinedload
+from whoosh.analysis import StemmingAnalyzer
 
 
 class ApplicationDateReported(db.Model):
@@ -228,6 +229,8 @@ class RkiDateReported(ApplicationDateReported):
     __table_args__ = (
         db.UniqueConstraint('date_reported', 'datum', name="uix_rki_date_reported"),
     )
+    __searchable__ = ['date_reported', 'year_week', 'year', 'datum']  # indexed fields
+    __analyzer__ = StemmingAnalyzer()
 
     id = db.Column(db.Integer, primary_key=True)
     date_reported = db.Column(db.String(255), nullable=False)
diff --git a/src/covid19/blueprints/application/application_views.py b/src/covid19/blueprints/application/application_views.py
index 2aed03ed..2c9ebe61 100644
--- a/src/covid19/blueprints/application/application_views.py
+++ b/src/covid19/blueprints/application/application_views.py
@@ -1,5 +1,6 @@
 from flask import render_template, redirect, url_for, Blueprint
 from flask_admin.contrib.sqla import ModelView
+from flask_healthz import healthz
 
 from database import app, admin, db
 from covid19.blueprints.application.application_model_transient import ApplicationPage
@@ -30,6 +31,7 @@ app.register_blueprint(app_rki_landkreise, url_prefix='/rki/landkreise')
 app.register_blueprint(app_rki_vaccination, url_prefix='/rki/vaccination')
 app.register_blueprint(app_who, url_prefix='/who')
 app.register_blueprint(app_owid, url_prefix='/owid')
+app.register_blueprint(healthz, url_prefix="/healthz")
 
 ############################################################################################
 #
diff --git a/src/covid19/blueprints/ecdc/ecdc_model.py b/src/covid19/blueprints/ecdc/ecdc_model.py
index cdc20750..ea76e682 100644
--- a/src/covid19/blueprints/ecdc/ecdc_model.py
+++ b/src/covid19/blueprints/ecdc/ecdc_model.py
@@ -1,4 +1,5 @@
 from sqlalchemy import and_
+from whoosh.analysis import StemmingAnalyzer
 from datetime import date
 from database import db, ITEMS_PER_PAGE
 from covid19.blueprints.application.application_model import ApplicationDateReported, ApplicationRegion
@@ -10,6 +11,8 @@ class EcdcDateReported(ApplicationDateReported):
     __table_args__ = (
         db.UniqueConstraint('date_reported', 'datum', name="uix_ecdc_date_reported"),
     )
+    __searchable__ = ['date_reported', 'year_week', 'year', 'datum']  # indexed fields
+    __analyzer__ = StemmingAnalyzer()
 
     id = db.Column(db.Integer, primary_key=True)
     date_reported = db.Column(db.String(255), nullable=False, unique=True)
diff --git a/src/covid19/blueprints/owid/owid_model.py b/src/covid19/blueprints/owid/owid_model.py
index 047603f3..a9e5b2e5 100644
--- a/src/covid19/blueprints/owid/owid_model.py
+++ b/src/covid19/blueprints/owid/owid_model.py
@@ -1,4 +1,5 @@
 from sqlalchemy import and_, func
+from whoosh.analysis import StemmingAnalyzer
 from datetime import date
 from database import db, ITEMS_PER_PAGE
 from sqlalchemy.orm import joinedload
@@ -11,6 +12,8 @@ class OwidDateReported(ApplicationDateReported):
     __table_args__ = (
         db.UniqueConstraint('date_reported', 'datum', name="uix_owid_date_reported"),
     )
+    __searchable__ = ['year', 'year_week', 'date_reported']  # indexed fields
+    __analyzer__ = StemmingAnalyzer()
 
     id = db.Column(db.Integer, primary_key=True)
     date_reported = db.Column(db.String(255), nullable=False, unique=True)
@@ -46,6 +49,8 @@ class OwidDateReported(ApplicationDateReported):
 
 class OwidData(db.Model):
     __tablename__ = 'owid_data'
+    __searchable__ = ['continent', 'location', 'iso_code']  # indexed fields
+    __analyzer__ = StemmingAnalyzer()
 
     id = db.Column(db.Integer, primary_key=True)
     date_reported_id = db.Column(db.Integer,
diff --git a/src/covid19/blueprints/rki_bundeslaender/rki_bundeslaender_model.py b/src/covid19/blueprints/rki_bundeslaender/rki_bundeslaender_model.py
index 2c1eec6c..152fa2df 100644
--- a/src/covid19/blueprints/rki_bundeslaender/rki_bundeslaender_model.py
+++ b/src/covid19/blueprints/rki_bundeslaender/rki_bundeslaender_model.py
@@ -1,8 +1,12 @@
+from whoosh.analysis import StemmingAnalyzer
+
 from database import db, ITEMS_PER_PAGE
 
 
 class RkiBundeslaender(db.Model):
     __tablename__ = 'rki_bundeslaender'
+    __searchable__ = ['county']  # indexed fields
+    __analyzer__ = StemmingAnalyzer()
 
     id = db.Column(db.Integer, primary_key=True)
     object_id_1 = db.Column(db.Integer, nullable=False)
diff --git a/src/covid19/blueprints/rki_landkreise/rki_landkreise_model.py b/src/covid19/blueprints/rki_landkreise/rki_landkreise_model.py
index 8c2d1016..748d59f3 100644
--- a/src/covid19/blueprints/rki_landkreise/rki_landkreise_model.py
+++ b/src/covid19/blueprints/rki_landkreise/rki_landkreise_model.py
@@ -2,11 +2,15 @@ from sqlalchemy import and_
 from datetime import date
 from sqlalchemy.orm import joinedload
 
+from whoosh.analysis import StemmingAnalyzer
+
 from database import db, ITEMS_PER_PAGE
 
 
 class RkiLandkreise(db.Model):
     __tablename__ = 'rki_landkreise'
+    __searchable__ = ['county']  # indexed fields
+    __analyzer__ = StemmingAnalyzer()
 
     id = db.Column(db.Integer, primary_key=True)
 
diff --git a/src/covid19/blueprints/rki_vaccination/rki_vaccination_model.py b/src/covid19/blueprints/rki_vaccination/rki_vaccination_model.py
index 111af443..b371ac2e 100644
--- a/src/covid19/blueprints/rki_vaccination/rki_vaccination_model.py
+++ b/src/covid19/blueprints/rki_vaccination/rki_vaccination_model.py
@@ -1,5 +1,7 @@
 from datetime import date
 
+from whoosh.analysis import StemmingAnalyzer
+
 from database import db, ITEMS_PER_PAGE
 from covid19.blueprints.application.application_model import ApplicationDateReported
 
@@ -12,6 +14,8 @@ class RkiVaccinationDateReported(ApplicationDateReported):
     __table_args__ = (
         db.UniqueConstraint('date_reported', 'datum', name="uix_rki_vaccination_date_reported"),
     )
+    __searchable__ = ['year', 'date_reported', 'year_week']  # indexed fields
+    __analyzer__ = StemmingAnalyzer()
 
     id = db.Column(db.Integer, primary_key=True)
     date_reported = db.Column(db.String(255), nullable=False, unique=True)
diff --git a/src/covid19/blueprints/who/who_model.py b/src/covid19/blueprints/who/who_model.py
index 0b633c2f..8ba53bcd 100644
--- a/src/covid19/blueprints/who/who_model.py
+++ b/src/covid19/blueprints/who/who_model.py
@@ -1,5 +1,8 @@
 from sqlalchemy import and_, func
 from datetime import date
+
+from whoosh.analysis import StemmingAnalyzer
+
 from database import db, ITEMS_PER_PAGE
 from sqlalchemy.orm import joinedload
 from covid19.blueprints.application.application_model import ApplicationDateReported, ApplicationRegion
@@ -11,6 +14,8 @@ class WhoDateReported(ApplicationDateReported):
     __table_args__ = (
         db.UniqueConstraint('date_reported', 'datum', name="uix_who_date_reported"),
     )
+    __searchable__ = ['year', 'date_reported', 'year_week']  # indexed fields
+    __analyzer__ = StemmingAnalyzer()
 
     id = db.Column(db.Integer, primary_key=True)
     date_reported = db.Column(db.String(255), nullable=False, unique=True)
@@ -50,6 +55,8 @@ class WhoRegion(ApplicationRegion):
     __table_args__ = (
         db.UniqueConstraint('region', name="uix_who_region"),
     )
+    __searchable__ = ['region']  # indexed fields
+    __analyzer__ = StemmingAnalyzer()
 
     id = db.Column(db.Integer, primary_key=True)
     region = db.Column(db.String(255), nullable=False, unique=True)
@@ -60,6 +67,8 @@ class WhoCountry(db.Model):
     __table_args__ = (
         db.UniqueConstraint('country_code', 'country', name="uix_who_country"),
     )
+    __searchable__ = ['country_code','country']  # indexed fields
+    __analyzer__ = StemmingAnalyzer()
 
     id = db.Column(db.Integer, primary_key=True)
     country_code = db.Column(db.String(255), unique=True, nullable=False)
diff --git a/src/database.py b/src/database.py
index bb75f6f6..5eeb7e43 100644
--- a/src/database.py
+++ b/src/database.py
@@ -1,5 +1,7 @@
 import logging
 from flask import Flask, logging
+import flask_monitoringdashboard as dashboard
+from flask_redisboard import RedisBoardExtension
 from flask_cors import CORS
 from flask_bs4 import Bootstrap
 from flask_sqlalchemy import SQLAlchemy
@@ -8,9 +10,11 @@ from flask_admin import Admin
 from celery import Celery
 from celery.utils.log import LoggingProxy
 
+board = RedisBoardExtension()
 
 def create_app():
     my_app = Flask('covid19')
+    dashboard.bind(my_app)
     CORS(my_app)
     Bootstrap(my_app)
     my_app.config.from_object("config")
@@ -22,6 +26,7 @@ def create_app():
     my_app.config['SQLALCHEMY_DATABASE_URI'] = db_url
     my_app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # silence the deprecation warning
     my_app.config['FLASK_ADMIN_SWATCH'] = 'superhero'
+    board.init_app(my_app)
     return my_app
 
 
-- 
GitLab