Example #1
0
    def get(self):
        """Presents nice recent statistics.

    It fetches data from the 'JSON' API.
    """
        # Preloads the data to save a complete request.
        resolution = self.request.params.get('resolution', 'hours')
        if resolution not in ('days', 'hours', 'minutes'):
            resolution = 'hours'
        duration = utils.get_request_as_int(self.request, 'duration', 120, 1,
                                            1000)

        description = _GVIZ_DESCRIPTION.copy()
        description.update(
            stats_framework_gviz.get_description_key(resolution))
        table = stats_framework.get_stats(stats.STATS_HANDLER, resolution,
                                          None, duration, True)
        params = {
            'duration':
            duration,
            'initial_data':
            gviz_api.DataTable(
                description, table).ToJSon(columns_order=_GVIZ_COLUMNS_ORDER),
            'now':
            datetime.datetime.utcnow(),
            'resolution':
            resolution,
        }
        self.response.write(template.render('isolate/stats.html', params))
Example #2
0
    def send_response(self, res_type_info):
        """Presents nice recent statistics.

    It preloads data in the template for maximum responsiveness and
    interactively fetches data from the JSON API.
    """
        # Preloads the data to save a complete request.
        resolution = self.request.params.get('resolution', 'hours')
        if resolution not in stats_framework.RESOLUTIONS:
            self.abort(404)
        duration = utils.get_request_as_int(self.request,
                                            'duration',
                                            default=120,
                                            min_value=1,
                                            max_value=1000)
        now = utils.get_request_as_datetime(self.request, 'now')
        now = now or datetime.datetime.utcnow()

        description = res_type_info.DESCRIPTION.copy()
        description.update(
            stats_framework_gviz.get_description_key(resolution))
        stats_data = stats_framework.get_stats(stats.STATS_HANDLER, resolution,
                                               now, duration, False)
        template_data = self.process_data(description, stats_data)
        template_data['duration'] = duration
        template_data['now'] = now
        template_data['resolution'] = resolution
        self.response.write(
            template.render(res_type_info.TEMPLATE, template_data))
Example #3
0
def get_json(request, response, handler, resolution, description, order):
    """Returns the statistic data as a Google Visualization compatible reply.

  The return can be either JSON or JSONP, depending if the header
  'X-DataSource-Auth' is set in the request.

  Note that this is not real JSON, as explained in
  developers.google.com/chart/interactive/docs/dev/implementing_data_source

  Exposes the data in the format described at
  https://developers.google.com/chart/interactive/docs/reference#dataparam
  and
  https://developers.google.com/chart/interactive/docs/querylanguage

  Arguments:
  - request: A webapp2.Request.
  - response: A webapp2.Response.
  - handler: A StatisticsFramework.
  - resolution: One of 'days', 'hours' or 'minutes'.
  - description: Dict describing the columns.
  - order: List describing the order to use for the columns.

  Raises:
    ValueError if a 400 should be returned.
  """
    tqx_args = process_tqx(request.params.get('tqx', ''))
    duration = utils.get_request_as_int(request, 'duration', 120, 1, 256)
    now = None
    now_text = request.params.get('now')
    if now_text:
        now = utils.parse_datetime(now_text)

    table = stats_framework.get_stats(handler, resolution, now, duration, True)
    return get_json_raw(request, response, table, description, order, tqx_args)
def get_json(request, response, handler, resolution, description, order):
  """Returns the statistic data as a Google Visualization compatible reply.

  The return can be either JSON or JSONP, depending if the header
  'X-DataSource-Auth' is set in the request.

  Note that this is not real JSON, as explained in
  developers.google.com/chart/interactive/docs/dev/implementing_data_source

  Exposes the data in the format described at
  https://developers.google.com/chart/interactive/docs/reference#dataparam
  and
  https://developers.google.com/chart/interactive/docs/querylanguage

  Arguments:
  - request: A webapp2.Request.
  - response: A webapp2.Response.
  - handler: A StatisticsFramework.
  - resolution: One of 'days', 'hours' or 'minutes'.
  - description: Dict describing the columns.
  - order: List describing the order to use for the columns.

  Raises:
    ValueError if a 400 should be returned.
  """
  tqx_args = process_tqx(request.params.get('tqx', ''))
  duration = utils.get_request_as_int(request, 'duration', 120, 1, 256)
  now = utils.get_request_as_datetime(request, 'now')

  table = stats_framework.get_stats(handler, resolution, now, duration, True)
  return get_json_raw(request, response, table, description, order, tqx_args)
Example #5
0
    def send_response(self, res_type_info, resolution):
        if resolution not in stats_framework.RESOLUTIONS:
            self.abort(404)

        duration = utils.get_request_as_int(self.request, "duration", default=120, min_value=1, max_value=1000)
        now = utils.get_request_as_datetime(self.request, "now")
        description = res_type_info.DESCRIPTION.copy()
        description.update(stats_framework_gviz.get_description_key(resolution))
        stats_data = stats_framework.get_stats(stats.STATS_HANDLER, resolution, now, duration, False)
        tqx_args = tqx_args = stats_framework_gviz.process_tqx(self.request.params.get("tqx", ""))
        try:
            stats_framework_gviz.get_json_raw(
                self.request, self.response, self.get_table(stats_data), description, res_type_info.ORDER, tqx_args
            )
        except ValueError as e:
            self.abort(400, str(e))
Example #6
0
  def get(self):
    """Presents nice recent statistics.

    It fetches data from the 'JSON' API.
    """
    # Preloads the data to save a complete request.
    resolution = self.request.params.get('resolution', 'hours')
    duration = utils.get_request_as_int(self.request, 'duration', 120, 1, 1000)

    description = _GVIZ_DESCRIPTION.copy()
    description.update(stats_framework_gviz.get_description_key(resolution))
    table = stats_framework.get_stats(
        stats.STATS_HANDLER, resolution, None, duration, True)
    params = {
      'duration': duration,
      'initial_data': gviz_api.DataTable(description, table).ToJSon(
          columns_order=_GVIZ_COLUMNS_ORDER),
      'now': datetime.datetime.utcnow(),
      'resolution': resolution,
    }
    self.response.write(template.render('isolate/stats.html', params))
Example #7
0
    def send_response(self, res_type_info):
        """Presents nice recent statistics.

    It preloads data in the template for maximum responsiveness and
    interactively fetches data from the JSON API.
    """
        # Preloads the data to save a complete request.
        resolution = self.request.params.get("resolution", "hours")
        if resolution not in stats_framework.RESOLUTIONS:
            self.abort(404)
        duration = utils.get_request_as_int(self.request, "duration", default=120, min_value=1, max_value=1000)
        now = utils.get_request_as_datetime(self.request, "now")
        now = now or datetime.datetime.utcnow()

        description = res_type_info.DESCRIPTION.copy()
        description.update(stats_framework_gviz.get_description_key(resolution))
        stats_data = stats_framework.get_stats(stats.STATS_HANDLER, resolution, now, duration, False)
        template_data = self.process_data(description, stats_data)
        template_data["duration"] = duration
        template_data["now"] = now
        template_data["resolution"] = resolution
        self.response.write(template.render(res_type_info.TEMPLATE, template_data))
Example #8
0
    def send_response(self, res_type_info, resolution):
        if resolution not in stats_framework.RESOLUTIONS:
            self.abort(404)

        duration = utils.get_request_as_int(self.request,
                                            'duration',
                                            default=120,
                                            min_value=1,
                                            max_value=1000)
        now = utils.get_request_as_datetime(self.request, 'now')
        description = res_type_info.DESCRIPTION.copy()
        description.update(
            stats_framework_gviz.get_description_key(resolution))
        stats_data = stats_framework.get_stats(stats.STATS_HANDLER, resolution,
                                               now, duration, False)
        tqx_args = tqx_args = stats_framework_gviz.process_tqx(
            self.request.params.get('tqx', ''))
        try:
            stats_framework_gviz.get_json_raw(self.request, self.response,
                                              self.get_table(stats_data),
                                              description, res_type_info.ORDER,
                                              tqx_args)
        except ValueError as e:
            self.abort(400, str(e))