|
1 | 1 | {%extends "base.html"%} |
2 | 2 | {%load commitfest%} |
3 | 3 | {%block contents%} |
4 | | - {%include "patch_commands.inc"%} |
5 | | - <table class="table table-bordered"> |
6 | | - <tbody> |
7 | | - <tr> |
8 | | - <th>ID</th> |
9 | | - <td><a href="/patch/{{patch.id}}">{{patch.id}}</a></td> |
10 | | - </tr> |
11 | | - <tr> |
12 | | - <th>Title</th> |
13 | | - <td>{{patch.name}}</td> |
14 | | - </tr> |
15 | | - <tr> |
16 | | - <th>CI (CFBot)</th> |
17 | | - <td> |
18 | | - {%if not cfbot_branch %} |
19 | | - <span class="label label-default">Not processed</span></a> |
20 | | - {%elif cfbot_branch.needs_rebase_since %} |
21 | | - <a href="{{cfbot_branch.apply_url}}"> |
22 | | - <span class="label label-warning" title="View git apply logs">Needs rebase!</span></a> |
23 | | - Needs rebase {% cfsince cfbot_branch.needs_rebase_since %}. {%if cfbot_branch.failing_since and cfbot_branch.failing_since != cfbot_branch.needs_rebase_since %}Failing {% cfsince cfbot_branch.failing_since %}. {%endif%}<br>Additional links previous successfully applied patch (outdated):<br> |
24 | | - <a href="https://github.com/postgresql-cfbot/postgresql/compare/cf/{{patch.id}}~1...cf/{{patch.id}}" title="View previous successfully applied patch set on GitHub"><img class="github-logo" src="/media/commitfest/github-mark.svg"/></a> |
25 | | - <a href="https://cirrus-ci.com/github/postgresql-cfbot/postgresql/cf%2F{{patch.id}}"> |
26 | | - <span class="label label-default">Summary</span></a> |
27 | | - {%else%} |
28 | | - <a href="https://github.com/postgresql-cfbot/postgresql/compare/cf/{{patch.id}}~1...cf/{{patch.id}}" title="View last patch set on GitHub"><img class="github-logo" src="/media/commitfest/github-mark.svg"/></a> |
29 | | - <a href="https://cirrus-ci.com/github/postgresql-cfbot/postgresql/cf%2F{{patch.id}}"> |
30 | | - <span class="label label-default">Summary</span></a> |
31 | | - {%for c in cfbot_tasks %} |
32 | | - {%if c.status == 'COMPLETED'%} |
33 | | - <a href="https://cirrus-ci.com/task/{{c.task_id}}" title="{{c.task_name}}: {{c.status}}"><img src="/media/commitfest/new_success.svg"/></a> |
34 | | - {%elif c.status == 'CREATED' or c.status == 'SCHEDULED' %} |
35 | | - <a href="https://cirrus-ci.com/task/{{c.task_id}}" title="{{c.task_name}}: {{c.status}}"><img src="/media/commitfest/waiting_to_start.svg"/></a> |
36 | | - {%elif c.status == 'EXECUTING' %} |
37 | | - <a href="https://cirrus-ci.com/task/{{c.task_id}}" title="{{c.task_name}}: {{c.status}}"><img src="/media/commitfest/running.svg"/></a> |
38 | | - {%else %} |
39 | | - <a href="https://cirrus-ci.com/task/{{c.task_id}}" title="{{c.task_name}}: {{c.status}}"><img src="/media/commitfest/new_failure.svg"/></a> |
40 | | - {%endif%} |
41 | | - {%endfor%} |
42 | | - {%endif%} |
43 | | - {%if cfbot_branch %} |
44 | | - <button class="btn btn-default" title="This adds the following to your clipboard (needs to be run in an existing git repo): |
45 | | - git remote add commitfest https://github.com/postgresql-cfbot/postgresql.git |
46 | | - git fetch commitfest cf/{{patch.id}} |
47 | | - git checkout commitfest/cf/{{patch.id}}" onclick="addGitCheckoutToClipboard({{patch.id}})">Copy git checkout commands</button> |
48 | | - {%endif%} |
49 | | - </a> |
50 | | - </td> |
51 | | - </tr> |
52 | | - <tr> |
53 | | - <th>Stats (from CFBot)</th> |
54 | | - <td> |
55 | | - {%if cfbot_branch and cfbot_branch.commit_id %} |
56 | | - {%if cfbot_branch.version %} |
57 | | - Patch version: {{ cfbot_branch.version }}, |
58 | | - {%endif%} |
59 | | - Patch count: {{ cfbot_branch.patch_count }}, |
60 | | - First patch: <span class="additions">+{{ cfbot_branch.first_additions }}</span><span class="deletions">−{{ cfbot_branch.first_deletions }}</span>, |
61 | | - All patches: <span class="additions">+{{ cfbot_branch.all_additions }}</span><span class="deletions">−{{ cfbot_branch.all_deletions }}</span> |
62 | | - {%else%} |
63 | | - Unknown |
64 | | - {%endif%} |
65 | | - </tr> |
66 | | - <tr> |
67 | | - <th>Topic</th> |
68 | | - <td>{{patch.topic}}</td> |
69 | | - </tr> |
70 | | - <tr> |
71 | | - <th>Created</th> |
72 | | - <td>{{patch.created}}</td> |
73 | | - </tr> |
74 | | - <tr> |
75 | | - <th style="white-space: nowrap;">Last modified</th> |
76 | | - <td>{{patch.modified}} ({% cfwhen patch.modified %})</td> |
77 | | - </tr> |
78 | | - <tr> |
79 | | - <th style="white-space: nowrap;">Latest email</th> |
80 | | - <td>{%if patch.lastmail%}{{patch.lastmail}} ({% cfwhen patch.lastmail %}){%endif%}</td> |
81 | | - </tr> |
82 | | - <tr> |
83 | | - <th>Status</th> |
84 | | - <td>{%for c in patch_commitfests %} |
85 | | - <div style="margin-bottom: 3px;"><a href="/{{c.commitfest.id}}/">{{c.commitfest}}</a>: <span class="label label-{{c.status|patchstatuslabel}}">{{c.statusstring}}</span></div> |
86 | | - {%endfor%} |
87 | | - </td> |
88 | | - </tr> |
89 | | - <tr> |
90 | | - <th>Target version</th> |
91 | | - <td>{%if patch.targetversion%}<span class="label label-default">{{patch.targetversion}}</span>{%endif%}</td> |
92 | | - </tr> |
93 | | - <tr> |
94 | | - <th>Authors</th> |
95 | | - <td>{{patch.authors_string}}</td> |
96 | | - </tr> |
97 | | - <tr> |
98 | | - <th>Reviewers</th> |
99 | | - <td>{{patch.reviewers_string}}<a href="reviewer/{{is_reviewer|yesno:"remove,become"}}/" class="btn btn-default pull-right">{{is_reviewer|yesno:"Remove from reviewers,Become reviewer"}}</a></td> |
100 | | - </tr> |
101 | | - <tr> |
102 | | - <th>Committer</th> |
103 | | - <td>{%if patch.committer%}{{patch.committer.fullname}}{%endif%} |
104 | | - {%if is_committer%}<a href="committer/{{is_this_committer|yesno:"remove,become"}}/" class="btn btn-default pull-right">{{is_this_committer|yesno:"Unclaim as committer,Claim as committer"}}</a>{%endif%} |
105 | | - </td> |
106 | | - </tr> |
107 | | - <tr> |
108 | | - <th>Links</th> |
109 | | - {%if patch.wikilink%} |
110 | | - <a href="{{patch.wikilink}}">Wiki</a>{%endif%}{%if patch.gitlink%} |
111 | | - <a href="{{patch.gitlink}}">Git</a> |
112 | | - {%endif%}</td> |
113 | | - </tr> |
114 | | - <tr> |
115 | | - <th>Emails</th> |
116 | | - <td> |
117 | | - {%if user.is_authenticated%} |
118 | | - <div style="float:right"><button class="btn btn-default" onclick="attachThread({{cf.id}},{{patch.id}})">Attach thread</button></div> |
119 | | - {%else%} |
120 | | - <div style="float:right"><button class="btn btn-default" onclick="location.href='/account/login/?next=/{{cf.id}}/{{patch.id}}/%3Fattachthreadnow'">Attach thread</button></div> |
121 | | - {%endif%} |
122 | | - <dl> |
123 | | - {%for t in patch.mailthread_set.all%} |
124 | | - <dt><a href="https://www.postgresql.org/message-id/flat/{{t.messageid}}">{{t.subject}}</a> <button type="button" class="close close-nofloat" title="Detach this thread" onclick="detachThread({{cf.id}},{{patch.id}},'{{t.messageid}}')">×</button></dt> |
125 | | - <dd> |
126 | | - First at <a href="https://www.postgresql.org/message-id/{{t.messageid}}">{{t.firstmessage}}</a> by {{t.firstauthor|hidemail}}<br/> |
127 | | - Latest at <a href="https://www.postgresql.org/message-id/{{t.latestmsgid}}">{{t.latestmessage}}</a> by {{t.latestauthor|hidemail}}<br/> |
128 | | - {%for ta in t.mailthreadattachment_set.all%} |
129 | | - {%if forloop.first%} |
130 | | - Latest attachment (<a href="https://www.postgresql.org/message-id/attachment/{{ta.attachmentid}}/{{ta.filename}}">{{ta.filename}}</a>) at <a href="https://www.postgresql.org/message-id/{{ta.messageid}}">{{ta.date}}</a> from {{ta.author|hidemail}} <button type="button" class="btn btn-default btn-xs" data-toggle="collapse" data-target="#att{{t.pk}}" title="Show all attachments"><i class="glyphicon glyphicon-plus"></i></button> |
131 | | - <div id="att{{t.pk}}" class="collapse"> |
132 | | - {%endif%} |
133 | | - Attachment (<a href="https://www.postgresql.org/message-id/attachment/{{ta.attachmentid}}/{{ta.filename}}">{{ta.filename}}</a>) at <a href="https://www.postgresql.org/message-id/{{ta.messageid}}">{{ta.date}}</a> from {{ta.author|hidemail}} (Patch: {{ta.ispatch|yesno:"Yes,No,Pending check"}})<br/> |
134 | | - {%if forloop.last%}</div>{%endif%} |
135 | | - {%endfor%} |
136 | | - <div> |
137 | | - {%for a in t.mailthreadannotation_set.all%} |
138 | | - {%if forloop.first%} |
139 | | - <h4>Annotations</h4> |
140 | | - <table class="table table-bordered table-striped table-condensed small"> |
141 | | - <thead> |
142 | | - <tr> |
143 | | - <th>When</th> |
144 | | - <th>Who</th> |
145 | | - <th>Mail</th> |
146 | | - <th>Annotation</th> |
147 | | - </tr> |
148 | | - </thead> |
149 | | - <tbody> |
150 | | - {%endif%} |
151 | | - <tr> |
152 | | - <td>{{a.date}}</td> |
153 | | - <td style="white-space: nowrap">{{a.user_string}}</td> |
154 | | - <td style="white-space: nowrap">From {{a.mailauthor}}<br/>at <a href="https://www.postgresql.org/message-id/{{a.msgid}}">{{a.maildate}}</a></td> |
155 | | - <td width="99%">{{a.annotationtext}} <button type="button" class="close" title="Delete this annotation" onclick="deleteAnnotation({{a.id}})">×</button></td> |
156 | | - </tr> |
157 | | - {%if forloop.last%} |
158 | | - </body> |
159 | | - </table> |
160 | | - {%endif%} |
161 | | - {%endfor%} |
162 | | - {%if user.is_authenticated%}<button class="btn btn-xs btn-default" onclick="addAnnotation({{t.id}})">Add annotation</button>{%endif%} |
163 | | - </div> |
164 | | - </dd> |
165 | | - {%endfor%} |
166 | | - </dl> |
167 | | - </td> |
168 | | - </tr> |
169 | | - <tr> |
170 | | - <th>History</th> |
171 | | - <td> |
172 | | - <div style="max-height: 200px; overflow-y: scroll;"> |
173 | | - <table class="table table-bordered table-striped table-condensed"> |
174 | | - <thead> |
175 | | - <tr> |
176 | | - <th>When</th> |
177 | | - <th>Who</th> |
178 | | - <th>What</th> |
179 | | - </tr> |
180 | | - </thead> |
181 | | - <tbody> |
182 | | - {%for h in patch.history %} |
183 | | - <tr> |
184 | | - <td style="white-space: nowrap;">{{h.date}}</td> |
185 | | - <td style="white-space: nowrap;">{{h.by_string}}</td> |
186 | | - <td width="99%">{{h.what}}</td> |
187 | | - </tr> |
188 | | - {%endfor%} |
189 | | - </tbody> |
190 | | - </table> |
191 | | - </div> |
192 | | - {%if user.is_authenticated%} |
193 | | - <a href="{{is_subscribed|yesno:"unsubscribe,subscribe"}}/" class="btn btn-default">{{is_subscribed|yesno:"Unsubscribe from patch update emails,Subscribe to patch update emails"}}</a> |
194 | | - {%endif%} |
195 | | - </td> |
196 | | - </tr> |
197 | | - </tbody> |
198 | | - </table> |
| 4 | + {%include "patch_administrative.inc"%} |
| 5 | + {%include "patch_workflow.inc"%} |
| 6 | + |
| 7 | + <div class="workflow"> |
| 8 | + <table class="table table-bordered"> |
| 9 | + <tbody> |
| 10 | + {%include "patch_tr_email.inc"%} |
| 11 | + {%include "patch_tr_cfbot.inc"%} |
| 12 | + <tr> |
| 13 | + <th>Links</th> |
| 14 | + <td> |
| 15 | + {%if patch.wikilink%} |
| 16 | + <a href="{{patch.wikilink}}">Wiki</a> |
| 17 | + {%endif%} |
| 18 | + {%if patch.gitlink%} |
| 19 | + <a href="{{patch.gitlink}}">Git</a> |
| 20 | + {%endif%} |
| 21 | + <a class="btn btn-default pull-right" href="edit/">Edit</a> |
| 22 | + </td> |
| 23 | + </tr> |
| 24 | + </tbody> |
| 25 | + </table> |
| 26 | + </div> |
199 | 27 |
|
200 | | - <div class="dropup" > |
201 | | - {%include "patch_commands.inc"%} |
| 28 | + <div> |
| 29 | + <button class="btn btn-default" data-toggle="collapse" data-target="#history-table">Toggle History Table</button> |
| 30 | + <button class="btn btn-default" data-toggle="collapse" data-target="#keyvalue-table">Toggle Key-Value Table</button> |
202 | 31 | </div> |
203 | 32 |
|
| 33 | + <div id="history-table" class="table table-bordered"> |
| 34 | + <h3>History</h3> |
| 35 | + <table class="table table-bordered table-striped table-condensed"> |
| 36 | + <thead> |
| 37 | + <tr> |
| 38 | + <th>When</th> |
| 39 | + <th>Who</th> |
| 40 | + <th>What</th> |
| 41 | + </tr> |
| 42 | + </thead> |
| 43 | + <tbody> |
| 44 | + {%for h in patch.history %} |
| 45 | + <tr> |
| 46 | + <td style="white-space: nowrap;">{{h.date}}</td> |
| 47 | + <td style="white-space: nowrap;">{{h.by_string}}</td> |
| 48 | + <td width="99%">{{h.what}}</td> |
| 49 | + </tr> |
| 50 | + {%endfor%} |
| 51 | + </tbody> |
| 52 | + </table> |
| 53 | + </div> |
| 54 | + |
| 55 | +{%include "patch_table_keyvalue.inc"%} |
| 56 | + |
204 | 57 | {%comment%}commit dialog{%endcomment%} |
205 | 58 | <div class="modal fade" id="commitModal" role="dialog"> |
206 | 59 | <div class="modal-dialog modal-lg"> |
|
0 commit comments