예제 #1
0
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
예제 #2
0
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)
예제 #3
0
파일: main.py 프로젝트: KsAmJ/FQM
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
예제 #4
0
파일: __init__.py 프로젝트: yassin121/FQM
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
예제 #5
0
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)
예제 #7
0
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
예제 #8
0
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
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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
예제 #12
0
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
예제 #13
0
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(
예제 #14
0
파일: app.py 프로젝트: vmarttil/larp-ilmo
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