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

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

Issue 63203002: Docserver: Make the hand-written Cron methods run first rather than last, since (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: jeffrey 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 from itertools import ifilter 5 from itertools import ifilter
6 from operator import itemgetter 6 from operator import itemgetter
7 7
8 from data_source import DataSource 8 from data_source import DataSource
9 import features_utility as features 9 import features_utility as features
10 from future import Gettable, Future
10 from svn_constants import PRIVATE_TEMPLATE_PATH 11 from svn_constants import PRIVATE_TEMPLATE_PATH
11 from third_party.json_schema_compiler.json_parse import Parse 12 from third_party.json_schema_compiler.json_parse import Parse
12 13
13 def _ListifyPermissions(permissions): 14 def _ListifyPermissions(permissions):
14 '''Filter out any permissions that do not have a description or with a name 15 '''Filter out any permissions that do not have a description or with a name
15 that ends with Private then sort permissions features by name into a list. 16 that ends with Private then sort permissions features by name into a list.
16 ''' 17 '''
17 def filter_permissions(perm): 18 def filter_permissions(perm):
18 return 'description' in perm and not perm['name'].endswith('Private') 19 return 'description' in perm and not perm['name'].endswith('Private')
19 20
(...skipping 23 matching lines...) Expand all
43 '''Load and format permissions features to be used by templates. 44 '''Load and format permissions features to be used by templates.
44 ''' 45 '''
45 def __init__(self, server_instance, request): 46 def __init__(self, server_instance, request):
46 self._features_bundle = server_instance.features_bundle 47 self._features_bundle = server_instance.features_bundle
47 self._object_store = server_instance.object_store_creator.Create( 48 self._object_store = server_instance.object_store_creator.Create(
48 PermissionsDataSource) 49 PermissionsDataSource)
49 self._template_cache = server_instance.compiled_fs_factory.ForTemplates( 50 self._template_cache = server_instance.compiled_fs_factory.ForTemplates(
50 server_instance.host_file_system_provider.GetTrunk()) 51 server_instance.host_file_system_provider.GetTrunk())
51 52
52 def _CreatePermissionsData(self): 53 def _CreatePermissionsData(self):
53 api_features = self._features_bundle.GetAPIFeatures() 54 api_features_future = self._features_bundle.GetAPIFeatures()
54 permission_features = self._features_bundle.GetPermissionFeatures() 55 permission_features_future = self._features_bundle.GetPermissionFeatures()
56 def resolve():
57 permission_features = permission_features_future.Get()
58 _AddDependencyDescriptions(permission_features, api_features_future.Get())
55 59
56 def filter_for_platform(permissions, platform): 60 # Turn partial templates into descriptions, ensure anchors are set.
57 return _ListifyPermissions(features.Filtered(permissions, platform)) 61 for permission in permission_features.values():
62 if not 'anchor' in permission:
63 permission['anchor'] = permission['name']
64 if 'partial' in permission:
65 permission['description'] = self._template_cache.GetFromFile('%s/%s' %
66 (PRIVATE_TEMPLATE_PATH, permission['partial'])).Get()
67 del permission['partial']
58 68
59 _AddDependencyDescriptions(permission_features, api_features) 69 def filter_for_platform(permissions, platform):
60 # Turn partial templates into descriptions, ensure anchors are set. 70 return _ListifyPermissions(features.Filtered(permissions, platform))
61 for permission in permission_features.values(): 71 return {
62 if not 'anchor' in permission: 72 'declare_apps': filter_for_platform(permission_features, 'apps'),
63 permission['anchor'] = permission['name'] 73 'declare_extensions': filter_for_platform(
64 if 'partial' in permission: 74 permission_features, 'extensions')
65 permission['description'] = self._template_cache.GetFromFile('%s/%s' % 75 }
66 (PRIVATE_TEMPLATE_PATH, permission['partial'])).Get() 76 return Future(delegate=Gettable(resolve))
67 del permission['partial']
68
69 return {
70 'declare_apps': filter_for_platform(permission_features, 'apps'),
71 'declare_extensions': filter_for_platform(
72 permission_features, 'extensions')
73 }
74 77
75 def _GetCachedPermissionsData(self): 78 def _GetCachedPermissionsData(self):
76 data = self._object_store.Get('permissions_data').Get() 79 data = self._object_store.Get('permissions_data').Get()
77 if data is None: 80 if data is None:
78 data = self._CreatePermissionsData() 81 data = self._CreatePermissionsData().Get()
79 self._object_store.Set('permissions_data', data) 82 self._object_store.Set('permissions_data', data)
80 return data 83 return data
81 84
82 def Cron(self): 85 def Cron(self):
83 # TODO(kalman): Implement this. 86 return self._CreatePermissionsData()
84 pass
85 87
86 def get(self, key): 88 def get(self, key):
87 return self._GetCachedPermissionsData().get(key) 89 return self._GetCachedPermissionsData().get(key)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698