Simplify Config setup and move some functions to dedicated files

This commit is contained in:
Patrick Jentsch
2021-09-15 12:31:53 +02:00
parent 8a69d6364a
commit 52c25fd563
11 changed files with 81 additions and 136 deletions

View File

@ -1,7 +1,8 @@
from config import config
from config import Config
from flask import Flask
from flask_login import LoginManager
from flask_mail import Mail
from flask_migrate import Migrate
from flask_paranoid import Paranoid
from flask_socketio import SocketIO
from flask_sqlalchemy import SQLAlchemy
@ -10,23 +11,26 @@ import flask_assets
assets = flask_assets.Environment()
db = SQLAlchemy()
login_manager = LoginManager()
login_manager.login_view = 'auth.login'
login = LoginManager()
login.login_view = 'auth.login'
login.login_message = 'Please log in to access this page.'
mail = Mail()
migrate = Migrate()
paranoid = Paranoid()
paranoid.redirect_view = '/'
socketio = SocketIO()
def create_app(config_name):
def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(config[config_name])
app.config.from_object(config_class)
assets.init_app(app)
config[config_name].init_app(app)
config_class.init_app(app)
db.init_app(app)
login_manager.init_app(app)
login.init_app(app)
mail.init_app(app)
migrate.init_app(app, db)
paranoid.init_app(app)
socketio.init_app(
app, message_queue=app.config['NOPAQUE_SOCKETIO_MESSAGE_QUEUE_URI'])

25
app/cli.py Normal file
View File

@ -0,0 +1,25 @@
from .models import Role
from flask_migrate import upgrade
def register(app):
@app.cli.command()
def deploy():
"""Run deployment tasks."""
# migrate database to latest revision
upgrade()
# create or update user roles
Role.insert_roles()
@app.cli.command()
def tasks():
from app.tasks import TaskRunner
task_runner = TaskRunner()
task_runner.run()
@app.cli.command()
def test():
"""Run the unit tests."""
import unittest
tests = unittest.TestLoader().discover('tests')
unittest.TextTestRunner(verbosity=2).run(tests)

View File

@ -1,11 +1,11 @@
from datetime import datetime, timedelta
from flask import current_app, url_for
from flask_login import UserMixin, AnonymousUserMixin
from flask_login import UserMixin
from itsdangerous import BadSignature, TimedJSONWebSignatureSerializer
from time import sleep
from werkzeug.security import generate_password_hash, check_password_hash
import xml.etree.ElementTree as ET
from . import db, login_manager
from . import db, login
import base64
import logging
import os
@ -285,18 +285,6 @@ class User(UserMixin, db.Model):
return user
class AnonymousUser(AnonymousUserMixin):
'''
Model replaces the default AnonymousUser.
'''
def can(self, permissions):
return False
def is_administrator(self):
return False
class JobInput(db.Model):
'''
Class to define JobInputs.
@ -722,13 +710,6 @@ class QueryResult(db.Model):
return '<QueryResult {}>'.format(self.title)
'''
' Flask-Login is told to use the applications custom anonymous user by setting
' its class in the login_manager.anonymous_user attribute.
'''
login_manager.anonymous_user = AnonymousUser
@login_manager.user_loader
@login.user_loader
def load_user(user_id):
return User.query.get(int(user_id))