removing old callable utilities and porting stuff over.
This commit is contained in:
parent
97e0a79f39
commit
c5d8d30182
@ -35,7 +35,7 @@ from mediagoblin.init.plugins import setup_plugins
|
|||||||
from mediagoblin.init import (get_jinja_loader, get_staticdirector,
|
from mediagoblin.init import (get_jinja_loader, get_staticdirector,
|
||||||
setup_global_and_app_config, setup_locales, setup_workbench, setup_database,
|
setup_global_and_app_config, setup_locales, setup_workbench, setup_database,
|
||||||
setup_storage)
|
setup_storage)
|
||||||
from mediagoblin.tools.pluginapi import PluginManager
|
from mediagoblin.tools.pluginapi import PluginManager, hook_transform
|
||||||
from mediagoblin.tools.crypto import setup_crypto
|
from mediagoblin.tools.crypto import setup_crypto
|
||||||
|
|
||||||
|
|
||||||
@ -259,8 +259,6 @@ def paste_app_factory(global_config, **app_config):
|
|||||||
raise IOError("Usable mediagoblin config not found.")
|
raise IOError("Usable mediagoblin config not found.")
|
||||||
|
|
||||||
mgoblin_app = MediaGoblinApp(mediagoblin_config)
|
mgoblin_app = MediaGoblinApp(mediagoblin_config)
|
||||||
|
mgoblin_app = hook_transform('wrap_wsgi', mgoblin_app)
|
||||||
for callable_hook in PluginManager().get_hook_callables('wrap_wsgi'):
|
|
||||||
mgoblin_app = callable_hook(mgoblin_app)
|
|
||||||
|
|
||||||
return mgoblin_app
|
return mgoblin_app
|
||||||
|
@ -18,7 +18,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from celery import Celery
|
from celery import Celery
|
||||||
from mediagoblin.tools.pluginapi import callable_runall
|
from mediagoblin.tools.pluginapi import hook_runall
|
||||||
|
|
||||||
|
|
||||||
MANDATORY_CELERY_IMPORTS = ['mediagoblin.processing.task']
|
MANDATORY_CELERY_IMPORTS = ['mediagoblin.processing.task']
|
||||||
@ -66,7 +66,7 @@ def setup_celery_app(app_config, global_config,
|
|||||||
celery_app = Celery()
|
celery_app = Celery()
|
||||||
celery_app.config_from_object(celery_settings)
|
celery_app.config_from_object(celery_settings)
|
||||||
|
|
||||||
callable_runall('celery_setup', celery_app)
|
hook_runall('celery_setup', celery_app)
|
||||||
|
|
||||||
|
|
||||||
def setup_celery_from_config(app_config, global_config,
|
def setup_celery_from_config(app_config, global_config,
|
||||||
|
@ -22,7 +22,7 @@ from celery.signals import setup_logging
|
|||||||
|
|
||||||
from mediagoblin import app, mg_globals
|
from mediagoblin import app, mg_globals
|
||||||
from mediagoblin.init.celery import setup_celery_from_config
|
from mediagoblin.init.celery import setup_celery_from_config
|
||||||
from mediagoblin.tools.pluginapi import callable_runall
|
from mediagoblin.tools.pluginapi import hook_runall
|
||||||
|
|
||||||
|
|
||||||
OUR_MODULENAME = __name__
|
OUR_MODULENAME = __name__
|
||||||
@ -47,7 +47,7 @@ def setup_logging_from_paste_ini(loglevel, **kw):
|
|||||||
|
|
||||||
logging.config.fileConfig(logging_conf_file)
|
logging.config.fileConfig(logging_conf_file)
|
||||||
|
|
||||||
callable_runall('celery_logging_setup')
|
hook_runall('celery_logging_setup')
|
||||||
|
|
||||||
|
|
||||||
setup_logging.connect(setup_logging_from_paste_ini)
|
setup_logging.connect(setup_logging_from_paste_ini)
|
||||||
|
@ -59,4 +59,4 @@ def setup_plugins():
|
|||||||
pman.register_hooks(plugin.hooks)
|
pman.register_hooks(plugin.hooks)
|
||||||
|
|
||||||
# Execute anything registered to the setup hook.
|
# Execute anything registered to the setup hook.
|
||||||
pluginapi.callable_runall('setup')
|
pluginapi.hook_runall('setup')
|
||||||
|
@ -274,73 +274,7 @@ def get_hook_templates(hook_name):
|
|||||||
return PluginManager().get_template_hooks(hook_name)
|
return PluginManager().get_template_hooks(hook_name)
|
||||||
|
|
||||||
|
|
||||||
###########################
|
#############################
|
||||||
# Callable convenience code
|
|
||||||
###########################
|
|
||||||
|
|
||||||
class CantHandleIt(Exception):
|
|
||||||
"""
|
|
||||||
A callable may call this method if they look at the relevant
|
|
||||||
arguments passed and decide it's not possible for them to handle
|
|
||||||
things.
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
class UnhandledCallable(Exception):
|
|
||||||
"""
|
|
||||||
Raise this method if no callables were available to handle the
|
|
||||||
specified hook. Only used by callable_runone.
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def callable_runone(hookname, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Run the callable hook HOOKNAME... run until the first response,
|
|
||||||
then return.
|
|
||||||
|
|
||||||
This function will run stop at the first hook that handles the
|
|
||||||
result. Hooks raising CantHandleIt will be skipped.
|
|
||||||
|
|
||||||
Unless unhandled_okay is True, this will error out if no hooks
|
|
||||||
have been registered to handle this function.
|
|
||||||
"""
|
|
||||||
callables = PluginManager().get_hook_callables(hookname)
|
|
||||||
|
|
||||||
unhandled_okay = kwargs.pop("unhandled_okay", False)
|
|
||||||
|
|
||||||
for callable in callables:
|
|
||||||
try:
|
|
||||||
return callable(*args, **kwargs)
|
|
||||||
except CantHandleIt:
|
|
||||||
continue
|
|
||||||
|
|
||||||
if unhandled_okay is False:
|
|
||||||
raise UnhandledCallable(
|
|
||||||
"No hooks registered capable of handling '%s'" % hookname)
|
|
||||||
|
|
||||||
|
|
||||||
def callable_runall(hookname, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Run all callables for HOOKNAME.
|
|
||||||
|
|
||||||
This method will run *all* hooks that handle this method (skipping
|
|
||||||
those that raise CantHandleIt), and will return a list of all
|
|
||||||
results.
|
|
||||||
"""
|
|
||||||
callables = PluginManager().get_hook_callables(hookname)
|
|
||||||
|
|
||||||
results = []
|
|
||||||
|
|
||||||
for callable in callables:
|
|
||||||
try:
|
|
||||||
results.append(callable(*args, **kwargs))
|
|
||||||
except CantHandleIt:
|
|
||||||
continue
|
|
||||||
|
|
||||||
return results
|
|
||||||
|
|
||||||
|
|
||||||
## Hooks: The Next Generation
|
## Hooks: The Next Generation
|
||||||
#############################
|
#############################
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user