Variety of fixes all over the place
[blender-buildbot.git] / templates / builder.html
1 {% from 'build_line.html' import build_table %}
2 {% import 'forms.html' as forms %}
3
4 {% extends "layout.html" %}
5 {% block content %}
6
7 <h1>Builder {{ name }}</h1>
8
9 <p>(<a href="{{ path_to_root }}waterfall?show={{ name }}">view in waterfall</a>)</p>
10
11 {% if description %}
12   <div class="BuilderDescription">{{ description }}</div>
13 {% endif %}
14
15 <div class="column">
16
17 {% if current %}
18   <h2>Current Builds:</h2>
19   <ul>
20   {% for b in current %}
21     <li><a href="{{ b.link }}">{{ b.num }}</a>
22     {% if b.when %}
23       ETA: {{ b.when_time }} [{{ b.when }}]
24     {% endif %}
25
26     {{ b.current_step }}
27
28     {% if authz.advertiseAction('stopBuild', request) %}
29       {{ forms.stop_build(b.stop_url, authz, on_all=False, short=True, label='Build') }}
30     {% endif %}    
31     </li>
32   {% endfor %}
33   </ul>
34 {% else %}
35   <h2>No current builds</h2>
36 {% endif %}    
37  
38 {% if pending %}
39   <h2>Pending Build Requests:</h2>
40   <ul>
41   {% for b in pending %}
42     <li><small>({{ b.when }}, waiting {{ b.delay }})</small> 
43     
44     {% if authz.advertiseAction('cancelPendingBuild', request) %}
45       {{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=True, id=b.id) }}
46     {% endif %}    
47     
48     {% if b.num_changes < 4 %}
49         {% for c in b.changes %}{{ c.revision|shortrev(c.repo) }}
50         (<a href="{{ c.url }}">{{ c.who|email }}</a>){% if not loop.last %},{% endif %}
51         {% endfor %}
52     {% else %}
53         ({{ b.num_changes }} changes)
54     {% endif %}    
55
56       {% if 'owner' in b.properties %}
57         <b>Forced build</b>
58         by {{b.properties['owner'][0]}}
59         {% if 'reason' in b.properties %}
60           <small>{{b.properties['reason'][0]}}</small>
61         {% endif %}
62       {% endif %}
63     </li>
64   {% endfor %}
65   </ul>  
66   
67   {% if authz.advertiseAction('cancelPendingBuild', request) %}
68     {{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=False, id='all') }}
69   {% endif %}    
70      
71 {% else %}
72   <h2>No Pending Build Requests</h2>
73 {% endif %}
74
75 <h2>Recent Builds:</h2>
76
77 {{ build_table(recent) }}
78
79 <a href="?numbuilds={{numbuilds + 5}}">Show more</a>
80
81 </div>
82 <div class="column">
83
84 <h2>Buildslaves:</h2>
85 <table class="table table-striped table-hover box">
86 {% if slaves %}
87 <tr>
88   <th>Name</th>
89   <th>Status</th>
90   <th>Admin</th>
91 </tr>
92 {% endif %}
93 {% for s in slaves %}
94   <tr class="{{ loop.cycle('alt', '') }}">
95   <td><b><a href="{{ s.link|e }}">{{ s.name|e }}</a></b></td>
96   {% if s.connected %}
97     {% if s.paused %}
98       <td class="paused">paused</td>
99     {% else %}
100       <td class="idle">connected</td>
101     {% endif %}
102   {% else %}
103     <td class="offline">offline</td> 
104   {% endif %}
105   <td>{{ s.admin|email if s.admin else ""}}</td>
106   </tr>
107 {% else %}
108   <td>no slaves attached</td>
109 {% endfor %}
110 </table>
111
112 {% if authz.advertiseAction('pingBuilder', request) %}
113   <h2>Ping slaves</h2>
114   {{ forms.ping_builder(builder_url+"/ping", authz) }}
115 {% endif %}
116
117 {% if authz.advertiseAction('forceBuild', request) and force_schedulers != {} %}
118   <h2>Force build</h2>
119   {{ forms.force_build(builder_url+"/force", authz, request, False, force_schedulers=force_schedulers,default_props=default_props) }}
120 {% endif %}
121
122 </div>
123
124 {% endblock %}