bazarr/bazarr/app.py

54 lines
1.7 KiB
Python
Raw Normal View History

# coding=utf-8
2020-05-06 12:09:41 +00:00
from flask import Flask, redirect, render_template, request, url_for
2020-01-21 00:35:55 +00:00
from flask_socketio import SocketIO
import os
from get_args import args
2020-07-05 13:16:17 +00:00
from config import settings, base_url
2020-01-21 00:35:55 +00:00
2020-05-11 19:09:04 +00:00
socketio = SocketIO()
2020-01-21 00:35:55 +00:00
def create_app():
# Flask Setup
app = Flask(__name__,
2021-03-25 14:22:43 +00:00
template_folder=os.path.join(os.path.dirname(__file__), '..', 'frontend', 'build'),
static_folder=os.path.join(os.path.dirname(__file__), '..', 'frontend', 'build', 'static'),
2020-02-24 02:55:09 +00:00
static_url_path=base_url.rstrip('/') + '/static')
2020-04-06 21:27:36 +00:00
app.wsgi_app = ReverseProxied(app.wsgi_app)
2020-01-21 00:35:55 +00:00
app.route = prefix_route(app.route, base_url.rstrip('/'))
2020-07-05 13:16:17 +00:00
app.config["SECRET_KEY"] = settings.general.flask_secret_key
app.config['JSONIFY_PRETTYPRINT_REGULAR'] = True
app.config['JSON_AS_ASCII'] = False
2020-01-21 00:35:55 +00:00
if args.dev:
app.config["DEBUG"] = True
else:
app.config["DEBUG"] = False
socketio.init_app(app, path=base_url.rstrip('/')+'/api/socket.io', cors_allowed_origins='*', async_mode='threading')
2020-01-21 00:35:55 +00:00
return app
def prefix_route(route_function, prefix='', mask='{0}{1}'):
# Defines a new route function with a prefix.
# The mask argument is a `format string` formatted with, in that order: prefix, route
def newroute(route, *args, **kwargs):
# New function to prefix the route
return route_function(mask.format(prefix, route), *args, **kwargs)
return newroute
2020-04-06 21:27:36 +00:00
class ReverseProxied(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
scheme = environ.get('HTTP_X_FORWARDED_PROTO')
if scheme:
environ['wsgi.url_scheme'] = scheme
return self.app(environ, start_response)