mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-03 20:02:47 +00:00 
			
		
		
		
	Simplify Config setup and move some functions to dedicated files
This commit is contained in:
		@@ -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
									
								
							
							
						
						
									
										25
									
								
								app/cli.py
									
									
									
									
									
										Normal 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)
 | 
			
		||||
@@ -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 application’s 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))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user