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

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

Issue 344453003: Docserver: separate models for apps and extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase/Add comment Created 6 years, 6 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 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 from itertools import groupby 5 from itertools import groupby
6 from operator import itemgetter 6 from operator import itemgetter
7 import posixpath 7 import posixpath
8 8
9 from data_source import DataSource 9 from data_source import DataSource
10 from extensions_paths import JSON_TEMPLATES, PUBLIC_TEMPLATES 10 from extensions_paths import JSON_TEMPLATES, PUBLIC_TEMPLATES
11 from future import Future 11 from future import Future
12 from platform_util import GetPlatforms
12 13
13 14
14 class WhatsNewDataSource(DataSource): 15 class WhatsNewDataSource(DataSource):
15 ''' This class creates a list of "what is new" by chrome version. 16 ''' This class creates a list of "what is new" by chrome version.
16 ''' 17 '''
17 18
18 def __init__(self, server_instance, _): 19 def __init__(self, server_instance, _):
19 self._parse_cache = server_instance.compiled_fs_factory.ForJson( 20 self._parse_cache = server_instance.compiled_fs_factory.ForJson(
20 server_instance.host_file_system_provider.GetTrunk()) 21 server_instance.host_file_system_provider.GetTrunk())
21 self._object_store = server_instance.object_store_creator.Create( 22 self._object_store = server_instance.object_store_creator.Create(
22 WhatsNewDataSource) 23 WhatsNewDataSource)
23 self._api_models = server_instance.api_models 24 self._platform_bundle = server_instance.platform_bundle
24 self._availability_finder = server_instance.availability_finder
25 self._api_categorizer = server_instance.api_categorizer
26 25
27 def _GenerateChangesListWithVersion(self, platform, whats_new_json): 26 def _GenerateChangesListWithVersion(self, platform, whats_new_json):
28 return [{ 27 return [{
29 'id': change_id, 28 'id': change_id,
30 'type': change['type'], 29 'type': change['type'],
31 'description': change['description'], 30 'description': change['description'],
32 'version': change['version'] 31 'version': change['version']
33 } for change_id, change in whats_new_json.iteritems()] 32 } for change_id, change in whats_new_json.iteritems()]
34 33
35 def _GetAPIVersion(self, platform, api_name): 34 def _GetAPIVersion(self, platform, api_name):
36 version = None 35 version = None
37 category = self._api_categorizer.GetCategory(platform, api_name) 36 category = self._platform_bundle.GetAPICategorizer(platform).GetCategory(
37 api_name)
38 if category == 'chrome': 38 if category == 'chrome':
39 channel_info = self._availability_finder.GetAPIAvailability( 39 channel_info = self._platform_bundle.GetAvailabilityFinder(
40 api_name).channel_info 40 platform).GetAPIAvailability(api_name).channel_info
41 channel = channel_info.channel 41 channel = channel_info.channel
42 if channel == 'stable': 42 if channel == 'stable':
43 version = channel_info.version 43 version = channel_info.version
44 return version 44 return version
45 45
46 def _GenerateAPIListWithVersion(self, platform): 46 def _GenerateAPIListWithVersion(self, platform):
47 data = [] 47 data = []
48 for api_name, api_model in self._api_models.IterModels(): 48 for api_name, api_model in self._platform_bundle.GetAPIModels(
49 platform).IterModels():
49 version = self._GetAPIVersion(platform, api_name) 50 version = self._GetAPIVersion(platform, api_name)
50 if version: 51 if version:
51 api = { 52 api = {
52 'name': api_name, 53 'name': api_name,
53 'description': api_model.description, 54 'description': api_model.description,
54 'version' : version, 55 'version' : version,
55 'type': 'apis', 56 'type': 'apis',
56 } 57 }
57 data.append(api) 58 data.append(api)
58 data.sort(key=itemgetter('version')) 59 data.sort(key=itemgetter('version'))
(...skipping 15 matching lines...) Expand all
74 } 75 }
75 for item in group: 76 for item in group:
76 item_type = item['type'] 77 item_type = item['type']
77 if item_type not in whats_new_by_version: 78 if item_type not in whats_new_by_version:
78 whats_new_by_version[item_type] = [] 79 whats_new_by_version[item_type] = []
79 whats_new_by_version[item_type].append(item) 80 whats_new_by_version[item_type].append(item)
80 platform_list.append(whats_new_by_version) 81 platform_list.append(whats_new_by_version)
81 return platform_list 82 return platform_list
82 83
83 def resolve(): 84 def resolve():
84 return { 85 return dict((platform, _MakeDictByPlatform(platform))
85 'apps': _MakeDictByPlatform('apps'), 86 for platform in GetPlatforms())
86 'extensions': _MakeDictByPlatform('extensions')
87 }
88 return Future(callback=resolve) 87 return Future(callback=resolve)
89 88
90 def _GetCachedWhatsNewData(self): 89 def _GetCachedWhatsNewData(self):
91 data = self._object_store.Get('whats_new_data').Get() 90 data = self._object_store.Get('whats_new_data').Get()
92 if data is None: 91 if data is None:
93 data = self._GenerateWhatsNewDict().Get() 92 data = self._GenerateWhatsNewDict().Get()
94 self._object_store.Set('whats_new_data', data) 93 self._object_store.Set('whats_new_data', data)
95 return data 94 return data
96 95
97 def get(self, key): 96 def get(self, key):
98 return self._GetCachedWhatsNewData().get(key) 97 return self._GetCachedWhatsNewData().get(key)
99 98
100 def Cron(self): 99 def Cron(self):
101 return self._GenerateWhatsNewDict() 100 return self._GenerateWhatsNewDict()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698