PR#3828: better handling of deleted tags in kojiweb
Merges #3828 https://pagure.io/koji/pull-request/3828 Fixes: #3827 https://pagure.io/koji/issue/3827 taskinfo page fails on some deleted tags
This commit is contained in:
commit
bc597c256f
2 changed files with 45 additions and 15 deletions
|
|
@ -363,15 +363,21 @@ def index(environ, packageOrder='package_name', packageStart=None):
|
|||
|
||||
notifs = server.getBuildNotifications(user['id'])
|
||||
notifs.sort(key=lambda x: x['id'])
|
||||
# XXX Make this a multicall
|
||||
for notif in notifs:
|
||||
notif['package'] = None
|
||||
if notif['package_id']:
|
||||
notif['package'] = server.getPackage(notif['package_id'])
|
||||
with server.multicall() as m:
|
||||
for notif in notifs:
|
||||
notif['package'] = None
|
||||
if notif['package_id']:
|
||||
notif['package'] = m.getPackage(notif['package_id'])
|
||||
|
||||
notif['tag'] = None
|
||||
if notif['tag_id']:
|
||||
notif['tag'] = server.getTag(notif['tag_id'])
|
||||
notif['tag'] = None
|
||||
if notif['tag_id']:
|
||||
# it's possible a notification could reference a deleted tag
|
||||
notif['tag'] = m.getTag(notif['tag_id'], event='auto')
|
||||
for notif in notifs:
|
||||
if notif['package']:
|
||||
notif['package'] = notif['package'].result
|
||||
if notif['tag']:
|
||||
notif['tag'] = notif['tag'].result
|
||||
values['notifs'] = notifs
|
||||
|
||||
values['user'] = user
|
||||
|
|
@ -701,10 +707,10 @@ def taskinfo(environ, taskID):
|
|||
elif isinstance(tag_id, dict):
|
||||
return tag_id
|
||||
else:
|
||||
try:
|
||||
return server.getTag(tag_id, strict=True)
|
||||
except koji.GenericError:
|
||||
return {'name': "%d (deleted)" % tag_id, 'id': None}
|
||||
info = server.getTag(tag_id, event='auto')
|
||||
if info and 'revoke_event' in info:
|
||||
info['name'] = "%(name)s (deleted)" % info
|
||||
return info
|
||||
|
||||
if 'root' in params:
|
||||
params['build_tag'] = _get_tag(params.pop('root'))
|
||||
|
|
@ -998,9 +1004,14 @@ def taginfo(environ, tagID, all='0', packageOrder='package_name', packageStart=N
|
|||
server = _getServer(environ)
|
||||
|
||||
tagID = _convert_if_int(tagID)
|
||||
tag = server.getTag(tagID, strict=True)
|
||||
tag = server.getTag(tagID, strict=True, event='auto')
|
||||
|
||||
values['title'] = tag['name'] + ' | Tag Info'
|
||||
values['tag'] = tag
|
||||
values['tagID'] = tag['id']
|
||||
if 'revoke_event' in tag:
|
||||
values['delete_ts'] = server.getEvent(tag['revoke_event'])['ts']
|
||||
return _genHTML(environ, 'taginfo_deleted.chtml')
|
||||
|
||||
all = int(all)
|
||||
|
||||
|
|
@ -1026,8 +1037,6 @@ def taginfo(environ, tagID, all='0', packageOrder='package_name', packageStart=N
|
|||
destTargets = server.getBuildTargets(destTagID=tag['id'])
|
||||
destTargets.sort(key=_sortbyname)
|
||||
|
||||
values['tag'] = tag
|
||||
values['tagID'] = tag['id']
|
||||
values['inheritance'] = inheritance
|
||||
values['tagsByChild'] = tagsByChild
|
||||
values['srcTargets'] = srcTargets
|
||||
|
|
|
|||
21
www/kojiweb/taginfo_deleted.chtml
Normal file
21
www/kojiweb/taginfo_deleted.chtml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#from kojiweb import util
|
||||
#from urllib.parse import quote
|
||||
#import pprint
|
||||
|
||||
#include "includes/header.chtml"
|
||||
|
||||
<h4>Information for deleted tag <a href="taginfo?tagID=$tag.id">$util.escapeHTML($tag.name)</a></h4>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Name</th><td>$util.escapeHTML($tag.name)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>ID</th><td>$tag.id</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Deleted</th><td>$util.formatTimeLong($delete_ts)</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
#include "includes/footer.chtml"
|
||||
Loading…
Add table
Add a link
Reference in a new issue