def create_app(debug=None): app = gen_app(debug=debug) # Static files import listenbrainz.webserver.static_manager static_manager.read_manifest() app.static_folder = '/static' app.context_processor(lambda: dict( get_static_path=static_manager.get_static_path, )) _register_blueprints(app) # Admin views from listenbrainz import model model.db.init_app(app) from flask_admin import Admin from listenbrainz.webserver.admin.views import HomeView admin = Admin(app, index_view=HomeView(name='Home'), template_mode='bootstrap3') from listenbrainz.model import ExternalService as ExternalServiceModel from listenbrainz.model import User as UserModel from listenbrainz.model import ListensImporter as ListensImporterModel from listenbrainz.model import ReportedUsers as ReportedUsersModel from listenbrainz.model import Playlist as PlaylistModel from listenbrainz.model import PlaylistRecording as PlaylistRecordingModel from listenbrainz.model.external_service_oauth import ExternalServiceAdminView from listenbrainz.model.user import UserAdminView from listenbrainz.model.listens_import import ListensImporterAdminView from listenbrainz.model.reported_users import ReportedUserAdminView from listenbrainz.model.playlist import PlaylistAdminView from listenbrainz.model.playlist_recording import PlaylistRecordingAdminView admin.add_view(UserAdminView(UserModel, model.db.session, endpoint='user_model')) admin.add_view(ExternalServiceAdminView(ExternalServiceModel, model.db.session, endpoint='external_service_model')) admin.add_view(ListensImporterAdminView(ListensImporterModel, model.db.session, endpoint='listens_importer_model')) admin.add_view(ReportedUserAdminView(ReportedUsersModel, model.db.session, endpoint='reported_users_model')) admin.add_view(PlaylistAdminView(PlaylistModel, model.db.session, endpoint='playlist_model')) admin.add_view(PlaylistRecordingAdminView(PlaylistRecordingModel, model.db.session, endpoint='playlist_recording_model')) @app.before_request def before_request_gdpr_check(): # skip certain pages, static content and the API if request.path == url_for('index.gdpr_notice') \ or request.path == url_for('profile.delete') \ or request.path == url_for('profile.export_data') \ or request.path == url_for('login.logout') \ or request.path.startswith('/static') \ or request.path.startswith('/1'): return # otherwise if user is logged in and hasn't agreed to gdpr, # redirect them to agree to terms page. elif current_user.is_authenticated and current_user.gdpr_agreed is None: return redirect(url_for('index.gdpr_notice', next=request.full_path)) app.logger.info("Flask application created!") return app
def create_app(config_path=None, debug=None): app = gen_app(config_path=config_path, debug=debug) # Static files import listenbrainz.webserver.static_manager static_manager.read_manifest() app.context_processor( lambda: dict(get_static_path=static_manager.get_static_path)) app.static_folder = '/static' _register_blueprints(app) # Admin views from listenbrainz import model model.db.init_app(app) from flask_admin import Admin from listenbrainz.webserver.admin.views import HomeView admin = Admin(app, index_view=HomeView(name='Home'), template_mode='bootstrap3') from listenbrainz.model import Spotify as SpotifyModel from listenbrainz.model import User as UserModel from listenbrainz.model.spotify import SpotifyAdminView from listenbrainz.model.user import UserAdminView admin.add_view( UserAdminView(UserModel, model.db.session, endpoint='user_model')) admin.add_view( SpotifyAdminView(SpotifyModel, model.db.session, endpoint='spotify_model')) @app.before_request def before_request_gdpr_check(): # skip certain pages, static content and the API if request.path == url_for('index.gdpr_notice') \ or request.path == url_for('profile.delete') \ or request.path == url_for('profile.export_data') \ or request.path == url_for('login.logout') \ or request.path.startswith('/static') \ or request.path.startswith('/1'): return # otherwise if user is logged in and hasn't agreed to gdpr, # redirect them to agree to terms page. elif current_user.is_authenticated and current_user.gdpr_agreed is None: return redirect( url_for('index.gdpr_notice', next=request.full_path)) return app