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