Chromium Code Reviews| Index: third_party/buildbot_8_4p1/buildbot/status/web/build.py |
| diff --git a/third_party/buildbot_8_4p1/buildbot/status/web/build.py b/third_party/buildbot_8_4p1/buildbot/status/web/build.py |
| index dd1842baa543cabaae958381718787bd50b9aa3d..5ee9ae66e03e05f10e759b798c6cf0bf31ac70ac 100644 |
| --- a/third_party/buildbot_8_4p1/buildbot/status/web/build.py |
| +++ b/third_party/buildbot_8_4p1/buildbot/status/web/build.py |
| @@ -121,13 +121,6 @@ class StatusResourceBuild(HtmlResource): |
| step['urls'] = map(lambda x:dict(url=x[1],logname=x[0]), s.getURLs().items()) |
| step['nest_level'] = s.getNestLevel() |
| - step['aliases'] = {} |
| - for base, aliases in s.getAliases().iteritems(): |
| - step['aliases'][base] = [{ |
| - 'text': a[0], |
| - 'url': a[1], |
| - } for a in aliases] |
| - |
| step['logs']= [] |
| for l in s.getLogs(): |
| @@ -137,6 +130,29 @@ class StatusResourceBuild(HtmlResource): |
| urllib.quote(logname, safe=''))), |
| 'name': logname }) |
| + step['aliases'] = {} |
| + seen_aliases = set() |
| + for base, aliases in s.getAliases().iteritems(): |
| + step['aliases'][base] = [{ |
| + 'text': a[0], |
| + 'url': a[1], |
| + } for a in aliases] |
| + seen_aliases.add(base) |
| + |
| + seen_aliases.difference_update(s['logname'] for s in step['urls']) |
| + seen_aliases.difference_update(s['name'] for s in step['logs']) |
| + |
| + # Append link-less log anchors for unbased aliases to attach to. |
| + # |
| + # We include an empty link so that custom templates that don't |
| + # support aliases don't crash when trying to render these anchors. |
| + # This will cause waterfalls that have alias data but haven't |
| + # updated their templates to render them to show blank links. This |
| + # is okay, since waterfalls that accept alias data should have |
| + # their templates updated to render this data. |
| + for base in sorted(seen_aliases): |
| + step['logs'].append({'name': base, 'link': ''}) |
| + |
|
dnj
2016/04/13 15:39:59
Note: because templates are immediately loaded pos
|
| ps = cxt['properties'] = [] |
| for name, value, source in b.getProperties().asList(): |
| value = str(value) |