import logging
from flask import Flask
-from flask_assets import Environment
+from flask_assets import Environment, Bundle
+
+from .utils.constants import Constants as C
def init_app():
"""Construct core Flask application with embedded Dash app.
"""
-
logging.basicConfig(
- format=u"%(asctime)s: %(levelname)s: %(message)s",
- datefmt=u"%Y/%m/%d %H:%M:%S",
- level=logging.INFO
+ format=C.LOG_FORMAT,
+ datefmt=C.LOG_DATE_FORMAT,
+ level=C.LOG_LEVEL
)
logging.info("Application started.")
app = Flask(__name__, instance_relative_config=False)
- app.config.from_object(u"config.Config")
+ app.config.from_object("config.Config")
with app.app_context():
# Import parts of our core Flask app.
assets = Environment()
assets.init_app(app)
+ # Compile static assets.
+ sass_bundle = Bundle(
+ "sass/lux.scss",
+ filters="libsass",
+ output="dist/css/bootstrap.css",
+ depends="**/*.scss",
+ extra={
+ "rel": "stylesheet"
+ }
+ )
+ assets.register("sass_all", sass_bundle)
+ sass_bundle.build()
+
+ # Set the time period for Trending
+ if C.TIME_PERIOD is None or C.TIME_PERIOD > C.MAX_TIME_PERIOD:
+ time_period = C.MAX_TIME_PERIOD
+ else:
+ time_period = C.TIME_PERIOD
+
# Import Dash applications.
+ from .news.news import init_news
+ app = init_news(app)
+
from .stats.stats import init_stats
- app = init_stats(app)
+ app = init_stats(app, time_period=time_period)
from .trending.trending import init_trending
- app = init_trending(app)
+ app = init_trending(app, time_period=time_period)
+
+ from .report.report import init_report
+ app = init_report(app, releases=C.RELEASES)
return app
+
app = init_app()