mirror of
https://github.com/LukeHagar/pypistats.dev.git
synced 2025-12-06 04:21:09 +00:00
* update ignore files * setup poetry * add db seeds * black * set up compose * backfill script * add makefile, update readme * update poetry * readme * Fixes * cleanup and rate limit changes * poetry 1.0.5 * some more cleanup * k8s * k8s * update yml * cleanup and admin * deploy
51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
"""PyPIStats application."""
|
|
from celery import Task
|
|
from flask import Flask
|
|
|
|
from pypistats import views
|
|
from pypistats.config import DevConfig
|
|
from pypistats.extensions import celery
|
|
from pypistats.extensions import db
|
|
from pypistats.extensions import github
|
|
from pypistats.extensions import migrate
|
|
|
|
|
|
def create_app(config_object=DevConfig):
|
|
"""Create the application."""
|
|
app = Flask(__name__.split(".")[0])
|
|
app.config.from_object(config_object)
|
|
register_extensions(app)
|
|
register_blueprints(app)
|
|
init_celery(celery, app)
|
|
return app
|
|
|
|
|
|
def init_celery(celery_, app):
|
|
"""Create a celery object."""
|
|
celery_.conf.update(app.config)
|
|
|
|
class ContextTask(Task):
|
|
abstract = True
|
|
|
|
def __call__(self, *args, **kwargs):
|
|
with app.app_context():
|
|
return Task.__call__(self, *args, **kwargs)
|
|
|
|
celery_.Task = ContextTask
|
|
|
|
|
|
def register_blueprints(app):
|
|
"""Register Flask blueprints."""
|
|
app.register_blueprint(views.admin.blueprint)
|
|
app.register_blueprint(views.api.blueprint)
|
|
app.register_blueprint(views.error.blueprint)
|
|
app.register_blueprint(views.general.blueprint)
|
|
app.register_blueprint(views.user.blueprint)
|
|
|
|
|
|
def register_extensions(app):
|
|
"""Register Flask extensions."""
|
|
db.init_app(app)
|
|
github.init_app(app)
|
|
migrate.init_app(app, db)
|