Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(877)

Unified Diff: chrome/common/extensions/docs/server2/template_renderer.py

Issue 65643009: Docserver: Attach intro metadata to the template itself, not to an object which (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « chrome/common/extensions/docs/server2/render_servlet.py ('k') | chrome/common/extensions/docs/templates/articles/a11y.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698