Files
pypistats.org/pypistats/application.py
Flynn a5bb518b88 updates (#31)
* 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
2020-08-15 18:36:37 -04:00

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)