Ticket #2457 (closed enhancement: fixed)

Opened 1 month ago

Last modified 3 weeks ago

[PATCH] Make override_template work for all content types

Reported by: lento Assigned to:
Priority: normal Milestone: 2.1b2
Component: TurboGears Version: 2.1
Severity: normal Keywords: override_template, content_type
Cc:

Description

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()

Attachments

generalize_override_template.patch (1.0 kB) - added by lento on 02/03/10 03:17:25.

Change History

02/03/10 03:17:25 changed by lento

  • attachment generalize_override_template.patch added.

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.

02/23/10 16:45:49 changed by percious

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