#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright Hersel Giannella from flask import Flask, send_from_directory from flask_login import LoginManager from config import config from models import db, bcrypt, User from routes.home import route_home from routes.api import route_api from routes.auth import route_auth from routes.admin import route_admin app = Flask( __name__, template_folder="templates", static_folder="static", ) # Load configuration app.config['SECRET_KEY'] = config.SECRET_KEY app.config['SQLALCHEMY_DATABASE_URI'] = config.SQLALCHEMY_DATABASE_URI app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = config.SQLALCHEMY_TRACK_MODIFICATIONS app.config['SQLALCHEMY_ECHO'] = config.SQLALCHEMY_ECHO # File upload configuration app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16 MB max file size app.config['UPLOAD_FOLDER'] = 'static/img' app.config['ALLOWED_EXTENSIONS'] = {'png', 'jpg', 'jpeg', 'gif', 'webp'} # Initialize extensions db.init_app(app) bcrypt.init_app(app) # Initialize Flask-Login login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = 'auth.login' login_manager.login_message = 'Per accedere a questa pagina devi effettuare il login.' login_manager.login_message_category = 'warning' @login_manager.user_loader def load_user(user_id): """Load user for Flask-Login""" return User.query.get(int(user_id)) # favicon.ico, sitemap.xml and robots.txt @app.route('/favicon.ico') def favicon(): return send_from_directory(app.static_folder, 'favicon.ico') @app.route('/sitemap.xml') def sitemap(): return send_from_directory(app.static_folder, 'sitemap.xml') @app.route('/robots.txt') def robots(): return send_from_directory(app.static_folder, 'robots.txt') # BluePrint Routes app.register_blueprint(route_home) app.register_blueprint(route_api) app.register_blueprint(route_auth) app.register_blueprint(route_admin) if __name__ == '__main__': app.run(debug=config.DEBUG, host=config.APP_HOST, port=config.APP_PORT)