libraries/edge/response/jsontemplateresponse.py (27 lines of code) (raw):

import logging import json from xml.dom.minidom import * from jinja2 import Environment, Template from edge.dateutility import DateUtility from edge.opensearch.response import Response class JsonTemplateResponse(Response): def __init__(self): super(JsonTemplateResponse, self).__init__() self.env = Environment() self.env.trim_blocks = True self.env.autoescape = False self.variables = {} self.env.filters['convertISOTime'] = DateUtility.convertISOTime self.env.filters['jsonify'] = self.jsonify def setTemplate(self, template): self.template = self.env.from_string(template) def generate(self, pretty=False): if pretty: return json.dumps(json.loads(self.template.render(self.variables), strict=False), indent=3) else: return self.template.render(self.variables) def jsonify(self, value): if value or value == 0: return json.dumps(value) else: return "null"