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

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

Issue 14712010: Revert 199633 "Doc server manifest page generation" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 7 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 | Annotate | Revision Log
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 import os
6 import traceback 7 import traceback
7 8
8 from branch_utility import BranchUtility 9 from branch_utility import BranchUtility
10 import compiled_file_system as compiled_fs
9 from docs_server_utils import FormatKey 11 from docs_server_utils import FormatKey
10 from file_system import FileNotFoundError 12 from file_system import FileNotFoundError
11 from third_party.handlebar import Handlebar 13 from third_party.handlebar import Handlebar
12 import url_constants 14 import url_constants
13 15
14 EXTENSIONS_URL = '/chrome/extensions' 16 EXTENSIONS_URL = '/chrome/extensions'
15 17
16 def _MakeChannelDict(channel_name): 18 def _MakeChannelDict(channel_name):
17 channel_dict = { 19 channel_dict = {
18 'channels': [{'name': name} for name in BranchUtility.GetAllChannelNames()], 20 'channels': [{'name': name} for name in BranchUtility.GetAllChannelNames()],
19 'current': channel_name 21 'current': channel_name
20 } 22 }
21
22 for channel in channel_dict['channels']: 23 for channel in channel_dict['channels']:
23 if channel['name'] == channel_name: 24 if channel['name'] == channel_name:
24 channel['isCurrent'] = True 25 channel['isCurrent'] = True
25 return channel_dict 26 return channel_dict
26 27
27 class TemplateDataSource(object): 28 class TemplateDataSource(object):
28 """Renders Handlebar templates, providing them with the context in which to 29 """Renders Handlebar templates, providing them with the context in which to
29 render. 30 render.
30 31
31 Also acts as a data source itself, providing partial Handlebar templates to 32 Also acts as a data source itself, providing partial Handlebar templates to
(...skipping 10 matching lines...) Expand all
42 """ 43 """
43 def __init__(self, 44 def __init__(self,
44 channel_name, 45 channel_name,
45 api_data_source_factory, 46 api_data_source_factory,
46 api_list_data_source_factory, 47 api_list_data_source_factory,
47 intro_data_source_factory, 48 intro_data_source_factory,
48 samples_data_source_factory, 49 samples_data_source_factory,
49 sidenav_data_source_factory, 50 sidenav_data_source_factory,
50 compiled_fs_factory, 51 compiled_fs_factory,
51 ref_resolver_factory, 52 ref_resolver_factory,
52 manifest_data_source,
53 public_template_path, 53 public_template_path,
54 private_template_path): 54 private_template_path):
55 self._branch_info = _MakeChannelDict(channel_name) 55 self._branch_info = _MakeChannelDict(channel_name)
56 self._api_data_source_factory = api_data_source_factory 56 self._api_data_source_factory = api_data_source_factory
57 self._api_list_data_source_factory = api_list_data_source_factory 57 self._api_list_data_source_factory = api_list_data_source_factory
58 self._intro_data_source_factory = intro_data_source_factory 58 self._intro_data_source_factory = intro_data_source_factory
59 self._samples_data_source_factory = samples_data_source_factory 59 self._samples_data_source_factory = samples_data_source_factory
60 self._sidenav_data_source_factory = sidenav_data_source_factory 60 self._sidenav_data_source_factory = sidenav_data_source_factory
61 self._cache = compiled_fs_factory.Create(self._CreateTemplate, 61 self._cache = compiled_fs_factory.Create(self._CreateTemplate,
62 TemplateDataSource) 62 TemplateDataSource)
63 self._ref_resolver = ref_resolver_factory.Create() 63 self._ref_resolver = ref_resolver_factory.Create()
64 self._public_template_path = public_template_path 64 self._public_template_path = public_template_path
65 self._private_template_path = private_template_path 65 self._private_template_path = private_template_path
66 self._static_resources = '/%s/static' % channel_name 66 self._static_resources = '/%s/static' % channel_name
67 self._manifest_data_source = manifest_data_source
68 67
69 def _CreateTemplate(self, template_name, text): 68 def _CreateTemplate(self, template_name, text):
70 return Handlebar(self._ref_resolver.ResolveAllLinks(text)) 69 return Handlebar(self._ref_resolver.ResolveAllLinks(text))
71 70
72 def Create(self, request, path): 71 def Create(self, request, path):
73 """Returns a new TemplateDataSource bound to |request|. 72 """Returns a new TemplateDataSource bound to |request|.
74 """ 73 """
75 return TemplateDataSource( 74 return TemplateDataSource(
76 self._branch_info, 75 self._branch_info,
77 self._api_data_source_factory.Create(request), 76 self._api_data_source_factory.Create(request),
78 self._api_list_data_source_factory.Create(), 77 self._api_list_data_source_factory.Create(),
79 self._intro_data_source_factory.Create(), 78 self._intro_data_source_factory.Create(),
80 self._samples_data_source_factory.Create(request), 79 self._samples_data_source_factory.Create(request),
81 self._sidenav_data_source_factory.Create(path), 80 self._sidenav_data_source_factory.Create(path),
82 self._cache, 81 self._cache,
83 self._manifest_data_source,
84 self._public_template_path, 82 self._public_template_path,
85 self._private_template_path, 83 self._private_template_path,
86 self._static_resources) 84 self._static_resources)
87 85
88 def __init__(self, 86 def __init__(self,
89 branch_info, 87 branch_info,
90 api_data_source, 88 api_data_source,
91 api_list_data_source, 89 api_list_data_source,
92 intro_data_source, 90 intro_data_source,
93 samples_data_source, 91 samples_data_source,
94 sidenav_data_source, 92 sidenav_data_source,
95 cache, 93 cache,
96 manifest_data_source,
97 public_template_path, 94 public_template_path,
98 private_template_path, 95 private_template_path,
99 static_resources): 96 static_resources):
100 self._branch_info = branch_info 97 self._branch_info = branch_info
101 self._api_list_data_source = api_list_data_source 98 self._api_list_data_source = api_list_data_source
102 self._intro_data_source = intro_data_source 99 self._intro_data_source = intro_data_source
103 self._samples_data_source = samples_data_source 100 self._samples_data_source = samples_data_source
104 self._api_data_source = api_data_source 101 self._api_data_source = api_data_source
105 self._sidenav_data_source = sidenav_data_source 102 self._sidenav_data_source = sidenav_data_source
106 self._cache = cache 103 self._cache = cache
107 self._public_template_path = public_template_path 104 self._public_template_path = public_template_path
108 self._private_template_path = private_template_path 105 self._private_template_path = private_template_path
109 self._static_resources = static_resources 106 self._static_resources = static_resources
110 self._manifest_data_source = manifest_data_source
111 107
112 def Render(self, template_name): 108 def Render(self, template_name):
113 """This method will render a template named |template_name|, fetching all 109 """This method will render a template named |template_name|, fetching all
114 the partial templates needed from |self._cache|. Partials are retrieved 110 the partial templates needed from |self._cache|. Partials are retrieved
115 from the TemplateDataSource with the |get| method. 111 from the TemplateDataSource with the |get| method.
116 """ 112 """
117 template = self.GetTemplate(self._public_template_path, template_name) 113 template = self.GetTemplate(self._public_template_path, template_name)
118 if not template: 114 if not template:
119 return None 115 return None
120 # TODO error handling 116 # TODO error handling
121 render_data = template.render({ 117 render_data = template.render({
122 'api_list': self._api_list_data_source, 118 'api_list': self._api_list_data_source,
123 'apis': self._api_data_source, 119 'apis': self._api_data_source,
124 'branchInfo': self._branch_info, 120 'branchInfo': self._branch_info,
125 'intros': self._intro_data_source, 121 'intros': self._intro_data_source,
126 'sidenavs': self._sidenav_data_source, 122 'sidenavs': self._sidenav_data_source,
127 'partials': self, 123 'partials': self,
128 'manifest_source': self._manifest_data_source,
129 'samples': self._samples_data_source, 124 'samples': self._samples_data_source,
130 'static': self._static_resources, 125 'static': self._static_resources,
131 'app': 'app', 126 'app': 'app',
132 'extension': 'extension', 127 'extension': 'extension',
133 'apps_title': 'Apps', 128 'apps_title': 'Apps',
134 'extensions_title': 'Extensions', 129 'extensions_title': 'Extensions',
135 'apps_samples_url': url_constants.GITHUB_BASE, 130 'apps_samples_url': url_constants.GITHUB_BASE,
136 # TODO(kalman): this is wrong, it's always getting from trunk, but meh 131 # TODO(kalman): this is wrong, it's always getting from trunk, but meh
137 # it hardly ever shows up (only in the "cannot fetch samples" message). 132 # it hardly ever shows up (only in the "cannot fetch samples" message).
138 # In fact I don't even know if it can show up anymore due the samples data 133 # In fact I don't even know if it can show up anymore due the samples data
139 # being persisent. In any case, when the channel distinctions are gone 134 # being persisent. In any case, when the channel distinctions are gone
140 # this can go away, so, double meh. 135 # this can go away, so, double meh.
141 'extensions_samples_url': url_constants.EXTENSIONS_SAMPLES, 136 'extensions_samples_url': url_constants.EXTENSIONS_SAMPLES,
142 'true': True, 137 'true': True,
143 'false': False 138 'false': False
144 }) 139 })
145 if render_data.errors: 140 if render_data.errors:
146 logging.error('Handlebar error(s) rendering %s:\n%s' % 141 logging.error('Handlebar error(s) rendering %s:\n%s' %
147 (template_name, ' \n'.join(render_data.errors))) 142 (template_name, ' \n'.join(render_data.errors)))
148 return render_data.text 143 return render_data.text
149 144
150 def get(self, key): 145 def get(self, key):
151 return self.GetTemplate(self._private_template_path, key) 146 return self.GetTemplate(self._private_template_path, key)
152 147
153 def GetTemplate(self, base_path, template_name): 148 def GetTemplate(self, base_path, template_name):
154 try: 149 try:
155 return self._cache.GetFromFile( 150 return self._cache.GetFromFile(
156 '/'.join((base_path, FormatKey(template_name)))) 151 '/'.join((base_path, FormatKey(template_name))))
157 except FileNotFoundError: 152 except FileNotFoundError as e:
158 logging.warning(traceback.format_exc()) 153 logging.warning(traceback.format_exc())
159 return None 154 return None
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698