From 6c5d2da1a4c30129b257642f57f7b8add11e3163 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 1/20] repo request page in web ui --- diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index c35e256..18c6000 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -2680,6 +2680,27 @@ def repoinfo(environ, repoID): return _genHTML(environ, 'repoinfo.chtml') +def reporequest(environ, reqID): + values = _initValues(environ, 'Repo Request', 'tags') + server = _getServer(environ) + + req_id = int(reqID) + values['req_id'] = req_id + rows = server.repo.queryQueue([['id', '=', req_id]], '**') + if rows: + req = rows[0] + else: + req = None + if req['at_event']: + values['at_event'] = server.getEvent(req['at_event']) + elif req['min_event']: + values['min_event'] = server.getEvent(req['min_event']) + else: + # invalid, but technically not blocked in db + values['min_event'] = None + values['req'] = req + return _genHTML(environ, 'reporequest.chtml') + def activesession(environ, start=None, order=None): values = _initValues(environ, 'Active sessions', 'activesession') server = _getServer(environ) diff --git a/www/kojiweb/reporequest.chtml b/www/kojiweb/reporequest.chtml new file mode 100644 index 0000000..3848343 --- /dev/null +++ b/www/kojiweb/reporequest.chtml @@ -0,0 +1,34 @@ +#import koji +#from kojiweb import util + +#include "includes/header.chtml" + +

Information for repo request $req_id

+ +#if not $req +Repo request $req_id not found. +#else + + + + + + #if $req.at_event + + #elif $req.min_event + + #else + + #end if + #if $req.task_id + + + #end if + + + +
ID$req.id
Active$req.active
Priority$req.priority
Tag$req.tag_name
At specific event$at_event.id ($util.formatTimeLong($at_event.ts))
Minimum event$min_event.id ($util.formatTimeLong($min_event.ts))
Invalid eventUnable to determine event for request
Task ID$req.task_id ($util.taskState($req.task_state))
Tries$req.tries
Owner$req.owner_name
Created$util.formatTimeLong($req.create_ts)
Updated$util.formatTimeLong($req.update_ts)
+#end if + + +#include "includes/footer.chtml" From de23c8e8377f31fe62a2e50e72e911304ae807eb Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 2/20] link requests from repoinfo page --- diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index 18c6000..6aac80d 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -2675,8 +2675,9 @@ def repoinfo(environ, repoID): else: values['repo_json'] = os.path.join( pathinfo.repo(repo_info['id'], repo_info['tag_name']), 'repo.json') - num_buildroots = len(server.listBuildroots(repoID=repoID)) or 0 - values['numBuildroots'] = num_buildroots + num_buildroots = server.listBuildroots(repoID=repoID, queryOpts={'countOnly': True}) + values['numBuildroots'] = num_buildroots + values['requests'] = server.repo.queryQueue([['repo_id', '=', repoID]], ['id']) return _genHTML(environ, 'repoinfo.chtml') diff --git a/www/kojiweb/repoinfo.chtml b/www/kojiweb/repoinfo.chtml index 0f07b94..1fab544 100644 --- a/www/kojiweb/repoinfo.chtml +++ b/www/kojiweb/repoinfo.chtml @@ -21,6 +21,13 @@ #end if Dist repo?#if $repo.dist then 'yes' else 'no'# Number of buildroots: $numBuildroots + #if $requests + Fulfills requests: + #for req in $requests + $req.id + #end for + + #end if #else Repo $repo_id not found. diff --git a/www/kojiweb/reporequest.chtml b/www/kojiweb/reporequest.chtml index 3848343..be8323a 100644 --- a/www/kojiweb/reporequest.chtml +++ b/www/kojiweb/reporequest.chtml @@ -20,6 +20,9 @@ Repo request $req_id not found. #else Invalid eventUnable to determine event for request #end if + #if $req.repo_id + Fulfilled by repo$req.repo_id + #end if #if $req.task_id Task ID$req.task_id ($util.taskState($req.task_state)) Tries$req.tries From 71f63fd977e9b7d6046ff6237f2fbd18f64573a1 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 3/20] show begin/end events for repos --- diff --git a/www/kojiweb/repoinfo.chtml b/www/kojiweb/repoinfo.chtml index 1fab544..2e857e6 100644 --- a/www/kojiweb/repoinfo.chtml +++ b/www/kojiweb/repoinfo.chtml @@ -14,7 +14,14 @@ #end if #set $state = $util.repoState($repo.state) State$state - Event$repo.create_event ($util.formatTimeLong($repo.create_ts)) + Created from Event$repo.create_event ($util.formatTimeLong($repo.create_ts)) + #if $repo.begin_event + #if $repo.end_event + Event range$repo.begin_event ... $repo.end_event + #else + Event range$repo.begin_event ... + #end if + #end if #if $repo.state != koji.REPO_STATES['DELETED'] URLrepodata Repo jsonrepo.json From 14ab5fb5dc0f824275b77b201d346baa4cd331ae Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 4/20] show opts info --- diff --git a/www/kojiweb/repoinfo.chtml b/www/kojiweb/repoinfo.chtml index 2e857e6..38279fc 100644 --- a/www/kojiweb/repoinfo.chtml +++ b/www/kojiweb/repoinfo.chtml @@ -1,3 +1,4 @@ +#import json #import koji #from kojiweb import util @@ -10,7 +11,7 @@ ID$repo.id Tag$repo.tag_name #if $repo.task_id - Task ID$repo.task_id + Task ID$repo.task_id ($util.taskState($repo.task_state)) #end if #set $state = $util.repoState($repo.state) State$state @@ -26,6 +27,9 @@ URLrepodata Repo jsonrepo.json #end if + #if $repo.custom_opts + Custom Opts$json.dumps($repo.custom_opts, indent=4) + #end if Dist repo?#if $repo.dist then 'yes' else 'no'# Number of buildroots: $numBuildroots #if $requests diff --git a/www/kojiweb/reporequest.chtml b/www/kojiweb/reporequest.chtml index be8323a..e67fe65 100644 --- a/www/kojiweb/reporequest.chtml +++ b/www/kojiweb/reporequest.chtml @@ -1,3 +1,4 @@ +#import json #import koji #from kojiweb import util @@ -20,6 +21,9 @@ Repo request $req_id not found. #else Invalid eventUnable to determine event for request #end if + #if $req.opts + Options$json.dumps($req.opts, indent=4) + #end if #if $req.repo_id Fulfilled by repo$req.repo_id #end if From 73f7777ebb84a82c4788c708c1d086041908c8c9 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 5/20] repo requests page --- diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index 6aac80d..a2d91af 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -2688,10 +2688,9 @@ def reporequest(environ, reqID): req_id = int(reqID) values['req_id'] = req_id rows = server.repo.queryQueue([['id', '=', req_id]], '**') - if rows: - req = rows[0] - else: - req = None + if not rows: + raise koji.GenericError("No such repo request: %s" % req_id) + req = rows[0] if req['at_event']: values['at_event'] = server.getEvent(req['at_event']) elif req['min_event']: @@ -2702,6 +2701,43 @@ def reporequest(environ, reqID): values['req'] = req return _genHTML(environ, 'reporequest.chtml') + +def reporequests(environ, active="true", tag=None, start=None, order=None): + values = _initValues(environ, 'Repo Requests', 'tags') + server = _getServer(environ) + + clauses = [] + desc_parts = [] + if active.lower() == 'all': + desc_parts.append('All repo requests') + elif active.lower() in ('false', 'no', '0'): + desc_parts.append('Inactive repo requests') + clauses.append(["active", False]) + active = 'false' + else: + desc_parts.append('Active repo requests') + clauses.append(["active", True]) + active = 'true' + if tag: + taginfo = server.getTag(tag, strict=True) + clauses.append(["tag_id", taginfo['id']]) + desc_parts.append('for tag %(name)s' % tag) + tag = taginfo['id'] + else: + tag = None + if order is None: + order = '-id' + values['desc'] = ' '.join(desc_parts) + values['order'] = order + values['active'] = active + values['tag'] = tag + kojiweb.util.paginateMethod(server, values, 'repo.queryQueue', + args=(clauses, '**'), + start=start, dataName='reqs', prefix='req', order=order, + optsarg='opts') + return _genHTML(environ, 'reporequests.chtml') + + def activesession(environ, start=None, order=None): values = _initValues(environ, 'Active sessions', 'activesession') server = _getServer(environ) diff --git a/www/kojiweb/reporequests.chtml b/www/kojiweb/reporequests.chtml new file mode 100644 index 0000000..2eb4378 --- /dev/null +++ b/www/kojiweb/reporequests.chtml @@ -0,0 +1,87 @@ +#from kojiweb import util + +#include "includes/header.chtml" + +

$desc

+ + + + + + + + + + + + + #if $len($reqs) > 0 + #for $req in $reqs + + + + + + #if $req.task_id + + #else + + #end if + #if $req.repo_id + + #else + + #end if + + #end for + #else + + + + #end if + + + +
+ #if $len($reqPages) > 1 +
+ Page: + +
+ #end if + #if $reqStart > 0 + <<< + #end if + #if $totalReqs != 0 + Reqs #echo $reqStart + 1 # through #echo $reqStart + $reqCount # of $totalReqs + #end if + #if $reqStart + $reqCount < $totalReqs + >>> + #end if +
ID $util.sortImage($self, 'id')Priority $util.sortImage($self, 'priority')Tag $util.sortImage($self, 'tag_name')ActiveTaskRepo
$req.id$req.priority$req.tag_name$req.active$req.task_id...$req.repo_id...
No repo requests
+ #if $len($reqPages) > 1 +
+ Page: + +
+ #end if + #if $reqStart > 0 + <<< + #end if + #if $totalReqs != 0 + Reqs #echo $reqStart + 1 # through #echo $reqStart + $reqCount # of $totalReqs + #end if + #if $reqStart + $reqCount < $totalReqs + >>> + #end if +
+ +#include "includes/footer.chtml" diff --git a/www/lib/kojiweb/util.py b/www/lib/kojiweb/util.py index 7aa0366..ab74e54 100644 --- a/www/lib/kojiweb/util.py +++ b/www/lib/kojiweb/util.py @@ -302,7 +302,7 @@ def sortImage(template, sortKey, orderVar='order'): @safe_return -def passthrough(template, *vars, prefix='&'): +def passthrough(template, *vars, prefix='&', toggleOrder=None): """ Construct a url parameter string from template vars @@ -319,6 +319,11 @@ def passthrough(template, *vars, prefix='&'): result = [] for var in vars: value = template.getVar(var, default=None) + if var == 'order' and toggleOrder is not None: + if value == toggleOrder: + value = '-' + value + else: + value = toggleOrder if value is not None: if isinstance(value, str): if value.isdigit(): @@ -334,7 +339,7 @@ def passthrough(template, *vars, prefix='&'): return '' -def passthrough_except(template, *exclude, prefix='&'): +def passthrough_except(template, *exclude, prefix='&', toggleOrder=None): """ Construct a string suitable for use as URL parameters. The template calling this method must have @@ -348,7 +353,7 @@ def passthrough_except(template, *exclude, prefix='&'): for var in template._PASSTHROUGH: if var not in exclude: passvars.append(var) - return passthrough(template, *passvars, prefix=prefix) + return passthrough(template, *passvars, prefix=prefix, toggleOrder=toggleOrder) def sortByKeyFuncNoneGreatest(key): @@ -399,7 +404,7 @@ def paginateList(values, data, start, dataName, prefix=None, order=None, noneGre def paginateMethod(server, values, methodName, args=None, kw=None, start=None, dataName=None, prefix=None, order=None, pageSize=50, - first_page_count=True): + first_page_count=True, optsarg='queryOpts'): """Paginate the results of the method with the given name when called with the given args and kws. The method must support the queryOpts keyword parameter, and pagination is done in the database. @@ -423,10 +428,10 @@ def paginateMethod(server, values, methodName, args=None, kw=None, if start == 0 and not first_page_count: totalRows = None else: - kw['queryOpts'] = {'countOnly': True} + kw[optsarg] = {'countOnly': True} totalRows = getattr(server, methodName)(*args, **kw) - kw['queryOpts'] = {'order': order, + kw[optsarg] = {'order': order, 'offset': start, 'limit': pageSize} data = getattr(server, methodName)(*args, **kw) From 16fdcae811dc968676a78680f07c1e852c4ec499 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 6/20] typo --- diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index a2d91af..45da5a9 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -2721,7 +2721,7 @@ def reporequests(environ, active="true", tag=None, start=None, order=None): if tag: taginfo = server.getTag(tag, strict=True) clauses.append(["tag_id", taginfo['id']]) - desc_parts.append('for tag %(name)s' % tag) + desc_parts.append('for tag %(name)s' % taginfo) tag = taginfo['id'] else: tag = None From 0b3d9e2df5e63ebc776fde82b2a8e47528100ddd Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 7/20] cleanup --- diff --git a/www/kojiweb/reporequests.chtml b/www/kojiweb/reporequests.chtml index 2eb4378..ccab570 100644 --- a/www/kojiweb/reporequests.chtml +++ b/www/kojiweb/reporequests.chtml @@ -1,7 +1,11 @@ #from kojiweb import util +#from kojiweb.util import passthrough as P #include "includes/header.chtml" + +#set $Pvars = ('active', 'tag', 'order') +

$desc

@@ -9,7 +13,7 @@ #if $len($reqPages) > 1 Page: - #for $pageNum in $reqPages #end for @@ -17,20 +21,20 @@ #end if #if $reqStart > 0 - <<< + <<< #end if #if $totalReqs != 0 Reqs #echo $reqStart + 1 # through #echo $reqStart + $reqCount # of $totalReqs #end if #if $reqStart + $reqCount < $totalReqs - >>> + >>> #end if - - - + + + From ee25b4138f80cb3b7ec8a46cded3c1f40a371cf1 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 8/20] use newer repo.get in web ui --- diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index 45da5a9..b41fbc3 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -1043,7 +1043,7 @@ def taginfo(environ, tagID, all='0', packageOrder='package_name', packageStart=N values['srcTargets'] = srcTargets values['destTargets'] = destTargets values['all'] = all - values['repo'] = server.getRepo(tag['id'], state=koji.REPO_READY) + values['repo'] = server.repo.get(tag['id']) values['external_repos'] = server.getExternalRepoList(tag['id']) child = None From 11eeedc0fea2686e3f6fa092ef3602742e63bcc8 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 9/20] repo request query form --- diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index b41fbc3..4e013ae 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -2709,7 +2709,7 @@ def reporequests(environ, active="true", tag=None, start=None, order=None): clauses = [] desc_parts = [] if active.lower() == 'all': - desc_parts.append('All repo requests') + desc_parts.append('Recent repo requests') elif active.lower() in ('false', 'no', '0'): desc_parts.append('Inactive repo requests') clauses.append(["active", False]) @@ -2719,10 +2719,10 @@ def reporequests(environ, active="true", tag=None, start=None, order=None): clauses.append(["active", True]) active = 'true' if tag: - taginfo = server.getTag(tag, strict=True) + taginfo = server.getTag(_convert_if_int(tag), strict=True) clauses.append(["tag_id", taginfo['id']]) desc_parts.append('for tag %(name)s' % taginfo) - tag = taginfo['id'] + tag = taginfo['name'] else: tag = None if order is None: diff --git a/www/kojiweb/reporequests.chtml b/www/kojiweb/reporequests.chtml index ccab570..cd63c94 100644 --- a/www/kojiweb/reporequests.chtml +++ b/www/kojiweb/reporequests.chtml @@ -8,8 +8,30 @@

$desc

ID $util.sortImage($self, 'id')Priority $util.sortImage($self, 'priority')Tag $util.sortImage($self, 'tag_name')ID $util.sortImage($self, 'id')Priority $util.sortImage($self, 'priority')Tag $util.sortImage($self, 'tag_name') Active Task Repo
+ + - + + + + From 7e46bb12de3c63b39f2812c9e36135ed160dbae3 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 11/20] show requests on taskinfo page --- diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index 2e6eb48..27ca6bc 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -792,6 +792,10 @@ def taskinfo(environ, taskID): else: values['perms'] = [] + values['requests'] = [] + if task['method'] == 'newRepo': + values['requests'] = server.repo.queryQueue([['task_id', '=', task['id']]], ['id']) + return _genHTML(environ, 'taskinfo.chtml') diff --git a/www/kojiweb/taskinfo.chtml b/www/kojiweb/taskinfo.chtml index 2ccee38..5c695b5 100644 --- a/www/kojiweb/taskinfo.chtml +++ b/www/kojiweb/taskinfo.chtml @@ -139,6 +139,13 @@ $value #end for #end if + #if $requests + + #end if From 9dce8db904fd3f2d1e7bc8359766b71bf4c789c9 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 12/20] quick links for tag filtering, plus fixes --- diff --git a/www/kojiweb/reporequests.chtml b/www/kojiweb/reporequests.chtml index cd63c94..50760cb 100644 --- a/www/kojiweb/reporequests.chtml +++ b/www/kojiweb/reporequests.chtml @@ -66,7 +66,12 @@ - + #if $req.task_id @@ -90,7 +95,7 @@ #if $len($reqPages) > 1 Page: - #for $pageNum in $reqPages #end for @@ -98,13 +103,13 @@ #end if #if $reqStart > 0 - <<< + <<< #end if #if $totalReqs != 0 Reqs #echo $reqStart + 1 # through #echo $reqStart + $reqCount # of $totalReqs #end if #if $reqStart + $reqCount < $totalReqs - >>> + >>> #end if From 178b9e8ebc5c76d32960359590f010e92e142e12 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 13/20] fixes --- diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index 27ca6bc..4cd401b 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -2724,7 +2724,7 @@ def reporequests(environ, active="true", tag=None, start=None, order=None): clauses.append(["active", True]) active = 'true' if tag: - taginfo = server.getTag(_convert_if_int(tag), strict=True) + taginfo = server.getTag(_convert_if_int(tag), strict=True, event='auto') clauses.append(["tag_id", taginfo['id']]) desc_parts.append('for tag %(name)s' % taginfo) tag = taginfo['name'] diff --git a/www/kojiweb/repoinfo.chtml b/www/kojiweb/repoinfo.chtml index 38279fc..b108156 100644 --- a/www/kojiweb/repoinfo.chtml +++ b/www/kojiweb/repoinfo.chtml @@ -15,6 +15,8 @@ #end if #set $state = $util.repoState($repo.state) + + #if $repo.begin_event #if $repo.end_event diff --git a/www/kojiweb/reporequests.chtml b/www/kojiweb/reporequests.chtml index 50760cb..9ba7cbe 100644 --- a/www/kojiweb/reporequests.chtml +++ b/www/kojiweb/reporequests.chtml @@ -46,7 +46,7 @@ <<< #end if #if $totalReqs != 0 - Reqs #echo $reqStart + 1 # through #echo $reqStart + $reqCount # of $totalReqs + Requests #echo $reqStart + 1 # through #echo $reqStart + $reqCount # of $totalReqs #end if #if $reqStart + $reqCount < $totalReqs >>> @@ -69,7 +69,7 @@ From 0ded9d090b17a8e5c7fdc47d6f86579d8c3f302c Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 14/20] prettier status --- diff --git a/www/kojiweb/reporequests.chtml b/www/kojiweb/reporequests.chtml index 9ba7cbe..f176a77 100644 --- a/www/kojiweb/reporequests.chtml +++ b/www/kojiweb/reporequests.chtml @@ -57,9 +57,9 @@ - + #if $len($reqs) > 0 #for $req in $reqs @@ -72,7 +72,6 @@ #end if - #if $req.task_id #else @@ -83,6 +82,16 @@ #else #end if + #end for #else From f408072f843e1c4d0b0038a84a55abd75b276c8a Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 15/20] tweak heading --- diff --git a/www/kojiweb/taskinfo.chtml b/www/kojiweb/taskinfo.chtml index 5c695b5..40d00ea 100644 --- a/www/kojiweb/taskinfo.chtml +++ b/www/kojiweb/taskinfo.chtml @@ -140,7 +140,8 @@ $value #end for #end if #if $requests - #if $req.task_id From 829f822ca6542894164708b6cee308a5e25c65c9 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 19/20] Use funnel icon for links to add query filters Icon from School Collection CC0 licensed https://www.svgrepo.com/svg/152218/funnel --- diff --git a/www/kojiweb/reporequests.chtml b/www/kojiweb/reporequests.chtml index d8555f5..7f85281 100644 --- a/www/kojiweb/reporequests.chtml +++ b/www/kojiweb/reporequests.chtml @@ -71,7 +71,7 @@ #if $req.task_id diff --git a/www/static/images/funnel.svg b/www/static/images/funnel.svg new file mode 100644 index 0000000..5a9530d --- /dev/null +++ b/www/static/images/funnel.svg @@ -0,0 +1,12 @@ + + + + + + + + + \ No newline at end of file From d6c17b20cefb92f54c7f6192081d25f3ac7dac99 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 20/20] adjust icon size --- diff --git a/www/static/images/funnel.svg b/www/static/images/funnel.svg index 5a9530d..2e1b054 100644 --- a/www/static/images/funnel.svg +++ b/www/static/images/funnel.svg @@ -1,6 +1,6 @@ - @@ -9,4 +9,4 @@ v200.6l64.5-58.5v-146.1c0-5,2-9.1,5-13.1l138.1-160.3L64.701,41.298L64.701,41.298z"/> - \ No newline at end of file +
+
+ + + + +
+ Active: + + + + Tag: + + +
+
+
+ #if $len($reqPages) > 1
Page: From 4bc134d2528f61ec57965faf57858a83e1f4faba Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 10/20] link requests from taskinfo --- diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index 4e013ae..2e6eb48 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -1045,6 +1045,7 @@ def taginfo(environ, tagID, all='0', packageOrder='package_name', packageStart=N values['all'] = all values['repo'] = server.repo.get(tag['id']) values['external_repos'] = server.getExternalRepoList(tag['id']) + values['request_count'] = server.repo.queryQueue([['tag_id', '=', tag['id']]], opts={'countOnly': True}) child = None if childID is not None: diff --git a/www/kojiweb/taginfo.chtml b/www/kojiweb/taginfo.chtml index 7568cb6..44e42f8 100644 --- a/www/kojiweb/taginfo.chtml +++ b/www/kojiweb/taginfo.chtml @@ -121,6 +121,10 @@
Repo requests$request_count
Packages $numPackages
For requests: + #for req in $requests + $req.id + #end for +
Created$util.formatTimeLong($task.create_ts)
$req.id $req.priority$req.tag_name + $req.tag_name + #if not $tag + + #end if + $req.active$req.task_id
State$state
Created$util.formatTimeLong($repo.creation_ts)
State changed$util.formatTimeLong($repo.state_ts)
Created from Event$repo.create_event ($util.formatTimeLong($repo.create_ts))
$req.tag_name #if not $tag - + #end if $req.activeID $util.sortImage($self, 'id') Priority $util.sortImage($self, 'priority') Tag $util.sortImage($self, 'tag_name')Active Task RepoStatus
$req.active$req.task_id... + ## simulate a more helpful status + #if $req.active + $util.imageTag('waiting') + #elif $req.repo_id + $util.imageTag('yes') + #else + $util.imageTag('no') + #end if +
For requests: +
For request: + ## we only expect one, but if we get more print them all #for req in $requests $req.id #end for From fad71ebcd80f75cac857b581c0469b203a6e574e Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 16/20] fix unit test --- diff --git a/tests/test_www/test_repoinfo.py b/tests/test_www/test_repoinfo.py index 2ab51ec..22a80fa 100644 --- a/tests/test_www/test_repoinfo.py +++ b/tests/test_www/test_repoinfo.py @@ -31,7 +31,7 @@ class TestRepoInfo(unittest.TestCase): webidx.repoinfo(self.environ, self.repo_id) self.server.repoInfo.assert_called_once_with(int(self.repo_id), strict=False) - self.server.listBuildroots.assert_called_once_with(repoID=int(self.repo_id)) + self.server.listBuildroots.assert_called_once_with(repoID=int(self.repo_id), queryOpts={'countOnly': True}) def test_repoinfo_not_dist(self): """Test repoinfo function - not dist repo""" @@ -43,4 +43,7 @@ class TestRepoInfo(unittest.TestCase): webidx.repoinfo(self.environ, self.repo_id) self.server.repoInfo.assert_called_once_with(int(self.repo_id), strict=False) - self.server.listBuildroots.assert_called_once_with(repoID=int(self.repo_id)) + self.server.listBuildroots.assert_called_once_with(repoID=int(self.repo_id), queryOpts={'countOnly': True}) + + +# the end From 3cfc102ca4a9113e57748fb6cd8114bb88698b6a Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 17/20] add explicit encoding --- diff --git a/www/kojiweb/reporequests.chtml b/www/kojiweb/reporequests.chtml index f176a77..ad69c29 100644 --- a/www/kojiweb/reporequests.chtml +++ b/www/kojiweb/reporequests.chtml @@ -1,3 +1,5 @@ +#encoding UTF-8 + #from kojiweb import util #from kojiweb.util import passthrough as P From 9b90f5c38ad4a1ddf5fba76ec273c9726712710a Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Feb 24 2025 23:10:11 +0000 Subject: [PATCH 18/20] add link title --- diff --git a/www/kojiweb/reporequests.chtml b/www/kojiweb/reporequests.chtml index ad69c29..d8555f5 100644 --- a/www/kojiweb/reporequests.chtml +++ b/www/kojiweb/reporequests.chtml @@ -71,7 +71,7 @@ $req.tag_name #if not $tag - + #end if $req.tag_name #if not $tag - + #end if