class StatsHandler(tornado.web.RequestHandler): def initialize(self, mongo_host=None): self._db = StatsDB(mongo_host) # Template loader for HTML requests self._loader = None def _get_html(self, data): """ @param data: dict """ if not self._loader: path = os.path.join(os.path.dirname(__file__), "template") self._loader = template.Loader(path) context = {"data": data} html = self._loader.load("statsview.html").generate(**context) self.write(html) return def get(self): count = int(self.get_argument("count", 1000)) format = self.get_argument("format", "html") human = bool(self.get_argument("human", None)) data = {} stats = [] stats_cursor = self._db.find({}, None) for idx, stat in enumerate(stats_cursor): if count and idx > count: break item = {} for k, v in DB_API_MAP.items(): set_dotted(item, v, get_dotted(stat, k)) stats.append(item) if format == "html": return self._get_html(data) self.set_header("Content-Type", "application/json; charset=UTF-8") data["count"] = len(stats) data["stats"] = make_jsonable(stats, human) data = ujson.encode(data) self.write(data)
def initialize(self, mongo_host=None): self._db = StatsDB(mongo_host) # Template loader for HTML requests self._loader = None