OLD | NEW |
(Empty) | |
| 1 # Copyright 2015 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 |
| 5 import hashlib |
| 6 import logging |
| 7 import os |
| 8 import sys |
| 9 import webapp2 |
| 10 |
| 11 from google.appengine.ext import ndb |
| 12 from webapp2_extras import jinja2 |
| 13 |
| 14 CONFIG_DATA_KEY = 'config_data_key' |
| 15 |
| 16 |
| 17 def is_development_server(): |
| 18 return os.environ.get('SERVER_SOFTWARE', '').startswith('Development') |
| 19 |
| 20 |
| 21 class MonAcqData(ndb.Model): |
| 22 """Store the sensitive endpoint data.""" |
| 23 credentials = ndb.JsonProperty() |
| 24 url = ndb.StringProperty() |
| 25 scopes = ndb.StringProperty(repeated=True) |
| 26 headers = ndb.JsonProperty(default={}) |
| 27 |
| 28 |
| 29 def payload_stats(data): |
| 30 md5 = hashlib.md5() |
| 31 md5.update(data) |
| 32 md5hex = md5.hexdigest() |
| 33 return 'type=%s, %d bytes, md5=%s' % (type(data), len(data), md5hex) |
| 34 |
| 35 |
| 36 class BaseHandler(webapp2.RequestHandler): |
| 37 """Provide a cached Jinja environment to each request.""" |
| 38 |
| 39 def __init__(self, *args, **kwargs): |
| 40 webapp2.RequestHandler.__init__(self, *args, **kwargs) |
| 41 |
| 42 @staticmethod |
| 43 def jinja2_factory(app): |
| 44 template_dir = os.path.abspath( |
| 45 os.path.join(os.path.dirname(__file__), 'templates')) |
| 46 config = {'template_path': template_dir} |
| 47 jinja = jinja2.Jinja2(app, config=config) |
| 48 return jinja |
| 49 |
| 50 @webapp2.cached_property |
| 51 def jinja2(self): |
| 52 # Returns a Jinja2 renderer cached in the app registry. |
| 53 return jinja2.get_jinja2( |
| 54 app=self.app, factory=BaseHandler.jinja2_factory) |
| 55 |
| 56 def render_response(self, _template, **context): |
| 57 # Renders a template and writes the result to the response. |
| 58 rv = self.jinja2.render_template(_template, **context) |
| 59 self.response.write(rv) |
OLD | NEW |