This is a quickie. I was working on creating custom Pyramid scaffold for easing development of multiple REST based microservices that share a common base. Instead of trying to copy, paste, change, I decided to ease my work by creating a scaffold. Here’s a quick tutorial from the documentation on how to do it: http://docs.pylonsproject.org/docs/pyramid/en/latest/narr/scaffolding.html.
However it took me a little bit of time to find out, how am I supposed to pass custom variables used by PyramidTemplate when rendering files within a scaffold. Pyramid documentation doesn’t explicitly state it, but it seems that PyramidTemplate is instantiated from Template class from PythonPaste (or PasteDeploy, I don’t remember which one). Taking a quick look at Paster templates documentation here: http://docs.plone.org/develop/plone/misc/paster_templates.html – I have stumbled upon this sentence:
You can also prepare template variables in Python code in your Paster template class’s pre() method:
So. It seems that when defining your own Pyramid scaffold, you can override pre() method of PyramidTemplate like this:
from pyramid.scaffolds import PyramidTemplate class MyCustomTemplate(PyramidTemplate): _template_dir = 'mycustom_scaffold' summary = 'Template for mycustom scaffold' def pre(self, command, output_dir, vars): vars['myvar'] = 'THIS IS MY VARIABLE' return PyramidTemplate.pre(self, command, output_dir, vars)
As you can see there is vars dictionary passed into pre() method which you can update with your own variables. Hope you find it useful.