• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3# found in the LICENSE file.
4
5import logging
6import traceback
7
8from data_source import DataSource
9from extensions_paths import PRIVATE_TEMPLATES
10from file_system import FileNotFoundError
11from future import Future
12
13
14class TemplateDataSource(DataSource):
15  '''Provides a DataSource interface for compiled templates.
16  '''
17
18  def __init__(self, server_instance, _, partial_dir=PRIVATE_TEMPLATES):
19    self._template_cache = server_instance.compiled_fs_factory.ForTemplates(
20        server_instance.host_file_system_provider.GetTrunk())
21    self._partial_dir = partial_dir
22
23  def get(self, path):
24    try:
25      return self._template_cache.GetFromFile('%s/%s.html' %
26          (self._partial_dir, path)).Get()
27    except FileNotFoundError:
28      logging.warning(traceback.format_exc())
29      return None
30
31  def Cron(self):
32    # TODO(kalman): Implement this; probably by finding all files that can be
33    # compiled to templates underneath |self._partial_dir| and compiling them.
34    return Future(value=())
35