| Index: chrome/common/extensions/docs/server2/template_renderer.py
|
| diff --git a/chrome/common/extensions/docs/server2/template_renderer.py b/chrome/common/extensions/docs/server2/template_renderer.py
|
| index e63f77186772bed918970305e4af5dd807bb6c8f..63b31acec1417b20026d468075e6fc619d41f15b 100644
|
| --- a/chrome/common/extensions/docs/server2/template_renderer.py
|
| +++ b/chrome/common/extensions/docs/server2/template_renderer.py
|
| @@ -16,21 +16,37 @@ class TemplateRenderer(object):
|
| def __init__(self, server_instance):
|
| self._server_instance = server_instance
|
|
|
| - def Render(self, template, request):
|
| + def Render(self, template, request, data_sources=None, warn=True):
|
| + '''Renders |template| using |request|.
|
| + Specify |data_sources| to only include the DataSources with the given names
|
| + when rendering the template.
|
| + Specify |warn| whether to warn (e.g. logging.warning) if there are template
|
| + rendering errors. It may be useful to disable this when errors are expected,
|
| + for example when doing an initial page render to determine document title.
|
| + '''
|
| assert isinstance(template, Handlebar), type(template)
|
| - server_instance = self._server_instance
|
| - render_context = {
|
| - 'api_list': server_instance.api_list_data_source_factory.Create(),
|
| - 'apis': server_instance.api_data_source_factory.Create(request),
|
| + render_context = self._CreateDataSources(request)
|
| + if data_sources is not None:
|
| + render_context = dict((name, d) for name, d in render_context.iteritems()
|
| + if name in data_sources)
|
| + render_context.update({
|
| 'apps_samples_url': GITHUB_BASE,
|
| - 'base_path': server_instance.base_path,
|
| + 'base_path': self._server_instance.base_path,
|
| 'extensions_samples_url': EXTENSIONS_SAMPLES,
|
| - 'samples': server_instance.samples_data_source_factory.Create(request),
|
| - 'static': server_instance.base_path + 'static',
|
| - }
|
| - render_context.update(CreateDataSources(server_instance, request=request))
|
| - render_data = template.render(render_context)
|
| - if render_data.errors:
|
| + 'static': self._server_instance.base_path + 'static',
|
| + })
|
| + render_data = template.Render(render_context)
|
| + if warn and render_data.errors:
|
| logging.error('Handlebar error(s) rendering %s:\n%s' %
|
| (template._name, ' \n'.join(render_data.errors)))
|
| return render_data.text
|
| +
|
| + def _CreateDataSources(self, request):
|
| + server_instance = self._server_instance
|
| + data_sources = CreateDataSources(server_instance, request=request)
|
| + data_sources.update({
|
| + 'api_list': server_instance.api_list_data_source_factory.Create(),
|
| + 'apis': server_instance.api_data_source_factory.Create(request),
|
| + 'samples': server_instance.samples_data_source_factory.Create(request),
|
| + })
|
| + return data_sources
|
|
|