mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-10-31 10:42:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from apifairy import APIFairy
 | |
| from config import Config
 | |
| from docker import DockerClient
 | |
| from flask import Flask
 | |
| from flask_apscheduler import APScheduler
 | |
| from flask_assets import Environment
 | |
| from flask_login import LoginManager
 | |
| from flask_mail import Mail
 | |
| from flask_marshmallow import Marshmallow
 | |
| from flask_migrate import Migrate
 | |
| from flask_paranoid import Paranoid
 | |
| from flask_socketio import SocketIO
 | |
| from flask_sqlalchemy import SQLAlchemy
 | |
| from flask_hashids import Hashids
 | |
| 
 | |
| 
 | |
| apifairy = APIFairy()
 | |
| assets = Environment()
 | |
| db = SQLAlchemy()
 | |
| docker_client = DockerClient()
 | |
| hashids = Hashids()
 | |
| login = LoginManager()
 | |
| ma = Marshmallow()
 | |
| mail = Mail()
 | |
| migrate = Migrate(compare_type=True)
 | |
| paranoid = Paranoid()
 | |
| scheduler = APScheduler()
 | |
| socketio = SocketIO()
 | |
| 
 | |
| 
 | |
| # TODO: Create export for lemmatized corpora
 | |
| 
 | |
| 
 | |
| def create_app(config: Config = Config) -> Flask:
 | |
|     ''' Creates an initialized Flask (WSGI Application) object. '''
 | |
|     app = Flask(__name__)
 | |
|     app.config.from_object(config)
 | |
|     config.init_app(app)
 | |
|     docker_client.login(
 | |
|         app.config['NOPAQUE_DOCKER_REGISTRY_USERNAME'],
 | |
|         password=app.config['NOPAQUE_DOCKER_REGISTRY_PASSWORD'],
 | |
|         registry=app.config['NOPAQUE_DOCKER_REGISTRY']
 | |
|     )
 | |
| 
 | |
|     apifairy.init_app(app)
 | |
|     assets.init_app(app)
 | |
|     db.init_app(app)
 | |
|     hashids.init_app(app)
 | |
|     login.init_app(app)
 | |
|     ma.init_app(app)
 | |
|     mail.init_app(app)
 | |
|     migrate.init_app(app, db)
 | |
|     paranoid.init_app(app)
 | |
|     scheduler.init_app(app)
 | |
|     socketio.init_app(app, message_queue=app.config['NOPAQUE_SOCKETIO_MESSAGE_QUEUE_URI'])  # noqa
 | |
| 
 | |
|     from .models import AnonymousUser, User
 | |
|     login.anonymous_user = AnonymousUser
 | |
|     login.login_view = 'auth.login'
 | |
|     @login.user_loader
 | |
|     def load_user(user_id):
 | |
|         return User.query.get(int(user_id))
 | |
| 
 | |
|     paranoid.redirect_view = '/'
 | |
| 
 | |
|     from .models.event_listeners import register_event_listeners
 | |
|     register_event_listeners()
 | |
| 
 | |
|     from .admin import bp as admin_blueprint
 | |
|     app.register_blueprint(admin_blueprint, url_prefix='/admin')
 | |
| 
 | |
|     from .api import bp as api_blueprint
 | |
|     app.register_blueprint(api_blueprint, url_prefix='/api')
 | |
| 
 | |
|     from .auth import bp as auth_blueprint
 | |
|     app.register_blueprint(auth_blueprint)
 | |
| 
 | |
|     from .contributions import bp as contributions_blueprint
 | |
|     app.register_blueprint(contributions_blueprint, url_prefix='/contributions')
 | |
| 
 | |
|     from .corpora import bp as corpora_blueprint
 | |
|     from .corpora.cqi_over_sio import CQiNamespace
 | |
|     app.register_blueprint(corpora_blueprint, cli_group='corpus', url_prefix='/corpora')
 | |
|     socketio.on_namespace(CQiNamespace('/cqi_over_sio'))
 | |
| 
 | |
|     from .errors import bp as errors_bp
 | |
|     app.register_blueprint(errors_bp)
 | |
| 
 | |
|     from .jobs import bp as jobs_blueprint
 | |
|     app.register_blueprint(jobs_blueprint, url_prefix='/jobs')
 | |
| 
 | |
|     from .main import bp as main_blueprint
 | |
|     app.register_blueprint(main_blueprint, cli_group=None)
 | |
| 
 | |
|     from .services import bp as services_blueprint
 | |
|     app.register_blueprint(services_blueprint, url_prefix='/services')
 | |
| 
 | |
|     from .settings import bp as settings_blueprint
 | |
|     app.register_blueprint(settings_blueprint, url_prefix='/settings')
 | |
| 
 | |
|     from .users import bp as users_blueprint
 | |
|     app.register_blueprint(users_blueprint, cli_group='user', url_prefix='/users')
 | |
| 
 | |
|     from .workshops import bp as workshops_blueprint
 | |
|     app.register_blueprint(workshops_blueprint, url_prefix='/workshops')
 | |
| 
 | |
|     return app
 |