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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import logging 5 import logging
6 6
7 from data_source_registry import CreateDataSources 7 from data_source_registry import CreateDataSources
8 from third_party.handlebar import Handlebar 8 from third_party.handlebar import Handlebar
9 from url_constants import GITHUB_BASE, EXTENSIONS_SAMPLES 9 from url_constants import GITHUB_BASE, EXTENSIONS_SAMPLES
10 10
11 11
12 class TemplateRenderer(object): 12 class TemplateRenderer(object):
13 '''Renders templates with the server's available data sources. 13 '''Renders templates with the server's available data sources.
14 ''' 14 '''
15 15
16 def __init__(self, server_instance): 16 def __init__(self, server_instance):
17 self._server_instance = server_instance 17 self._server_instance = server_instance
18 18
19 def Render(self, template, request): 19 def Render(self, template, request, data_sources=None, warn=True):
20 '''Renders |template| using |request|. Specify |data_sources| to only
21 include the DataSources with the given names when rendering the template.
Yoyo Zhou 2013/11/17 22:12:47 nit: document warn
not at google - send to devlin 2013/11/18 18:05:36 Done.
22 '''
20 assert isinstance(template, Handlebar), type(template) 23 assert isinstance(template, Handlebar), type(template)
21 server_instance = self._server_instance 24 render_context = self._CreateDataSources(request)
22 render_context = { 25 if data_sources is not None:
23 'api_list': server_instance.api_list_data_source_factory.Create(), 26 render_context = dict((name, d) for name, d in render_context.iteritems()
24 'apis': server_instance.api_data_source_factory.Create(request), 27 if name in data_sources)
28 render_context.update({
25 'apps_samples_url': GITHUB_BASE, 29 'apps_samples_url': GITHUB_BASE,
26 'base_path': server_instance.base_path, 30 'base_path': self._server_instance.base_path,
27 'extensions_samples_url': EXTENSIONS_SAMPLES, 31 'extensions_samples_url': EXTENSIONS_SAMPLES,
28 'false': False, 32 'static': self._server_instance.base_path + 'static',
29 'samples': server_instance.samples_data_source_factory.Create(request), 33 })
30 'static': server_instance.base_path + 'static', 34 render_data = template.Render(render_context)
31 'true': True, 35 if warn and render_data.errors:
32 }
33 render_context.update(CreateDataSources(server_instance, request=request))
34 render_data = template.render(render_context)
35 if render_data.errors:
36 logging.error('Handlebar error(s) rendering %s:\n%s' % 36 logging.error('Handlebar error(s) rendering %s:\n%s' %
37 (template._name, ' \n'.join(render_data.errors))) 37 (template._name, ' \n'.join(render_data.errors)))
38 return render_data.text 38 return render_data.text
39
40 def _CreateDataSources(self, request):
41 server_instance = self._server_instance
42 data_sources = CreateDataSources(server_instance, request=request)
43 data_sources.update({
44 'api_list': server_instance.api_list_data_source_factory.Create(),
45 'apis': server_instance.api_data_source_factory.Create(request),
46 'samples': server_instance.samples_data_source_factory.Create(request),
47 })
48 return data_sources
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698