Menu

#79 [PATCH] Make override_template work for all content types

2.1.1
closed
core
defect
normal
core
2.1.0
2015-01-25
2011-03-29
No

At the moment override_template only works for the "text/html" engine, this small patch allows it to work for other content types.

As an example I use override_template to have a single controller serving javascripts generated at runtime from templates and return the result with a content_type of "text/javascript".

@expose(content_type='text/javascript')
def parsedjs(self, script):
    """
    Render the required javascript from a template of the same name (but
    with a .mak extension) as found in spam/templates/parsedjs/

    This is needed for javascripts that use config variables from spam or
    other variable data.
    """
    scriptname = os.path.splitext(script)[0]
    templatename = 'spam.templates.parsedjs.%s' % scriptname

    if config.get('use_dotted_templatenames', False):
        template = G.dotted_filename_finder.get_dotted_filename(
                                templatename, template_extension='.mak')
        if not os.path.exists(template):
            raise HTTPNotFound

    override_template(self.parsedjs, 'mako:%s' % templatename)

    return dict()

02/23/10 09:18:46 changed by jorge.vargas

version changed from trunk to 2.1.
milestone changed from __unclassified__ to 2.1b2.

Use case looks weird but the patch is ok.
Delete 02/23/10 16:45:49 changed by percious

status changed from new to closed.
resolution set to fixed.

Delete 12/03/10 06:16:52 changed by chrisz

status changed from closed to reopened.
resolution deleted.
milestone changed from 2.1b2 to __unclassified__.

The checked in patch is flawed (see also here): First and worst, template is changed during the loop. Second, the override_mapping should not be set in every round of the loop. See attached proposed fix.

The other big flaw that I have not fixed is that there is no unit test or integration test for this function.
12/03/10 06:21:35 changed by chrisz

attachment fixed_override_template.patch added.

Proposed fix of already checked in patch

2 Attachments

Discussion

Auth0 Logo