Index: appengine_apps/trooper_o_matic/appengine_module/trooper_o_matic/tree.py |
diff --git a/appengine_apps/trooper_o_matic/appengine_module/trooper_o_matic/tree.py b/appengine_apps/trooper_o_matic/appengine_module/trooper_o_matic/tree.py |
deleted file mode 100644 |
index 0ef88a7e845b2450a38f03a1a070c7a73c7f2c8f..0000000000000000000000000000000000000000 |
--- a/appengine_apps/trooper_o_matic/appengine_module/trooper_o_matic/tree.py |
+++ /dev/null |
@@ -1,70 +0,0 @@ |
-# Copyright (c) 2014 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import jinja2 |
-import json |
-import os |
-import webapp2 |
- |
-from google.appengine.ext import ndb |
- |
-from appengine_module.trooper_o_matic import models |
-from appengine_module.trooper_o_matic import timezones |
- |
- |
-JINJA_ENVIRONMENT = jinja2.Environment( |
- loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), |
- 'templates')), |
- extensions=['jinja2.ext.autoescape'], |
- autoescape=True) |
- |
- |
-class TreeHandler(webapp2.RequestHandler): |
- """Displays summary of builds that did not meet SLO for the given Tree.""" |
- |
- @staticmethod |
- def _FormatGoogleChartsDateTime(dt): |
- pt = timezones.UtcToPacific(dt) |
- return 'Date(%d, %d, %d, %d, %d, %d)' % ( |
- pt.year, pt.month - 1, pt.day, pt.hour, pt.minute, pt.second) |
- |
- def get(self, tree): |
- tree_key = ndb.Key(models.Tree, tree) |
- data = models.BuildTimeStat.query(ancestor=tree_key).order( |
- -models.BuildTimeStat.timestamp).fetch(limit=30) |
- data.reverse() |
- |
- builds_cols = [ |
- {'id': 'timestamp', 'label': 'Time', 'type': 'datetime'}, |
- {'id': 'num_builds', 'label': 'Number of Builds', 'type': 'number'}, |
- {'id': 'num_over_median', 'label': 'Builds over 90m', 'type': 'number'}, |
- {'id': 'num_over_max', 'label': 'Builds over 480m', 'type': 'number'}, |
- ] |
- builds_rows = [{ |
- 'c': [ |
- {'v': self._FormatGoogleChartsDateTime(stat.timestamp), |
- 'key': stat.key.urlsafe()}, |
- {'v': stat.num_builds - (stat.num_over_median_slo + |
- stat.num_over_max_slo)}, |
- {'v': stat.num_over_median_slo - stat.num_over_max_slo}, |
- {'v': stat.num_over_max_slo}, |
- ]} for stat in data] |
- builds_graph = {'cols': builds_cols, 'rows': builds_rows} |
- |
- offenders = [ |
- # TODO: Ideally this timestamp would be from the build rather |
- # than the stat, but that's not in the model yet. |
- [stat.timestamp.isoformat(), offender.buildtime, |
- offender.master, offender.builder, offender.buildnumber] |
- for stat in data for offender in stat.slo_offenders |
- ] |
- |
- template = JINJA_ENVIRONMENT.get_template('tree.html') |
- self.response.write(template.render({ |
- 'offenders': json.dumps(offenders), |
- 'builds': json.dumps(builds_graph), |
- 'tree': tree.title(), |
- 'tree_key': tree, |
- 'slo_buildtime_max': models.SLO_BUILDTIME_MAX, |
- })) |