13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved.
23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)# found in the LICENSE file.
43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochfrom api_data_source import APIDataSource
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochfrom api_list_data_source import APIListDataSource
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)from data_source import DataSource
8424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)from manifest_data_source import ManifestDataSource
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifrom owners_data_source import OwnersDataSource
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)from permissions_data_source import PermissionsDataSource
116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)from samples_data_source import SamplesDataSource
1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)from sidenav_data_source import SidenavDataSource
133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)from strings_data_source import StringsDataSource
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)from template_data_source import (
1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    ArticleDataSource, IntroDataSource, PartialDataSource)
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)from whats_new_data_source import WhatsNewDataSource
170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
19424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)_all_data_sources = {
20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  'apis': APIDataSource,
21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  'api_list': APIListDataSource,
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  'articles': ArticleDataSource,
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  'intros': IntroDataSource,
24424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  'manifest_source': ManifestDataSource,
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  'owners': OwnersDataSource,
2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  'partials': PartialDataSource,
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  'permissions': PermissionsDataSource,
286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  'samples': SamplesDataSource,
2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  'sidenavs': SidenavDataSource,
300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  'strings': StringsDataSource,
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  'whatsNew' : WhatsNewDataSource
32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}
333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)assert all(issubclass(cls, DataSource)
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)           for cls in _all_data_sources.itervalues())
374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidef GetDataSourceNames():
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return _all_data_sources.keys()
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccidef CreateDataSource(name, server_instance, request=None):
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  '''Create a single DataSource by name.'''
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  assert name in _all_data_sources
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return _all_data_sources[name](server_instance, request)
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)def CreateDataSources(server_instance, request=None):
5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  '''Create a dictionary of initialized DataSources. DataSources are
5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  initialized with |server_instance| and |request|. If the DataSources are
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  going to be used for Refresh, |request| should be omitted.
5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  The key of each DataSource is the name the template system will use to access
5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  the DataSource.
56424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  '''
574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return dict((name, cls(server_instance, request))
584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)              for name, cls in _all_data_sources.iteritems())
59