Esempio n. 1
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app  # To make it work without an app context
    RQ(app)  # Pick up RQ configuration from the app
    baseframe.init_app(app, requires=['baseframe', 'jquery.cookie', 'timezone', 'lastuser-oauth'])

    lastuser_oauth.mailclient.mail.init_app(app)
    lastuser_oauth.views.login.oid.init_app(app)

    # Register some login providers
    if app.config.get('OAUTH_TWITTER_KEY') and app.config.get('OAUTH_TWITTER_SECRET'):
        login_registry['twitter'] = providers.TwitterProvider('twitter', 'Twitter',
            at_login=True, priority=True,
            key=app.config['OAUTH_TWITTER_KEY'],
            secret=app.config['OAUTH_TWITTER_SECRET'],
            access_key=app.config.get('OAUTH_TWITTER_ACCESS_KEY'),
            access_secret=app.config.get('OAUTH_TWITTER_ACCESS_SECRET'))
    login_registry['google'] = providers.GoogleProvider('google', 'Google',
        at_login=True, priority=True)
    if app.config.get('OAUTH_GITHUB_KEY') and app.config.get('OAUTH_GITHUB_SECRET'):
        login_registry['github'] = providers.GitHubProvider('github', 'GitHub',
            at_login=True, priority=False,
            key=app.config['OAUTH_GITHUB_KEY'],
            secret=app.config['OAUTH_GITHUB_SECRET'])
    login_registry['openid'] = providers.OpenIdProvider('openid', 'OpenID',
        at_login=True, priority=False)
Esempio n. 2
0
def init_for(env):
    coaster.app.init_app(app, env)
    RQ(app)
    if app.config.get('SERVER_NAME'):
        subdomain = app.config.get('STATIC_SUBDOMAIN', 'static')
    else:
        subdomain = None
    app.add_url_rule('/static/<path:filename>', endpoint='static',
        view_func=app.send_static_file, subdomain=subdomain)
    baseframe.init_app(app, requires=['hasjob'],
        ext_requires=[('jquery.textarea-expander', 'jquery.tinymce', 'jquery.form', 'jquery.cookie',
        'select2', 'jquery.sparkline','jquery.nouislider'), 'firasans', 'baseframe-networkbar'])
    app.assets.register('js_tinymce', assets.require('tiny_mce.js>=3.5.0,<4.0.0'))
    if subdomain:
        # The /_baseframe path has to be under the current domain because TinyMCE
        # doesn't like loading from a subdomain, but we also need access to /_baseframe
        # in the static subdomain for other assets (potentially obsoleted by ext_requires)
        app.add_url_rule(baseframe.static_url_path + '/<path:filename>',
            view_func=baseframe.send_static_file,
            endpoint='baseframe_static', subdomain=subdomain)

    from hasjob.uploads import configure as uploads_configure
    from hasjob.search import configure as search_configure
    uploads_configure()
    search_configure()
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
Esempio n. 3
0
def init_for(env):
    coaster.app.init_app(app, env)
    RQ(app)

    baseframe.init_app(app,
                       requires=['hasjob'],
                       ext_requires=[
                           'baseframe-bs3',
                           ('jquery.textarea-expander', 'jquery.cookie',
                            'jquery.sparkline', 'jquery.nouislider'),
                           ('firasans', 'baseframe-firasans'),
                           'fontawesome>=4.0.0'
                       ])
    # TinyMCE has to be loaded by itself, unminified, or it won't be able to find its assets
    app.assets.register(
        'js_tinymce',
        assets.require('!jquery.js', 'tinymce.js>=4.0.0',
                       'jquery.tinymce.js>=4.0.0'))
    app.assets.register(
        'css_editor',
        Bundle('css/editor.css',
               filters=['cssrewrite', 'cssmin'],
               output='css/editor.packed.css'))

    from hasjob.uploads import configure as uploads_configure
    from hasjob.search import configure as search_configure
    uploads_configure()
    search_configure()
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
Esempio n. 4
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    baseframe.init_app(
        app,
        requires=["jquery.form", "showdown", "codemirror-markdown", "pygments", "toastr", "baseframe-bs3", "funnel"],
    )
    app.assets.register(
        "js_fullcalendar",
        Bundle(
            assets.require("!jquery.js", "jquery.fullcalendar.js", "spectrum.js"),
            output="js/fullcalendar.packed.js",
            filters="closure_js",
        ),
    )
    app.assets.register(
        "css_fullcalendar",
        Bundle(
            assets.require("jquery.fullcalendar.css", "spectrum.css", "schedules.css"),
            output="css/fullcalendar.packed.css",
            filters="cssmin",
        ),
    )
    app.assets.register(
        "js_schedules", Bundle(assets.require("schedules.js"), output="js/schedules.packed.js", filters="closure_js")
    )
    app.assets.register(
        "css_screens", Bundle(assets.require("screens.css"), output="css/screens.packed.css", filters="cssmin")
    )
Esempio n. 5
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app

    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User, models.Team))
    baseframe.init_app(app,
                       requires=['funnel'],
                       ext_requires=[('codemirror-markdown', 'pygments'),
                                     'toastr', 'baseframe-bs3',
                                     'fontawesome>=4.0.0'])
    app.assets.register(
        'js_fullcalendar',
        Bundle(assets.require('!jquery.js', 'jquery.fullcalendar.js',
                              'spectrum.js'),
               output='js/fullcalendar.packed.js',
               filters='uglipyjs'))
    app.assets.register(
        'css_fullcalendar',
        Bundle(assets.require('jquery.fullcalendar.css', 'spectrum.css',
                              'schedules.css'),
               output='css/fullcalendar.packed.css',
               filters='cssmin'))
    app.assets.register(
        'js_schedules',
        Bundle(assets.require('schedules.js'),
               output='js/schedules.packed.js',
               filters='uglipyjs'))
    app.assets.register(
        'css_screens',
        Bundle(assets.require('screens.css'),
               output='css/screens.packed.css',
               filters='cssmin'))
Esempio n. 6
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app
    baseframe.init_app(app, requires=['baseframe-bs3', 'hgapp'])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
Esempio n. 7
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app
    baseframe.init_app(app, requires=["baseframe-bs3", "hgapp"])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
Esempio n. 8
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app

    RQ(app)

    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, User))
    app.config['tz'] = timezone(app.config['TIMEZONE'])
    baseframe.init_app(app, requires=['boxoffice'], ext_requires=['baseframe-bs3', 'fontawesome>=4.0.0', 'ractive', 'ractive-transitions-fly', 'validate', 'nprogress', 'baseframe-footable'])

    mail.init_app(app)
    wtforms_json.init()

    # This is a temporary solution for an admin interface, only
    # to be used until the native admin interface is ready.
    try:
        admin = Admin(app, name=u"Boxoffice Admin", template_mode='bootstrap3', url='/siteadmin')
        admin.add_view(OrganizationModelView(Organization, db.session))
        admin.add_view(ItemCollectionModelView(ItemCollection, db.session))
        admin.add_view(CategoryModelView(Category, db.session))
        admin.add_view(ItemModelView(Item, db.session))
        admin.add_view(PriceModelView(Price, db.session))
        admin.add_view(DiscountPolicyModelView(DiscountPolicy, db.session))
        admin.add_view(DiscountCouponModelView(DiscountCoupon, db.session))
    except AssertionError:
        pass
Esempio n. 9
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app  # To make it work without an app context
    RQ(app)  # Pick up RQ configuration from the app
    baseframe.init_app(app, requires=['lastuser-oauth'],
        ext_requires=['baseframe-bs3', 'fontawesome>=4.0.0', 'jquery.cookie', 'timezone'])

    lastuser_oauth.mailclient.mail.init_app(app)
    lastuser_oauth.views.login.oid.init_app(app)

    # Register some login providers
    if app.config.get('OAUTH_TWITTER_KEY') and app.config.get('OAUTH_TWITTER_SECRET'):
        login_registry['twitter'] = providers.TwitterProvider('twitter', 'Twitter',
            at_login=True, priority=True,
            key=app.config['OAUTH_TWITTER_KEY'],
            secret=app.config['OAUTH_TWITTER_SECRET'],
            access_key=app.config.get('OAUTH_TWITTER_ACCESS_KEY'),
            access_secret=app.config.get('OAUTH_TWITTER_ACCESS_SECRET'))
    login_registry['google'] = providers.GoogleProvider('google', 'Google',
        at_login=True, priority=True)
    if app.config.get('OAUTH_LINKEDIN_KEY') and app.config.get('OAUTH_LINKEDIN_SECRET'):
        login_registry['linkedin'] = providers.LinkedInProvider('linkedin', 'LinkedIn',
            at_login=True, priority=False,
            key=app.config['OAUTH_LINKEDIN_KEY'],
            secret=app.config['OAUTH_LINKEDIN_SECRET'])
    if app.config.get('OAUTH_GITHUB_KEY') and app.config.get('OAUTH_GITHUB_SECRET'):
        login_registry['github'] = providers.GitHubProvider('github', 'GitHub',
            at_login=True, priority=False,
            key=app.config['OAUTH_GITHUB_KEY'],
            secret=app.config['OAUTH_GITHUB_SECRET'])
    login_registry['openid'] = providers.OpenIdProvider('openid', 'OpenID',
        at_login=True, priority=False)
Esempio n. 10
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app

    app.geoip = None
    if 'GEOIP_PATH' in app.config:
        geoip_database_path = os.path.join(app.config['GEOIP_PATH'], 'GeoLite2-City.mmdb')
        if not os.path.exists(geoip_database_path):
            app.logger.warn("GeoIP database missing at " + geoip_database_path)
        else:
            app.geoip = geoip2.database.Reader(geoip_database_path)

    RQ(app)

    baseframe.init_app(app, requires=['hasjob'],
        ext_requires=['baseframe-bs3',
            ('jquery.autosize', 'jquery.sparkline', 'jquery.liblink', 'jquery.wnumb', 'jquery.nouislider'),
            'firasans>=4.2.0', 'baseframe-firasans', 'fontawesome>=4.3.0', 'bootstrap-multiselect', 'nprogress', 'ractive', 'jquery.appear', 'hammer'],
        enable_csrf=True)
    # TinyMCE has to be loaded by itself, unminified, or it won't be able to find its assets
    app.assets.register('js_tinymce', assets.require('!jquery.js', 'tinymce.js>=4.0.0', 'jquery.tinymce.js>=4.0.0'))
    app.assets.register('css_editor', Bundle('css/editor.css',
        filters=['cssrewrite', 'cssmin'], output='css/editor.packed.css'))

    from hasjob.uploads import configure as uploads_configure
    uploads_configure()
    mail.init_app(app)
    redis_store.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
Esempio n. 11
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app
    baseframe.init_app(app, requires=['baseframe', 'jquery.ui', 'toastr', 'indicators', 'peopleflow', 'cooldown'])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    nav.init_app(app)
Esempio n. 12
0
def init_for(env):
    coaster.app.init_app(app, env)
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    baseframe.init_app(app, requires=[
        'jquery', 'jquery.form', 'jquery.oembed', 'showdown', 'baseframe-networkbar', 'funnel'
        ])
Esempio n. 13
0
def init_for(env):
    coaster.app.init_app(app, env)
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    baseframe.init_app(app, requires=[
        'jquery.form', 'jquery.oembed', 'showdown', 'codemirror-markdown', 'baseframe-bs3', 'funnel',
        ])
Esempio n. 14
0
 def setUp(self):
     baseframe.init_app(self.app, requires=['baseframe'])
     db.init_app(self.app)
     self.ctx = self.app.test_request_context()
     self.ctx.push()
     db.create_all()
     self.session = db.session
     self.form = ContainerForm(model=Container, meta={'csrf': False})
Esempio n. 15
0
def init_for(env):
    coaster.app.init_app(app, env)
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(models.db, models.User))
    baseframe.init_app(
        app, requires=["jquery", "jquery.form", "jquery.oembed", "showdown", "baseframe-networkbar", "funnel"]
    )
Esempio n. 16
0
def init_for(env):
    coaster.app.init_app(app, env)
    baseframe.init_app(app, requires=['baseframe', 'toastr', 'swfobject', 'select2', 'froogaloop', 'hgtv'],
        bundle_js=Bundle(assets.require('presentz.js'), filters='jsmin', output='js/presentz.min.js'))
    models.commentease.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    app.config['tz'] = timezone(app.config['TIMEZONE'])
    uploads.configure(app)
Esempio n. 17
0
def init_for(env):
    coaster.app.init_app(app, env)
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    baseframe.init_app(app,
                       requires=[
                           'jquery', 'jquery.form', 'jquery.oembed',
                           'showdown', 'baseframe-networkbar', 'funnel'
                       ])
Esempio n. 18
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app
    RQ(app)  # Pick up RQ configuration from the app
    baseframe.init_app(app, requires=['hasmail'],
        ext_requires=['bootstrap3-editable', 'codemirror-markdown', 'codemirror-css', 'fontawesome', 'baseframe-bs3'])
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
Esempio n. 19
0
def init_for(env):
    coaster.app.init_app(app, env)
    baseframe.init_app(app,
                       requires=['baseframe', 'toastr', 'hacknight'],
                       bundle_js=assets.require('leaflet.js'),
                       bundle_css=assets.require('leaflet.css'))
    lastuser.init_app(app)
    lastuser.init_usermanager(
        UserManager(hacknight.models.db, hacknight.models.User))
    mail.init_app(app)
    app.config['tz'] = timezone(app.config['TIMEZONE'])
Esempio n. 20
0
def init_for(env):
    coaster.app.init_app(app, env)

    baseframe.init_app(app, requires=['baseframe'])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(models.db, models.User))
    app.assets.register('js_networkbar',
        Bundle(assets.require('baseframe-networkbar.js'),
            filters='closure_js', output='js/baseframe-networkbar.js'))
    app.assets.register('css_networkbar',
        Bundle(assets.require('baseframe-networkbar.css'),
            filters='cssmin', output='css/baseframe-networkbar.css'))
Esempio n. 21
0
def init_for(env):
    coaster.app.init_app(app, env)
    baseframe.init_app(
        app,
        requires=["baseframe", "toastr", "hacknight"],
        bundle_js=assets.require("leaflet.js"),
        bundle_css=assets.require("leaflet.css"),
    )
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(hacknight.models.db, hacknight.models.User))
    mail.init_app(app)
    app.config["tz"] = timezone(app.config["TIMEZONE"])
Esempio n. 22
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app
    baseframe.init_app(app,
                       requires=[
                           'baseframe', 'jquery.ui', 'toastr', 'indicators',
                           'peopleflow', 'cooldown'
                       ])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    nav.init_app(app)
Esempio n. 23
0
def init_for(env):
    coaster.app.init_app(app, env)
    baseframe.init_app(app, requires=['jquery.textarea-expander', 
        'jquery.tinymce', 'jquery.form', 'jquery.cookie', 'select2', 'jquery.sparkline', 'baseframe-networkbar', 'hasjob'
        ])
    app.assets.register('js_tinymce', assets.require('tiny_mce.js>=3.5.0,<4.0.0'))
    from hasjob.search import configure as search_configure
    from hasjob.uploads import configure as uploads_configure
    search_configure()
    uploads_configure()
    mail.init_app(app)
    lastuser.init_app(app)
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app

    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, User))
    app.config['tz'] = timezone(app.config['TIMEZONE'])

    baseframe.init_app(app, requires=['boxoffice'], ext_requires=['baseframe-bs3', 'fontawesome>=4.0.0', 'ractive', 'ractive-transitions-fly', 'validate'])

    mail.init_app(app)
    wtforms_json.init()
Esempio n. 25
0
def init_for(env):
    coaster.app.init_app(app, env)
    baseframe.init_app(app, requires=["baseframe", "picturefill", "imgee"])
    app.error_handlers[403] = error403
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    if app.config.get("MEDIA_DOMAIN") and (
        app.config["MEDIA_DOMAIN"].startswith("http:") or app.config["MEDIA_DOMAIN"].startswith("https:")
    ):
        app.config["MEDIA_DOMAIN"] = app.config["MEDIA_DOMAIN"].split(":", 1)[1]
    mkdir_p(app.config["UPLOADED_FILES_DEST"])
    celery.conf.add_defaults(app.config)
    registry.set_connection()
    app.register_blueprint(api, url_prefix="/api/1")
Esempio n. 26
0
def init_for(env):
    coaster.app.init_app(app, env)

    baseframe.init_app(app, requires=['baseframe'])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(models.db, models.User))
    app.assets.register('js_networkbar',
        Bundle(assets.require('baseframe-networkbar.js'),
            filters='closure_js', output='js/baseframe-networkbar.js'))
    app.assets.register('css_networkbar',
        Bundle(assets.require('baseframe-networkbar.css'),
            filters='cssmin', output='css/baseframe-networkbar.css'))

    RQDashboard(app, url_prefix='/rq', auth_handler=partial(lastuser.has_permission, 'siteadmin'))
Esempio n. 27
0
def init_for(env):
    if app.config['PROFILE']:
        app.wsgi_app = ProfilerMiddleware(app.wsgi_app, restrictions=[30])

    if app.debug:
        # Turn off Werkzeug debug in console
        logging.getLogger('werkzeug').setLevel(logging.ERROR)
        # Enable our own logging for signals!
        logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app
    baseframe.init_app(app, requires=['bootstrap', 'jquery', 'myapp'])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    Bootstrap(app)
Esempio n. 28
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app

    RQ(app)

    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, User))
    app.config['tz'] = timezone(app.config['TIMEZONE'])
    baseframe.init_app(app, requires=['outreach'], ext_requires=['baseframe-bs3', 'fontawesome>=4.0.0', 'ractive', 'ractive-transitions-fly', 'validate', 'nprogress', 'baseframe-footable'])

    mail.init_app(app)
    wtforms_json.init()

    init_flask_admin()
Esempio n. 29
0
def init_for(env):
    if app.config['PROFILE']:
        app.wsgi_app = ProfilerMiddleware(app.wsgi_app, restrictions=[30])

    if app.debug:
        # Turn off Werkzeug debug in console
        logging.getLogger('werkzeug').setLevel(logging.ERROR)
        # Enable our own logging for signals!
        logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app
    baseframe.init_app(app, requires=['bootstrap', 'jquery', 'myapp'])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    Bootstrap(app)
Esempio n. 30
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    baseframe.init_app(app,
                       requires=[
                           'jquery.form',
                           'jquery.oembed',
                           'showdown',
                           'codemirror-markdown',
                           'pygments',
                           'baseframe-bs3',
                           'funnel',
                       ])
Esempio n. 31
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app

    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, User))
    app.config['tz'] = timezone(app.config['TIMEZONE'])

    baseframe.init_app(app,
                       requires=['boxoffice'],
                       ext_requires=[
                           'baseframe-bs3', 'fontawesome>=4.0.0', 'ractive',
                           'ractive-transitions-fly', 'validate'
                       ])

    mail.init_app(app)
    wtforms_json.init()
Esempio n. 32
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app

    app.geoip = None
    if 'GEOIP_PATH' in app.config:
        geoip_database_path = os.path.join(app.config['GEOIP_PATH'],
                                           'GeoLite2-City.mmdb')
        if not os.path.exists(geoip_database_path):
            app.logger.warn("GeoIP database missing at " + geoip_database_path)
        else:
            app.geoip = geoip2.database.Reader(geoip_database_path)

    RQ(app)

    baseframe.init_app(app,
                       requires=['hasjob'],
                       ext_requires=[
                           'baseframe-bs3',
                           ('jquery.autosize', 'jquery.sparkline',
                            'jquery.liblink', 'jquery.wnumb',
                            'jquery.nouislider'), 'baseframe-firasans',
                           'fontawesome>=4.3.0', 'bootstrap-multiselect',
                           'nprogress', 'ractive', 'jquery.appear', 'hammer'
                       ],
                       enable_csrf=True)
    # TinyMCE has to be loaded by itself, unminified, or it won't be able to find its assets
    app.assets.register(
        'js_tinymce',
        assets.require('!jquery.js', 'tinymce.js>=4.0.0',
                       'jquery.tinymce.js>=4.0.0'))
    app.assets.register(
        'css_editor',
        Bundle('css/editor.css',
               filters=['cssrewrite', 'cssmin'],
               output='css/editor.packed.css'))

    from hasjob.uploads import configure as uploads_configure
    uploads_configure()
    mail.init_app(app)
    redis_store.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
Esempio n. 33
0
def init_for(env):
    coaster.app.init_app(app, env)
    RQ(app)
    if app.config.get('SERVER_NAME'):
        subdomain = app.config.get('STATIC_SUBDOMAIN', 'static')
    else:
        subdomain = None
    app.add_url_rule('/static/<path:filename>', endpoint='static',
        view_func=app.send_static_file, subdomain=subdomain)
    baseframe.init_app(app, requires=['jquery.textarea-expander',
        'jquery.tinymce', 'jquery.form', 'jquery.cookie', 'select2', 'jquery.sparkline', 'baseframe-networkbar', 'hasjob'
        ])
    app.assets.register('js_tinymce', assets.require('tiny_mce.js>=3.5.0,<4.0.0'))
    from hasjob.uploads import configure as uploads_configure
    from hasjob.search import configure as search_configure
    uploads_configure()
    search_configure()
    mail.init_app(app)
    lastuser.init_app(app)
Esempio n. 34
0
def init_for(env, createdb=False):
    coaster.app.init_app(app, env)
    # This is required before baseframe init:
    if createdb:
        models.db.create_all()

    baseframe.init_app(app, requires=['baseframe'])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(models.db, models.User))
    app.assets.register('js_networkbar',
        Bundle(assets.require('baseframe-networkbar.js'),
            filters='closure_js', output='js/baseframe-networkbar.js'))
    app.assets.register('css_networkbar',
        Bundle(assets.require('baseframe-networkbar.css'),
            filters='cssmin', output='css/baseframe-networkbar.css'))

    views.admin.init_admin(admin)

    with app.test_request_context():
        views.networkbar.cache_networkbar_links()
Esempio n. 35
0
def init_for(env):
    coaster.app.init_app(app, env)
    RQ(app)

    baseframe.init_app(app, requires=['hasjob'],
        ext_requires=['baseframe-bs3',
            ('jquery.textarea-expander', 'jquery.cookie', 'jquery.sparkline','jquery.nouislider', 'jquery.tinymce>=4.0.0'),
            ('firasans', 'baseframe-firasans'),
            'fontawesome>=4.0.0'])
    app.assets.register('js_tinymce', assets.require('tinymce.js>=4.0.0'))
    app.assets.register('css_editor', Bundle('css/editor.css',
        filters=['cssrewrite', 'cssmin'], output='css/editor.packed.css'))

    from hasjob.uploads import configure as uploads_configure
    from hasjob.search import configure as search_configure
    uploads_configure()
    search_configure()
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
Esempio n. 36
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app  # To make it work without an app context
    RQ(app)  # Pick up RQ configuration from the app
    baseframe.init_app(app, requires=['lastuser-oauth'],
        ext_requires=['baseframe-bs3', 'fontawesome>=4.0.0', 'jquery.cookie', 'timezone'],
        enable_csrf=True)

    lastuser_oauth.lastuser_oauth.init_app(app)
    lastuser_oauth.mailclient.mail.init_app(app)
    lastuser_oauth.views.login.oid.init_app(app)

    # Register some login providers
    if app.config.get('OAUTH_TWITTER_KEY') and app.config.get('OAUTH_TWITTER_SECRET'):
        login_registry['twitter'] = providers.TwitterProvider('twitter', 'Twitter',
            at_login=True, priority=True, icon='twitter',
            key=app.config['OAUTH_TWITTER_KEY'],
            secret=app.config['OAUTH_TWITTER_SECRET'],
            access_key=app.config.get('OAUTH_TWITTER_ACCESS_KEY'),
            access_secret=app.config.get('OAUTH_TWITTER_ACCESS_SECRET'))
    if app.config.get('OAUTH_GOOGLE_KEY') and app.config.get('OAUTH_GOOGLE_SECRET'):
        login_registry['google'] = providers.GoogleProvider('google', 'Google',
            client_id=app.config['OAUTH_GOOGLE_KEY'],
            secret=app.config['OAUTH_GOOGLE_SECRET'],
            scope=app.config.get('OAUTH_GOOGLE_SCOPE', ['email', 'profile']),
            at_login=True, priority=True, icon='google')
    if app.config.get('OAUTH_LINKEDIN_KEY') and app.config.get('OAUTH_LINKEDIN_SECRET'):
        login_registry['linkedin'] = providers.LinkedInProvider('linkedin', 'LinkedIn',
            at_login=True, priority=False, icon='linkedin',
            key=app.config['OAUTH_LINKEDIN_KEY'],
            secret=app.config['OAUTH_LINKEDIN_SECRET'])
    if app.config.get('OAUTH_GITHUB_KEY') and app.config.get('OAUTH_GITHUB_SECRET'):
        login_registry['github'] = providers.GitHubProvider('github', 'GitHub',
            at_login=True, priority=False, icon='github',
            key=app.config['OAUTH_GITHUB_KEY'],
            secret=app.config['OAUTH_GITHUB_SECRET'])
    login_registry['openid'] = providers.OpenIdProvider('openid', 'OpenID',
        at_login=True, priority=False, icon='openid')
Esempio n. 37
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app
    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
    baseframe.init_app(app, requires=[
        'jquery.form', 'jquery.oembed', 'showdown', 'codemirror-markdown', 'pygments', 'toastr', 'baseframe-bs3', 'funnel',
        ])
    app.assets.register('js_fullcalendar',
        Bundle(assets.require('!jquery.js', 'jquery.fullcalendar.js', 'spectrum.js'),
            output='js/fullcalendar.packed.js', filters='closure_js'))
    app.assets.register('css_fullcalendar',
        Bundle(assets.require('jquery.fullcalendar.css', 'spectrum.css', 'schedules.css'),
            output='css/fullcalendar.packed.css', filters='cssmin'))
    app.assets.register('js_schedules',
        Bundle(assets.require('schedules.js'),
            output='js/schedules.packed.js', filters='closure_js'))
    app.assets.register('css_screens',
        Bundle(assets.require('screens.css'),
            output='css/screens.packed.css', filters='cssmin'))
Esempio n. 38
0
def init_for(env):
    coaster.app.init_app(app, env)
    db.init_app(app)
    db.app = app

    mail.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User, models.Team))
    baseframe.init_app(app, requires=['funnel'], ext_requires=[
        ('codemirror-markdown', 'pygments'), 'toastr', 'baseframe-bs3', 'fontawesome>=4.0.0', 
        'footable'])
    app.assets.register('js_fullcalendar',
        Bundle(assets.require('!jquery.js', 'jquery.fullcalendar.js', 'spectrum.js'),
            output='js/fullcalendar.packed.js', filters='uglipyjs'))
    app.assets.register('css_fullcalendar',
        Bundle(assets.require('jquery.fullcalendar.css', 'spectrum.css', 'schedules.css'),
            output='css/fullcalendar.packed.css', filters='cssmin'))
    app.assets.register('js_schedules',
        Bundle(assets.require('schedules.js'),
            output='js/schedules.packed.js', filters='uglipyjs'))
    app.assets.register('css_screens',
        Bundle(assets.require('screens.css'),
            output='css/screens.packed.css', filters='cssmin'))
Esempio n. 39
0
def init_for(env, createdb=False):
    coaster.app.init_app(app, env)
    # This is required before baseframe init:
    if createdb:
        models.db.create_all()

    baseframe.init_app(app, requires=['baseframe'])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(models.db, models.User))
    app.assets.register(
        'js_networkbar',
        Bundle(assets.require('baseframe-networkbar.js'),
               filters='closure_js',
               output='js/baseframe-networkbar.js'))
    app.assets.register(
        'css_networkbar',
        Bundle(assets.require('baseframe-networkbar.css'),
               filters='cssmin',
               output='css/baseframe-networkbar.css'))

    views.admin.init_admin(admin)

    with app.test_request_context():
        views.networkbar.cache_networkbar_links()
Esempio n. 40
0
from __future__ import absolute_import
from flask import Flask
from flask_migrate import Migrate
from baseframe import baseframe, assets, Version
import coaster.app
from ._version import __version__

version = Version(__version__)

# First, make an app

app = Flask(__name__, instance_relative_config=True)

# Second, import the models and views

from . import models, views, extapi  # NOQA
from .models import db

# Third, setup baseframe and assets

assets['campaign.js'][version] = 'js/app.js'
assets['campaign.css'][version] = 'css/app.css'

# Configure the app
coaster.app.init_app(app)
db.init_app(app)
db.app = app
migrate = Migrate(app, db)
baseframe.init_app(app, requires=['baseframe-bs3', 'campaign'])
Esempio n. 41
0
from .models import db, User, Item, Price, DiscountPolicy, DiscountCoupon, ItemCollection, Organization, Category, Invoice  # noqa
from .siteadmin import OrganizationModelView, DiscountCouponModelView, InvoiceModelView  # noqa

# Configure the app
coaster.app.init_app(app)
db.init_app(app)
db.app = app
migrate = Migrate(app, db)
rq.init_app(app)

lastuser.init_app(app)
lastuser.init_usermanager(UserManager(db, User))
app.config['tz'] = timezone(app.config['TIMEZONE'])
baseframe.init_app(app,
                   requires=['boxoffice'],
                   ext_requires=[
                       'baseframe-bs3', 'fontawesome>=4.0.0',
                       'baseframe-footable', 'jquery.tinymce>=4.0.0'
                   ])

mail.init_app(app)
wtforms_json.init()

# This is a temporary solution for an admin interface, only
# to be used until the native admin interface is ready.
try:
    admin = Admin(app,
                  name="Boxoffice Admin",
                  template_mode='bootstrap3',
                  url='/siteadmin')
    admin.add_view(OrganizationModelView(Organization, db.session))
    admin.add_view(DiscountCouponModelView(DiscountCoupon, db.session))
Esempio n. 42
0
from flask_assets import Bundle
from flask_lastuser import Lastuser
from flask_lastuser.sqlalchemy import UserManager
from baseframe import baseframe, assets, Version
import coaster.app
from ._version import __version__

version = Version(__version__)
app = Flask(__name__, instance_relative_config=True)
lastuser = Lastuser()

assets['hgtv.css'][version] = 'css/app.css'
assets['presentz.js'][Version('1.2.2')] = 'js/presentz-1.2.2.js'
assets['froogaloop.js'][Version('2.0.0')] = 'js/froogaloop2.min.js'

from . import models, views, uploads
from .models import db


# Configure the app
coaster.app.init_app(app)
migrate = Migrate(app, db)
baseframe.init_app(app, requires=['baseframe-mui', 'jquery-easytabs', 'toastr', 'swfobject', 'froogaloop', 'hgtv'],
    bundle_js=Bundle(assets.require('presentz.js'), filters='jsmin', output='js/presentz.min.js'),
    theme='mui')
models.commentease.init_app(app)
lastuser.init_app(app)
lastuser.init_usermanager(UserManager(db, models.User))
app.config['tz'] = timezone(app.config['TIMEZONE'])
uploads.configure(app)
Esempio n. 43
0
app.register_blueprint(lastuser_ui.lastuser_ui)

from . import views  # NOQA

assets['lastuser-oauth.js'][version] = lastuser_oauth.lastuser_oauth_js,
assets['lastuser-oauth.css'][version] = lastuser_oauth.lastuser_oauth_css

# Configure the app
coaster.app.init_app(app)
db.init_app(app)
db.app = app  # To make it work without an app context
migrate = Migrate(app, db)
RQ(app)  # Pick up RQ configuration from the app
baseframe.init_app(app,
                   requires=['lastuser-oauth'],
                   ext_requires=[
                       'baseframe-bs3', 'fontawesome>=4.0.0', 'jquery.cookie',
                       'timezone'
                   ])

lastuser_oauth.lastuser_oauth.init_app(app)
lastuser_oauth.mailclient.mail.init_app(app)
lastuser_oauth.views.login.oid.init_app(app)

# Register some login providers
if app.config.get('OAUTH_TWITTER_KEY') and app.config.get(
        'OAUTH_TWITTER_SECRET'):
    login_registry['twitter'] = providers.TwitterProvider(
        'twitter',
        'Twitter',
        at_login=True,
        priority=True,
Esempio n. 44
0
from . import extapi, views  # NOQA
from boxoffice.models import db, User, Item, Price, DiscountPolicy, DiscountCoupon, ItemCollection, Organization, Category, Invoice  # noqa
from siteadmin import OrganizationModelView, DiscountCouponModelView, InvoiceModelView  # noqa


# Configure the app
coaster.app.init_app(app)
db.init_app(app)
db.app = app
migrate = Migrate(app, db)
rq.init_app(app)

lastuser.init_app(app)
lastuser.init_usermanager(UserManager(db, User))
app.config['tz'] = timezone(app.config['TIMEZONE'])
baseframe.init_app(app, requires=['boxoffice'], ext_requires=['baseframe-bs3', 'fontawesome>=4.0.0', 'baseframe-footable', 'jquery.tinymce>=4.0.0'])

mail.init_app(app)
wtforms_json.init()


# This is a temporary solution for an admin interface, only
# to be used until the native admin interface is ready.
try:
    admin = Admin(app, name=u"Boxoffice Admin", template_mode='bootstrap3', url='/siteadmin')
    admin.add_view(OrganizationModelView(Organization, db.session))
    admin.add_view(DiscountCouponModelView(DiscountCoupon, db.session))
    admin.add_view(InvoiceModelView(Invoice, db.session))
except AssertionError:
    pass
Esempio n. 45
0
def init_for(env):
    coaster.app.init_app(app, env)
    baseframe.init_app(app, requires=['baseframe', 'hasweb'])
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(models.db, models.User, models.Team))
    pages.init_app(app)
Esempio n. 46
0
 def setUp(self):
     self.app = Flask(__name__)
     self.app.config['CACHE_TYPE'] = 'simple'
     baseframe.init_app(self.app, requires=['baseframe'])
Esempio n. 47
0
def init_for(env):
    coaster.app.init_app(app, env)
    baseframe.init_app(app, requires=['baseframe', 'commentease', 'hasnew'])
    commentease.init_app(app)
    lastuser.init_app(app)
    lastuser.init_usermanager(UserManager(db, models.User))
Esempio n. 48
0
from . import models, forms, workflows, views  # NOQA
from .models import db

# --- Configuration------------------------------------------------------------

coaster.app.init_app(app)
db.init_app(app)
db.app = app
migrate = Migrate(app, db)
mail.init_app(app)
lastuser.init_app(app)
lastuser.init_usermanager(UserManager(db, models.User, models.Team))
baseframe.init_app(app,
                   requires=['funnel'],
                   ext_requires=[('codemirror-markdown', 'pygments'), 'toastr',
                                 'baseframe-bs3', 'fontawesome>=4.0.0',
                                 'baseframe-footable'])
app.assets.register(
    'js_fullcalendar',
    Bundle(assets.require('!jquery.js', 'jquery.fullcalendar.js',
                          'spectrum.js'),
           output='js/fullcalendar.packed.js',
           filters='uglipyjs'))
app.assets.register(
    'css_fullcalendar',
    Bundle(assets.require('jquery.fullcalendar.css', 'spectrum.css',
                          'schedules.css'),
           output='css/fullcalendar.packed.css',
           filters='cssmin'))
app.assets.register(
Esempio n. 49
0
from flask_lastuser.sqlalchemy import UserManager
from baseframe import baseframe, assets
import coaster.app

# First, make an app

app = Flask(__name__, instance_relative_config=True)
lastuser = Lastuser()

# Second, import the models and views

from . import models, views  # NOQA
from .models import db       # NOQA


# Configure the app
coaster.app.init_app(app)
db.init_app(app)
db.app = app
migrate = Migrate(app, db)

baseframe.init_app(app, requires=['baseframe'])
lastuser.init_app(app)
lastuser.init_usermanager(UserManager(models.db, models.User))
app.assets.register('js_networkbar',
    Bundle(assets.require('baseframe-networkbar.js'),
        filters='closure_js', output='js/baseframe-networkbar.js'))
app.assets.register('css_networkbar',
    Bundle(assets.require('baseframe-networkbar.css'),
        filters='cssmin', output='css/baseframe-networkbar.css'))
Esempio n. 50
0
from . import views  # NOQA  # isort:skip

assets['lastuser-oauth.js'][version] = (lastuser_oauth.lastuser_oauth_js, )
assets['lastuser-oauth.css'][version] = lastuser_oauth.lastuser_oauth_css

# Configure the app
coaster.app.init_app(app)
db.init_app(app)
db.app = app  # To make it work without an app context
migrate = Migrate(app, db)
rq.init_app(app)  # Pick up RQ configuration from the app
baseframe.init_app(
    app,
    requires=['lastuser-oauth'],
    ext_requires=['baseframe-mui', 'jquery.cookie', 'timezone'],
    theme='mui',
    asset_modules=('baseframe_private_assets', ),
)

lastuser_oauth.lastuser_oauth.init_app(app)
lastuser_oauth.mailclient.mail.init_app(app)
lastuser_oauth.views.login.oid.init_app(app)

# Register some login providers
if app.config.get('OAUTH_TWITTER_KEY') and app.config.get(
        'OAUTH_TWITTER_SECRET'):
    login_registry['twitter'] = providers.TwitterProvider(
        'twitter',
        'Twitter',
        at_login=True,
Esempio n. 51
0
 def setUp(self):
     self.app = Flask(__name__)
     baseframe.init_app(self.app, requires=['baseframe'])
Esempio n. 52
0
app.register_blueprint(lastuser_oauth.lastuser_oauth)
app.register_blueprint(lastuser_ui.lastuser_ui)

from . import views  # NOQA

assets['lastuser-oauth.js'][version] = lastuser_oauth.lastuser_oauth_js,
assets['lastuser-oauth.css'][version] = lastuser_oauth.lastuser_oauth_css

# Configure the app
coaster.app.init_app(app)
db.init_app(app)
db.app = app  # To make it work without an app context
migrate = Migrate(app, db)
rq.init_app(app)  # Pick up RQ configuration from the app
baseframe.init_app(app,
                   requires=['lastuser-oauth'],
                   ext_requires=['baseframe-mui', 'jquery.cookie', 'timezone'],
                   theme='mui')

lastuser_oauth.lastuser_oauth.init_app(app)
lastuser_oauth.mailclient.mail.init_app(app)
lastuser_oauth.views.login.oid.init_app(app)

# Register some login providers
if app.config.get('OAUTH_TWITTER_KEY') and app.config.get(
        'OAUTH_TWITTER_SECRET'):
    login_registry['twitter'] = providers.TwitterProvider(
        'twitter',
        'Twitter',
        at_login=True,
        priority=True,
        icon='twitter',
Esempio n. 53
0
db.app = app
migrate = Migrate(app, db)
app.geoip = None
if 'GEOIP_PATH' in app.config:
    if not os.path.exists(app.config['GEOIP_PATH']):
        app.logger.warn("GeoIP database missing at " +
                        app.config['GEOIP_PATH'])
    else:
        app.geoip = geoip2.database.Reader(app.config['GEOIP_PATH'])

RQ(app)

baseframe.init_app(app,
                   requires=[
                       'baseframe-bs3', 'jquery.autosize', 'jquery.liblink',
                       'jquery.wnumb', 'jquery.nouislider',
                       'baseframe-firasans', 'fontawesome>=4.3.0',
                       'bootstrap-multiselect', 'nprogress', 'ractive',
                       'jquery.appear', 'hammer'
                   ])
# TinyMCE has to be loaded by itself, unminified, or it won't be able to find its assets
app.assets.register(
    'js_tinymce',
    assets.require('!jquery.js', 'tinymce.js>=4.0.0',
                   'jquery.tinymce.js>=4.0.0'))
app.assets.register(
    'css_editor',
    Bundle('css/editor.css',
           filters=['cssrewrite', 'cssmin'],
           output='css/editor.packed.css'))

from hasjob.uploads import configure as uploads_configure
Esempio n. 54
0
# -*- coding: utf-8 -*-

# The imports in this file are order-sensitive

from pytz import timezone
from flask import Flask
from flask_lastuser import Lastuser
from flask_lastuser.sqlalchemy import UserManager
from baseframe import baseframe, assets, Version
from flask_migrate import Migrate
import coaster.app
from ._version import __version__

version = Version(__version__)
app = Flask(__name__, instance_relative_config=True)
lastuser = Lastuser()

from . import models, views
from .models import db

assets['kharcha.css'][version] = 'css/app.css'

# Configure the app
coaster.app.init_app(app)
migrate = Migrate(app, models.db)
baseframe.init_app(app, requires=['baseframe', 'jquery.expander', 'kharcha'])
lastuser.init_app(app)
lastuser.init_usermanager(UserManager(models.db, models.User, models.Team))
app.config['tz'] = timezone(app.config['TIMEZONE'])
Esempio n. 55
0
# Configure the app
coaster.app.init_app(app)
db.init_app(app)
db.app = app
migrate = Migrate(app, db)
app.geoip = None
if 'GEOIP_PATH' in app.config:
    if not os.path.exists(app.config['GEOIP_PATH']):
        app.logger.warn("GeoIP database missing at " + app.config['GEOIP_PATH'])
    else:
        app.geoip = geoip2.database.Reader(app.config['GEOIP_PATH'])

RQ(app)

baseframe.init_app(app, requires=['baseframe-bs3', 'jquery.autosize', 'jquery.liblink',
    'jquery.wnumb', 'jquery.nouislider', 'baseframe-firasans', 'fontawesome>=4.3.0',
    'bootstrap-multiselect', 'nprogress', 'ractive', 'jquery.appear', 'hammer'])

# FIXME: Hack for external build system generating relative /static URLs.
# Fix this by generating absolute URLs to the static subdomain during build.
app.add_url_rule('/static/<path:filename>', endpoint='static',
    view_func=app.send_static_file, subdomain=None)
app.add_url_rule('/static/<path:filename>', endpoint='static',
    view_func=app.send_static_file, subdomain='<subdomain>')

# TinyMCE has to be loaded by itself, unminified, or it won't be able to find its assets
app.assets.register('js_tinymce', assets.require('!jquery.js', 'tinymce.js>=4.0.0', 'jquery.tinymce.js>=4.0.0'))
app.assets.register('css_editor', Bundle('css/editor.css',
    filters=['cssrewrite', 'cssmin'], output='css/editor.packed.css'))

from hasjob.uploads import configure as uploads_configure
Esempio n. 56
0
coaster.app.init_app(app)
db.init_app(app)
db.app = app
migrate = Migrate(app, db)
rq.init_app(app)

lastuser.init_app(app)
lastuser.init_usermanager(UserManager(db, User))
app.config['tz'] = timezone(app.config['TIMEZONE'])
baseframe.init_app(
    app,
    requires=['boxoffice'],
    ext_requires=[
        'baseframe-bs3',
        'fontawesome>=4.0.0',
        'baseframe-footable',
        'jquery.tinymce>=4.0.0',
    ],
    asset_modules=('baseframe_private_assets', ),
)
app.json_encoder = DecimalJsonEncoder

mail.init_app(app)
wtforms_json.init()

# This is a temporary solution for an admin interface, only
# to be used until the native admin interface is ready.
try:
    admin = Admin(app,
                  name="Boxoffice Admin",
Esempio n. 57
0
import re
import unittest

from flask import Flask

from baseframe import baseframe, forms

app1 = Flask(__name__)
app1.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'
app1.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app1.config['CACHE_TYPE'] = 'simple'
app2 = Flask(__name__)
app2.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql:///baseframe_test'
app2.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app2.config['CACHE_TYPE'] = 'simple'
baseframe.init_app(app1, requires=['baseframe'])
baseframe.init_app(app2, requires=['baseframe'])


class TestCaseBaseframe(unittest.TestCase):
    def setUp(self):
        self.app = Flask(__name__)
        self.app.config['CACHE_TYPE'] = 'simple'
        baseframe.init_app(self.app, requires=['baseframe'])


class UserTest:
    def __init__(self, avatar=None, email=None):
        self.set_avatar(avatar)
        self.set_email(email)
Esempio n. 58
0
app.config['FLATPAGES_MARKDOWN_EXTENSIONS'] = ['markdown.extensions.nl2br']
pages.init_app(app)

redis_store.init_app(app)

rq.init_app(app)
rq.init_app(funnelapp)
rq.init_app(lastuserapp)

baseframe.init_app(
    app,
    requires=['funnel'],
    ext_requires=[
        'pygments',
        'toastr',
        'baseframe-mui',
        'jquery.cookie',
        'timezone',
        'pace',
    ],
    theme='mui',
    asset_modules=('baseframe_private_assets', ),
)
baseframe.init_app(
    funnelapp,
    requires=['funnel'],
    ext_requires=[
        'pygments',
        'toastr',
        'baseframe-mui',
        'jquery.cookie',
        'timezone',