def create_app(config_name): app = Flask(__name__) app.config.from_object(config[config_name]) config[config_name].init_app(app) mail.init_app(app) moment.init_app(app) datepicker(app) configure_uploads(app, uploads) db.init_app(app) migrate.init_app(app, db) images.init_app(app) login_manager.init_app(app) csrf.init_app(app) socket_io.init_app(app) from .main import main as main_blueprint app.register_blueprint(main_blueprint) from .auth import auth as auth_blueprint app.register_blueprint(auth_blueprint, url_prefix='/auth') from .blog import blog as blog_blueprint app.register_blueprint(blog_blueprint, url_prefix='/blog') from .socket import socket as socket_blueprint app.register_blueprint(socket_blueprint, url_prefix='/socket') return app
def create_app(): app = Flask(__name__,\ static_folder="static/",\ template_folder="templates/",\ static_url_path="/static") set_config(app) # set up extensions cache.init_app(app) db.init_app(app) datepicker(app) mail.init_app(app) # blueprints app.register_blueprint(auth) app.register_blueprint(admin_blueprint) app.register_blueprint(charts_blueprint) app.register_blueprint(webapi) app.register_blueprint(monitor_blueprint) # login_manager login_manager = LoginManager() login_manager.login_view = 'charts.now' login_manager.init_app(app) from .models import User @login_manager.user_loader def load_user(user_id): # since the user_id is just the primary key of our user table, use it in the query for the user return User.query.get(int(user_id)) # form csrf csrf.init_app(app) # Scss assets = Environment(app) assets.versions = 'timestamp' assets.url_expire = True assets.manifest = 'file:/tmp/manifest.to-be-deployed' # explict filename assets.cache = False assets.auto_build = True assets.url = app.static_url_path scss = Bundle('scss/__main__.scss', filters='pyscss', output='css/main.css', depends=['scss/*.scss']) assets.register('scss_all', scss) assets.debug = False app.config['ASSETS_DEBUG'] = False with app.app_context(): init_db_admin_config() toolbar = DebugToolbarExtension(app) return (app)
def create_app(config={}): ''' Create the flask app and setup extensions and blueprints. Returns ------- app: Flask app app with settings and blueprints loadeds. ''' app = Flask(__name__, static_folder=absolute_path('static'), template_folder=absolute_path('templates')) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config[ 'SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{absolute_path(DATABASE_FILE)}?check_same_thread=False' app.config['DB_NAME'] = DATABASE_FILE # Autoreload if templates change app.config['TEMPLATES_AUTO_RELOAD'] = True # flask_upload settings # app.config['MAX_CONTENT_LENGTH'] = 500 * 1024 * 1024 # Remove Upload limit. FIX ISSUE app.config['UPLOADED_FILES_DEST'] = absolute_path('static/multimedia') app.config['UPLOADED_FILES_ALLOW'] = reduce(lambda sum, group: sum + group, SUPPORTED_MEDIA_FILES) app.config['SECRET_KEY'] = os.urandom(24) app.config.update(config) # Initiating extensions before registering blueprints Moment(app) QRcode(app) configure_uploads(app, files) login_manager.init_app(app) db.init_app(app) migrate.init_app(app, db=db) datepicker( app, local=['static/css/jquery-ui.min.css', 'static/jquery-ui.min.js']) colorpicker(app, local=['static/css/spectrum.css', 'static/spectrum.min.js']) fontpicker(app, local=[ 'static/jquery-ui.min.js', 'static/css/jquery-ui.min.css', 'static/webfont.min.js', 'static/webfont.select.min.js', 'static/css/webfont.select.css' ]) minify(app, js=True, cssless=True, caching_limit=3, fail_safe=True, bypass=['.min.*']) gTTs.init_app(app) gtranslator.init_app(app) # Register blueprints app.register_blueprint(administrate) app.register_blueprint(core) app.register_blueprint(cust_app) app.register_blueprint(manage_app) app.jinja_env.add_extension('jinja2.ext.loopcontrols') return app
def create_app(): app = Flask(__name__, static_folder=r_path('static'), template_folder=r_path('templates')) if getattr(sys, 'frozen', False): basedir = os.path.dirname(sys.executable) else: basedir = os.path.abspath(os.path.dirname(__file__)) # bootstrap = Bootstrap(app) pagedown = PageDown(app) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + r_path( 'data.sqlite') # Autoreload if templates change app.config['TEMPLATES_AUTO_RELOAD'] = True # flask_upload settings # app.config['MAX_CONTENT_LENGTH'] = 500 * 1024 * 1024 # Remove Upload limit. FIX ISSUE app.config['UPLOADED_FILES_DEST'] = r_path('static/multimedia') app.config['UPLOADED_FILES_ALLOW'] = mdal app.config['SECRET_KEY'] = os.urandom(24) # Intiating extensions before registering blueprints moment = Moment(app) qrc = QRcode(app) configure_uploads(app, files) login_manager.init_app(app) db.init_app(app) datepicker( app, local=['static/css/jquery-ui.min.css', 'static/jquery-ui.min.js']) colorpicker(app, local=['static/css/spectrum.css', 'static/spectrum.js']) fontpicker(app, local=[ 'static/jquery-ui.min.js', 'static/css/jquery-ui.min.css', 'static/webfont.js', 'static/webfont.select.js', 'static/css/webfont.select.css' ]) lessc(app) minify(app, js=True, cache=True, fail_safe=True, bypass=['/touch/<int:a>', '/serial/<int:t_id>', '/display']) gtts(app=app, route=True) gtranslator.init_app(app) # Register blueprints app.register_blueprint(administrate) app.register_blueprint(core) app.register_blueprint(cust_app) app.register_blueprint(errorsh_app) app.register_blueprint(manage_app) app.jinja_env.add_extension('jinja2.ext.loopcontrols') return app
def test_loader_local_links(client): temps = [ 'static/' + l for l in [toMimic('.css', True), toMimic('.js', True)] ] resp = datepicker(app, local=temps).loader() for t in temps: assert t in resp
def register_extensions(app): """ It register all extensions :param app: Flask Application Object :return: None """ global debug_toolbar if app.debug: try: from flask_debugtoolbar import DebugToolbarExtension debug_toolbar = DebugToolbarExtension(app) except ImportError: pass # adding bootstrap and date picker Bootstrap(app) datepicker(app)
def create_app(config_name): app = Flask(__name__) # SSLify(app) app.config.from_object(config[config_name]) config[config_name].init_app(app) babel = Babel(app) Bootstrap(app) datepicker(app) moment.init_app(app) main.init_app(app) services.init_app(app) models.init_app(app) apis.init_app(app) @babel.localeselector def get_locale(): # if the user has set up the language manually it will be stored in the session, # so we use the locale from the user settings try: language = session['language'] except KeyError: language = None if language is not None: return language return request.accept_languages.best_match(app.config['LANGUAGES']) @app.route('/language/<language>') def set_language(language=None): session['language'] = language redirect_url = next( iter( parse_qs( request.query_string.decode("utf-8")).get("redirect_url") or []), '/') return redirect(redirect_url) return app
def test_datepicker_false_input(client): try: datepicker(app=None) except Exception as e: assert type(e) == AttributeError try: datepicker(app=app, local=['200', '200', '200']).loader() except Exception as e: assert type(e) == TypeError try: datepicker(app=app).loader(theme='200') except Exception as e: assert type(e) == TypeError try: datepicker(app=app).picker(id=200) except Exception as e: assert type(e) == TypeError
import os from flask import Flask, render_template, request, redirect, url_for, g import sqlite3 import time, datetime from datetime import date from flask_datepicker import datepicker app = Flask(__name__) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False file_path = os.path.abspath(os.getcwd())+"/database.db" app.config['SECRET_KEY'] = 'Thisissupposedtobesecret!' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+file_path bootstrap = Bootstrap(app) datepicker(app) db = SQLAlchemy(app) login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = 'login' def dateDiffInSeconds(date1, date2): timedelta = date2 - date1 return timedelta.days * 24 * 3600 + timedelta.seconds def daysHoursMinutesSecondsFromSeconds(seconds): minutes, seconds = divmod(seconds, 60) hours, minutes = divmod(minutes, 60) days, hours = divmod(hours, 24) return (days, hours, minutes, seconds)
def test_loader_local_links_win_false(client): try: datepicker(app, local=['200', '200']).loader() except Exception as e: assert type(e) == globals().get('FileNotFoundError', IOError)
def test_loader_local_links(client): local_links = [mock_static('css'), mock_static('js')] html = datepicker(app, local=local_links).loader() for link in local_links: assert link in html
def test_loader_local_links_win_false(client): try: datepicker(app, local=['200', '200'], testing=True).loader() except Exception as e: assert type(e) == FileNotFoundError
def toMimic(data, static=False): for d in dirs: if not path.isdir(d): mkdir(d) while True: tFile = str(randint(1, 9999999)) + (data if static else '.html') if not path.isfile(tFile): break with open(path.join(dirs[1] if static else dirs[0], tFile), 'w+') as file: file.write(data) return tFile app = Flask(__name__) eng = datepicker(app, local=[]) @app.route('/loader') def loader(): return render_template(toMimic("{{ datepicker.loader() }}")) @app.route('/picker') def picker(): return render_template(toMimic("{{ datepicker.picker() }}")) @app.route('/minmax/<min>/<max>') def minMax(min, max): return render_template(
from flask import Flask from os import getenv from flask_bootstrap import Bootstrap from flask_datepicker import datepicker app = Flask(__name__) app.secret_key = getenv("SECRET_KEY") bootstrap = Bootstrap(app) datepicker(app=app, local=['static/js/jquery-ui.js', 'static/styles/jquery-ui.css']) import routes.main import routes.game import routes.form