Exemplo n.º 1
0
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)
Exemplo n.º 2
0
 def initialize(self, mongo_host=None):
     self._db = StatsDB(mongo_host)
     # Template loader for HTML requests
     self._loader = None