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

Side by Side Diff: chrome/common/extensions/docs/server2/template_data_source.py

Issue 14273041: Doc server manifest page generation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix imports Created 7 years, 5 months 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
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 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 docs_server_utils import FormatKey 7 from docs_server_utils import FormatKey
8 from file_system import FileNotFoundError 8 from file_system import FileNotFoundError
9 from third_party.handlebar import Handlebar 9 from third_party.handlebar import Handlebar
10 import url_constants 10 import url_constants
(...skipping 27 matching lines...) Expand all
38 individual Requests. 38 individual Requests.
39 """ 39 """
40 def __init__(self, 40 def __init__(self,
41 api_data_source_factory, 41 api_data_source_factory,
42 api_list_data_source_factory, 42 api_list_data_source_factory,
43 intro_data_source_factory, 43 intro_data_source_factory,
44 samples_data_source_factory, 44 samples_data_source_factory,
45 sidenav_data_source_factory, 45 sidenav_data_source_factory,
46 compiled_fs_factory, 46 compiled_fs_factory,
47 ref_resolver_factory, 47 ref_resolver_factory,
48 manifest_data_source,
48 public_template_path, 49 public_template_path,
49 private_template_path, 50 private_template_path,
50 base_path): 51 base_path):
51 self._api_data_source_factory = api_data_source_factory 52 self._api_data_source_factory = api_data_source_factory
52 self._api_list_data_source_factory = api_list_data_source_factory 53 self._api_list_data_source_factory = api_list_data_source_factory
53 self._intro_data_source_factory = intro_data_source_factory 54 self._intro_data_source_factory = intro_data_source_factory
54 self._samples_data_source_factory = samples_data_source_factory 55 self._samples_data_source_factory = samples_data_source_factory
55 self._sidenav_data_source_factory = sidenav_data_source_factory 56 self._sidenav_data_source_factory = sidenav_data_source_factory
56 self._cache = compiled_fs_factory.Create(self._CreateTemplate, 57 self._cache = compiled_fs_factory.Create(self._CreateTemplate,
57 TemplateDataSource) 58 TemplateDataSource)
58 self._ref_resolver = ref_resolver_factory.Create() 59 self._ref_resolver = ref_resolver_factory.Create()
59 self._public_template_path = public_template_path 60 self._public_template_path = public_template_path
60 self._private_template_path = private_template_path 61 self._private_template_path = private_template_path
62 self._manifest_data_source = manifest_data_source
61 self._base_path = base_path 63 self._base_path = base_path
62 64
63 def _CreateTemplate(self, template_name, text): 65 def _CreateTemplate(self, template_name, text):
64 return Handlebar(self._ref_resolver.ResolveAllLinks(text)) 66 return Handlebar(self._ref_resolver.ResolveAllLinks(text))
65 67
66 def Create(self, request, path): 68 def Create(self, request, path):
67 """Returns a new TemplateDataSource bound to |request|. 69 """Returns a new TemplateDataSource bound to |request|.
68 """ 70 """
69 return TemplateDataSource( 71 return TemplateDataSource(
70 self._api_data_source_factory.Create(request), 72 self._api_data_source_factory.Create(request),
71 self._api_list_data_source_factory.Create(), 73 self._api_list_data_source_factory.Create(),
72 self._intro_data_source_factory.Create(), 74 self._intro_data_source_factory.Create(),
73 self._samples_data_source_factory.Create(request), 75 self._samples_data_source_factory.Create(request),
74 self._sidenav_data_source_factory.Create(path), 76 self._sidenav_data_source_factory.Create(path),
75 self._cache, 77 self._cache,
78 self._manifest_data_source,
76 self._public_template_path, 79 self._public_template_path,
77 self._private_template_path, 80 self._private_template_path,
78 self._base_path) 81 self._base_path)
79 82
80 def __init__(self, 83 def __init__(self,
81 api_data_source, 84 api_data_source,
82 api_list_data_source, 85 api_list_data_source,
83 intro_data_source, 86 intro_data_source,
84 samples_data_source, 87 samples_data_source,
85 sidenav_data_source, 88 sidenav_data_source,
86 cache, 89 cache,
90 manifest_data_source,
87 public_template_path, 91 public_template_path,
88 private_template_path, 92 private_template_path,
89 base_path): 93 base_path):
90 self._api_list_data_source = api_list_data_source 94 self._api_list_data_source = api_list_data_source
91 self._intro_data_source = intro_data_source 95 self._intro_data_source = intro_data_source
92 self._samples_data_source = samples_data_source 96 self._samples_data_source = samples_data_source
93 self._api_data_source = api_data_source 97 self._api_data_source = api_data_source
94 self._sidenav_data_source = sidenav_data_source 98 self._sidenav_data_source = sidenav_data_source
95 self._cache = cache 99 self._cache = cache
96 self._public_template_path = public_template_path 100 self._public_template_path = public_template_path
97 self._private_template_path = private_template_path 101 self._private_template_path = private_template_path
102 self._manifest_data_source = manifest_data_source
98 self._base_path = base_path 103 self._base_path = base_path
99 104
100 def Render(self, template_name): 105 def Render(self, template_name):
101 """This method will render a template named |template_name|, fetching all 106 """This method will render a template named |template_name|, fetching all
102 the partial templates needed from |self._cache|. Partials are retrieved 107 the partial templates needed from |self._cache|. Partials are retrieved
103 from the TemplateDataSource with the |get| method. 108 from the TemplateDataSource with the |get| method.
104 """ 109 """
105 template = self.GetTemplate(self._public_template_path, template_name) 110 template = self.GetTemplate(self._public_template_path, template_name)
106 if template is None: 111 if template is None:
107 return None 112 return None
108 # TODO error handling 113 # TODO error handling
109 render_data = template.render({ 114 render_data = template.render({
110 'api_list': self._api_list_data_source, 115 'api_list': self._api_list_data_source,
111 'apis': self._api_data_source, 116 'apis': self._api_data_source,
112 'intros': self._intro_data_source, 117 'intros': self._intro_data_source,
113 'sidenavs': self._sidenav_data_source, 118 'sidenavs': self._sidenav_data_source,
114 'partials': self, 119 'partials': self,
120 'manifest_source': self._manifest_data_source,
115 'samples': self._samples_data_source, 121 'samples': self._samples_data_source,
116 'apps_samples_url': url_constants.GITHUB_BASE, 122 'apps_samples_url': url_constants.GITHUB_BASE,
117 'extensions_samples_url': url_constants.EXTENSIONS_SAMPLES, 123 'extensions_samples_url': url_constants.EXTENSIONS_SAMPLES,
118 'static': self._base_path + '/static', 124 'static': self._base_path + '/static',
119 'strings': _STRING_CONSTANTS, 125 'strings': _STRING_CONSTANTS,
120 'true': True, 126 'true': True,
121 'false': False 127 'false': False
122 }) 128 })
123 if render_data.errors: 129 if render_data.errors:
124 logging.error('Handlebar error(s) rendering %s:\n%s' % 130 logging.error('Handlebar error(s) rendering %s:\n%s' %
125 (template_name, ' \n'.join(render_data.errors))) 131 (template_name, ' \n'.join(render_data.errors)))
126 return render_data.text 132 return render_data.text
127 133
128 def get(self, key): 134 def get(self, key):
129 return self.GetTemplate(self._private_template_path, key) 135 return self.GetTemplate(self._private_template_path, key)
130 136
131 def GetTemplate(self, base_path, template_name): 137 def GetTemplate(self, base_path, template_name):
132 try: 138 try:
133 return self._cache.GetFromFile( 139 return self._cache.GetFromFile(
134 '/'.join((base_path, FormatKey(template_name)))) 140 '/'.join((base_path, FormatKey(template_name))))
135 except FileNotFoundError as e: 141 except FileNotFoundError:
136 return None 142 return None
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698