The beginning of context hooks.
Not the working solution, but getting there conceptually. Basically we'll have a key with the view and the template as a tuple which is the context hook that anyone can attach to. However, some changes have still to be made: - The unit test doesn't work yet and contains a set_trace ;) - We'll probably switch the "view" component from being the callable to the "urlgen"'able name per Elrond's suggestion - Found a bug in unit tests related to running custom apps for different configs... hm. I need to fix this! Nonetheless, making progress. This commit sponsored by... wait a minute... Christopher Webber?!
This commit is contained in:
parent
f65bf89836
commit
3810309443
@ -201,6 +201,9 @@ class MediaGoblinApp(object):
|
|||||||
exc.get_description(environ))(environ, start_response)
|
exc.get_description(environ))(environ, start_response)
|
||||||
|
|
||||||
controller = endpoint_to_controller(found_rule)
|
controller = endpoint_to_controller(found_rule)
|
||||||
|
# Make a reference to the controller on the request...
|
||||||
|
# used for lazy context modification
|
||||||
|
request.controller = controller
|
||||||
|
|
||||||
# pass the request through our meddleware classes
|
# pass the request through our meddleware classes
|
||||||
try:
|
try:
|
||||||
|
@ -25,6 +25,7 @@ from mediagoblin import mg_globals
|
|||||||
from mediagoblin.init.plugins import setup_plugins
|
from mediagoblin.init.plugins import setup_plugins
|
||||||
from mediagoblin.init.config import read_mediagoblin_config
|
from mediagoblin.init.config import read_mediagoblin_config
|
||||||
from mediagoblin.tools import pluginapi
|
from mediagoblin.tools import pluginapi
|
||||||
|
from mediagoblin.tests.tools import get_app
|
||||||
|
|
||||||
|
|
||||||
def with_cleanup(*modules_to_delete):
|
def with_cleanup(*modules_to_delete):
|
||||||
@ -323,3 +324,14 @@ def test_plugin_config():
|
|||||||
# the callables thing shouldn't really have anything though.
|
# the callables thing shouldn't really have anything though.
|
||||||
assert len(config['plugins'][
|
assert len(config['plugins'][
|
||||||
'mediagoblin.tests.testplugins.callables1']) == 0
|
'mediagoblin.tests.testplugins.callables1']) == 0
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture()
|
||||||
|
def context_modified_app(request):
|
||||||
|
get_app(
|
||||||
|
request,
|
||||||
|
mgoblin_config=pkg_resources.resource_filename(
|
||||||
|
'mediagoblin.tests', 'appconfig_context_modified.ini'))
|
||||||
|
|
||||||
|
def test_modify_context(context_modified_app):
|
||||||
|
pytest.set_trace()
|
||||||
|
@ -27,7 +27,8 @@ from mediagoblin import messages
|
|||||||
from mediagoblin import _version
|
from mediagoblin import _version
|
||||||
from mediagoblin.tools import common
|
from mediagoblin.tools import common
|
||||||
from mediagoblin.tools.translate import set_thread_locale
|
from mediagoblin.tools.translate import set_thread_locale
|
||||||
from mediagoblin.tools.pluginapi import get_hook_templates
|
from mediagoblin.tools.pluginapi import (
|
||||||
|
get_hook_templates, hook_transform)
|
||||||
from mediagoblin.tools.timesince import timesince
|
from mediagoblin.tools.timesince import timesince
|
||||||
from mediagoblin.meddleware.csrf import render_csrf_form_token
|
from mediagoblin.meddleware.csrf import render_csrf_form_token
|
||||||
|
|
||||||
@ -103,6 +104,12 @@ def render_template(request, template_path, context):
|
|||||||
rendered_csrf_token = render_csrf_form_token(request)
|
rendered_csrf_token = render_csrf_form_token(request)
|
||||||
if rendered_csrf_token is not None:
|
if rendered_csrf_token is not None:
|
||||||
context['csrf_token'] = render_csrf_form_token(request)
|
context['csrf_token'] = render_csrf_form_token(request)
|
||||||
|
|
||||||
|
# allow plugins to do things to the context
|
||||||
|
context = hook_transform(
|
||||||
|
(request.controller, template_path),
|
||||||
|
context)
|
||||||
|
|
||||||
rendered = template.render(context)
|
rendered = template.render(context)
|
||||||
|
|
||||||
if common.TESTS_ENABLED:
|
if common.TESTS_ENABLED:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user