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

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

Issue 12996003: Dynamically generate a heading for Extension Docs API pages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/server2/handler.py
diff --git a/chrome/common/extensions/docs/server2/handler.py b/chrome/common/extensions/docs/server2/handler.py
index a89cdcf32a741986436f93ba4bdda79629f7cb0c..eaa6f9f0032f5a29712886b00aaa7975835d8631 100644
--- a/chrome/common/extensions/docs/server2/handler.py
+++ b/chrome/common/extensions/docs/server2/handler.py
@@ -32,11 +32,13 @@ from sidenav_data_source import SidenavDataSource
from subversion_file_system import SubversionFileSystem
from template_data_source import TemplateDataSource
from third_party.json_schema_compiler.model import UnixName
+from chrome_version_data_source import ChromeVersionDataSource
+from availability_data_source import AvailabilityDataSource
import url_constants
# Increment this version to force the server to reload all pages in the first
# cron job that is run.
-_VERSION = 1
+_VERSION = 2
# The default channel to serve docs for if no channel is specified.
_DEFAULT_CHANNEL = 'stable'
@@ -46,13 +48,24 @@ BRANCH_UTILITY = BranchUtility(url_constants.OMAHA_PROXY_URL,
AppEngineUrlFetcher(None),
BRANCH_UTILITY_MEMCACHE)
+AVAILABILITY_DATA_SOURCE_MEMCACHE = InMemoryObjectStore(
+ 'availability_data_source')
+
+CHROME_VERSION_DATA_SOURCE_MEMCACHE = InMemoryObjectStore(
+ 'chrome_version_data_source')
+CHROME_VERSION_DATA_SOURCE = ChromeVersionDataSource(
+ url_constants.OMAHA_BETA_HISTORY,
+ AppEngineUrlFetcher(None),
+ CHROME_VERSION_DATA_SOURCE_MEMCACHE)
+
GITHUB_MEMCACHE = InMemoryObjectStore('github')
GITHUB_FILE_SYSTEM = GithubFileSystem(
AppEngineUrlFetcher(url_constants.GITHUB_URL),
GITHUB_MEMCACHE,
AppEngineBlobstore())
-GITHUB_COMPILED_FILE_SYSTEM = CompiledFileSystem.Factory(GITHUB_FILE_SYSTEM,
- GITHUB_MEMCACHE)
+GITHUB_COMPILED_FILE_SYSTEM = CompiledFileSystem.Factory(
cduvall 2013/03/21 18:43:53 revert
epeterson 2013/03/25 19:35:11 Done.
+ GITHUB_FILE_SYSTEM,
+ GITHUB_MEMCACHE)
EXTENSIONS_PATH = 'chrome/common/extensions'
DOCS_PATH = 'docs'
@@ -65,6 +78,7 @@ PRIVATE_TEMPLATE_PATH = TEMPLATE_PATH + '/private'
EXAMPLES_PATH = DOCS_PATH + '/examples'
JSON_PATH = TEMPLATE_PATH + '/json'
+
cduvall 2013/03/21 18:43:53 Remove newline
epeterson 2013/03/25 19:35:11 Done.
# Global cache of instances because Handler is recreated for every request.
SERVER_INSTANCES = {}
@@ -84,19 +98,22 @@ def _CreateMemcacheFileSystem(branch, branch_memcache):
return MemcacheFileSystem(SubversionFileSystem(fetcher, stat_fetcher),
branch_memcache)
-_default_branch = BRANCH_UTILITY.GetBranchNumberForChannelName(_DEFAULT_CHANNEL)
+_default_branch = BRANCH_UTILITY.GetBranchAndVersionForChannelName(
+ _DEFAULT_CHANNEL)['branch']
APPS_MEMCACHE = InMemoryObjectStore(_default_branch)
APPS_FILE_SYSTEM = _CreateMemcacheFileSystem(_default_branch, APPS_MEMCACHE)
APPS_COMPILED_FILE_SYSTEM = CompiledFileSystem.Factory(
APPS_FILE_SYSTEM,
- APPS_MEMCACHE).Create(_SplitFilenameUnix, compiled_fs.APPS_FS)
+ APPS_MEMCACHE).Create(_SplitFilenameUnix,
cduvall 2013/03/21 18:43:53 revert
epeterson 2013/03/25 19:35:11 Done.
+ compiled_fs.APPS_FS)
EXTENSIONS_MEMCACHE = InMemoryObjectStore(_default_branch)
EXTENSIONS_FILE_SYSTEM = _CreateMemcacheFileSystem(_default_branch,
EXTENSIONS_MEMCACHE)
EXTENSIONS_COMPILED_FILE_SYSTEM = CompiledFileSystem.Factory(
EXTENSIONS_FILE_SYSTEM,
- EXTENSIONS_MEMCACHE).Create(_SplitFilenameUnix, compiled_fs.EXTENSIONS_FS)
+ EXTENSIONS_MEMCACHE).Create(_SplitFilenameUnix,
cduvall 2013/03/21 18:43:53 revert
epeterson 2013/03/25 19:35:11 Done.
+ compiled_fs.EXTENSIONS_FS)
KNOWN_ISSUES_DATA_SOURCE = KnownIssuesDataSource(
InMemoryObjectStore('KnownIssues'),
@@ -106,7 +123,11 @@ def _MakeInstanceKey(branch, number):
return '%s/%s' % (branch, number)
def _GetInstanceForBranch(channel_name, local_path):
- branch = BRANCH_UTILITY.GetBranchNumberForChannelName(channel_name)
+ branchAndVersion = BRANCH_UTILITY.GetBranchAndVersionForChannelName(
cduvall 2013/03/21 18:43:53 use unix_hacker style names. but this can just be
epeterson 2013/03/25 19:35:11 I reworked this. branchAndVersion actually contain
+ channel_name)
+
+ branch = branchAndVersion['branch']
+ version = branchAndVersion['version']
# The key for the server is a tuple of |channel_name| with |branch|, since
# sometimes stable and beta point to the same branch.
@@ -117,14 +138,21 @@ def _GetInstanceForBranch(channel_name, local_path):
branch_memcache = InMemoryObjectStore(branch)
file_system = _CreateMemcacheFileSystem(branch, branch_memcache)
- cache_factory = CompiledFileSystem.Factory(file_system, branch_memcache)
+ cache_factory = CompiledFileSystem.Factory(
cduvall 2013/03/21 18:43:53 revert
epeterson 2013/03/25 19:35:11 Done.
+ file_system,
+ branch_memcache)
api_list_data_source_factory = APIListDataSource.Factory(cache_factory,
file_system,
API_PATH,
PUBLIC_TEMPLATE_PATH)
+ availability_data_source = AvailabilityDataSource(
+ CHROME_VERSION_DATA_SOURCE,
+ version,
+ AVAILABILITY_DATA_SOURCE_MEMCACHE)
api_data_source_factory = APIDataSource.Factory(
cache_factory,
- API_PATH)
+ API_PATH,
+ availability_data_source)
# Give the ReferenceResolver a memcache, to speed up the lookup of
# duplicate $refs.
@@ -160,11 +188,51 @@ def _GetInstanceForBranch(channel_name, local_path):
cache_factory,
ref_resolver_factory,
PUBLIC_TEMPLATE_PATH,
- PRIVATE_TEMPLATE_PATH)
+ PRIVATE_TEMPLATE_PATH,
+ BRANCH_UTILITY.GetBranchAndVersionForAllChannels())
example_zipper = ExampleZipper(file_system,
cache_factory,
DOCS_PATH)
+ #hacky solution for creating a bunch of memcaches in ChromeVersionDataSource
+ def _CreateMemcacheForBranch(branch_number):
+ """Passed to the global instance of chromeVersionDataSource. Allows for
+ the creation of api_data_sources linked to |branch_number|, which is the
+ maximum branch number from a given version of chrome.
+ """
+ branch_memcache = InMemoryObjectStore(branch_number)
+ file_system = _CreateMemcacheFileSystem(branch_number, branch_memcache)
+ cache_factory = CompiledFileSystem.Factory(
+ file_system,
+ branch_memcache,
+ branch_number)
+ api_list_data_source_factory = APIListDataSource.Factory(
+ cache_factory,
+ file_system,
+ API_PATH,
+ PUBLIC_TEMPLATE_PATH)
+ api_data_source_factory = APIDataSource.Factory(cache_factory,
+ API_PATH)
+ ref_resolver_factory = ReferenceResolver.Factory(
+ api_data_source_factory,
+ api_list_data_source_factory,
+ branch_memcache)
+ api_data_source_factory.SetReferenceResolverFactory(ref_resolver_factory)
+ samples_data_source_factory = SamplesDataSource.Factory(
+ channel_name,
+ file_system,
+ GITHUB_FILE_SYSTEM,
+ cache_factory,
+ GITHUB_COMPILED_FILE_SYSTEM,
+ ref_resolver_factory,
+ EXAMPLES_PATH)
+ api_data_source_factory.SetSamplesDataSourceFactory(
+ samples_data_source_factory)
+ return api_data_source_factory.Create(None)
+
+ CHROME_VERSION_DATA_SOURCE.SetCreateMemcacheForBranch(
cduvall 2013/03/21 18:43:53 Can you just pass this into the ChromeVersionDataS
epeterson 2013/03/25 19:35:11 Done. Yep.
+ _CreateMemcacheForBranch)
+
instance = ServerInstance(template_data_source_factory,
example_zipper,
cache_factory)
@@ -262,11 +330,12 @@ class Handler(webapp.RequestHandler):
# be called. The same is then done separately with the apps samples page,
# since it pulls its data from Github.
channel = path.split('/')[-1]
- branch = BRANCH_UTILITY.GetBranchNumberForChannelName(channel)
+ branch = BRANCH_UTILITY.GetBranchAndVersionForChannelName(channel)['branch']
logging.info('Running cron job for %s.' % branch)
branch_memcache = InMemoryObjectStore(branch)
file_system = _CreateMemcacheFileSystem(branch, branch_memcache)
- factory = CompiledFileSystem.Factory(file_system, branch_memcache)
+ factory = CompiledFileSystem.Factory(file_system,
cduvall 2013/03/21 18:43:53 revert
epeterson 2013/03/25 19:35:11 Done.
+ branch_memcache)
needs_render = self._ValueHolder(False)
invalidation_cache = factory.Create(lambda _, __: needs_render.Set(True),

Powered by Google App Engine
This is Rietveld 408576698