optimize-later/optimize_later/apps.py

38 lines
935 B
Python
Raw Normal View History

2017-08-13 18:50:47 -04:00
# For Django applications.
import logging
from django.apps import AppConfig
from django.conf import settings
from django.utils.module_loading import import_string
from optimize_later import config
log = logging.getLogger(__name__.rpartition('.')[0] or __name__)
django_callbacks = []
class OptimizeLaterConfig(AppConfig):
name = 'optimize_later'
verbose_name = 'Optimize Later'
def ready(self):
initialize_django_callbacks()
def django_callback(result):
for callback in django_callbacks:
try:
callback(result)
except Exception:
log.exception('Failed to invoke Django callback: %r', callback)
def initialize_django_callbacks():
global django_callbacks
django_callbacks = []
for callback in getattr(settings, 'OPTIMIZE_LATER_CALLBACKS', None) or []:
django_callbacks.append(import_string(callback))
config.register_callback(django_callback)