changeset 504:e2eef154f1af

Add pending/inprogress build counts to web ui.
author wbell
date Mon, 09 Mar 2009 01:07:15 +0000
parents a7c795920c4a
children 4caa400abe8e
files bitten/templates/bitten_config.html bitten/web_ui.py
diffstat 2 files changed, 60 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/templates/bitten_config.html
+++ b/bitten/templates/bitten_config.html
@@ -39,6 +39,11 @@
  
     <div id="content" class="build">
       <h1>$title</h1><py:choose test="page_mode"><py:when test="'overview'">
+      <py:if test="builds_pending">
+	<div>$builds_pending pending build<py:if test="builds_pending > 1">s</py:if>
+       </div></py:if><py:if test="builds_inprogress">
+	<div>$builds_inprogress in-progress build<py:if test="builds_inprogress > 1">s</py:if>
+      </div></py:if>
       <form id="prefs" method="get" action="">
         <div>
           <input type="checkbox" id="showall" name="show" value="all"
@@ -51,7 +56,18 @@
       </form><py:for each="config in configs">
       <h2 class="config ${not config.active and 'deactivated' or ''}">
         <a href="$config.href">$config.label</a>
-      </h2>
+      </h2><py:if test="config.builds_pending">
+	<div>$config.builds_pending pending
+	build<py:if test="config.builds_pending > 1">s</py:if>&nbsp;<i>(<py:for each="platform in config.platforms">
+        <py:if test="platform.builds_pending">
+	$platform.name: $platform.builds_pending
+        </py:if></py:for>)</i>
+       </div></py:if><py:if test="config.builds_inprogress">
+	<div>$config.builds_inprogress in-progress
+	build<py:if test="config.builds_inprogress > 1">s</py:if>&nbsp;<i>(<py:for each="platform in config.platforms"><py:if test="platform.builds_inprogress">
+	$platform.name: $platform.builds_inprogress
+        </py:if></py:for>)</i>
+      </div></py:if>
       <div py:if="config.description" class="description">
         $config.description
       </div><py:if test="len(config.builds)">
@@ -109,6 +125,16 @@
       <div py:if="config.description" class="description">
         $config.description
       </div>
+      <py:if test="config.builds_pending">
+	<div>$config.builds_pending pending build<py:if test="config.builds_pending > 1">s</py:if>&nbsp;<i>(<py:for each="platform in config.platforms">
+        <py:if test="platform.builds_pending">
+	$platform.name: $platform.builds_pending
+        </py:if></py:for>)</i>
+       </div></py:if><py:if test="config.builds_inprogress">
+	<div>$config.builds_inprogress in-progress build<py:if test="config.builds_inprogress > 1">s</py:if>&nbsp;<i>(<py:for each="platform in config.platforms"><py:if test="platform.builds_inprogress">
+	$platform.name: $platform.builds_inprogress
+        </py:if></py:for>)</i>
+      </div></py:if>
       <div id="charts"><py:for each="chart in config.charts">
         <object type="application/x-shockwave-flash"
                 width="320" height="240"
--- a/bitten/web_ui.py
+++ b/bitten/web_ui.py
@@ -141,12 +141,25 @@
             description = config.description
             if description:
                 description = wiki_to_html(description, self.env, req)
+
+            platforms_data = []
+            for platform in TargetPlatform.select(self.env, config=config.name):
+                pd = { 'name': platform.name,
+                       'id': platform.id,
+                       'builds_pending': len(list(Build.select(self.env, config=config.name, status=Build.PENDING, platform=platform.id))),
+                       'builds_inprogress': len(list(Build.select(self.env, config=config.name, status=Build.IN_PROGRESS, platform=platform.id)))
+                }
+                platforms_data.append(pd)
+		
             config_data = {
                 'name': config.name, 'label': config.label or config.name,
                 'active': config.active, 'path': config.path,
                 'description': description,
+		'builds_pending' : len(list(Build.select(self.env, config=config.name, status=Build.PENDING))),
+		'builds_inprogress' : len(list(Build.select(self.env, config=config.name, status=Build.IN_PROGRESS))),
                 'href': req.href.build(config.name),
-                'builds': []
+                'builds': [],
+                'platforms': platforms_data
             }
             configs.append(config_data)
             if not config.active:
@@ -182,6 +195,13 @@
 
         data['configs'] = configs
         data['page_mode'] = 'overview'
+
+        in_progress_builds = Build.select(self.env, status=Build.IN_PROGRESS)
+        pending_builds = Build.select(self.env, status=Build.PENDING)
+
+	data['builds_pending'] = len(list(pending_builds))
+	data['builds_inprogress'] = len(list(in_progress_builds))
+
         add_link(req, 'views', req.href.build(view='inprogress'),
                  'In Progress Builds')
         add_ctxtnav(req, 'In Progress Builds',
@@ -258,6 +278,10 @@
         description = config.description
         if description:
             description = wiki_to_html(description, self.env, req)
+
+        pending_builds = list(Build.select(self.env, config=config.name, status=Build.PENDING))
+        inprogress_builds = list(Build.select(self.env, config=config.name, status=Build.IN_PROGRESS))
+
         data['config'] = {
             'name': config.name, 'label': config.label, 'path': config.path,
             'min_rev': config.min_rev,
@@ -265,13 +289,19 @@
             'max_rev': config.max_rev,
             'max_rev_href': req.href.changeset(config.max_rev),
             'active': config.active, 'description': description,
-            'browser_href': req.href.browser(config.path)
+            'browser_href': req.href.browser(config.path),
+            'builds_pending' : len(pending_builds),
+	    'builds_inprogress' : len(inprogress_builds)
         }
 
         platforms = list(TargetPlatform.select(self.env, config=config_name,
                                                db=db))
         data['config']['platforms'] = [
-            {'name': platform.name, 'id': platform.id}
+            { 'name': platform.name,
+              'id': platform.id, 
+              'builds_pending': len(list(Build.select(self.env, config=config.name, status=Build.PENDING, platform=platform.id))),
+              'builds_inprogress': len(list(Build.select(self.env, config=config.name, status=Build.IN_PROGRESS, platform=platform.id)))
+              }
             for platform in platforms
         ]
 
Copyright (C) 2012-2017 Edgewall Software