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