diff options
Diffstat (limited to 'guix-qa-frontpage/server.scm')
-rw-r--r-- | guix-qa-frontpage/server.scm | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/guix-qa-frontpage/server.scm b/guix-qa-frontpage/server.scm index 4e88a3b..5c7023e 100644 --- a/guix-qa-frontpage/server.scm +++ b/guix-qa-frontpage/server.scm @@ -232,9 +232,27 @@ symbol-key #f)))) query-params)) + (latest-series-branches + (map + (match-lambda + ((_ . series) + (patchwork-series->branch series))) + latest-series)) + (branch-options + (sort (delete-duplicates + latest-series-branches) + string<?)) + (filtered-branches + (filter-map + (match-lambda + ((key . val) + (if (string=? key "branch") + val + #f))) + query-params)) (latest-series-with-overall-statuses (filter-map - (lambda (series) + (lambda (series branch) (let ((overall-status (with-sqlite-cache database @@ -243,13 +261,17 @@ #:store-computed-value? #f #:args (list (first series)) #:ttl 3600))) - (if (or (null? filtered-statuses) - (member overall-status - filtered-statuses)) + (if (and (or (null? filtered-statuses) + (member overall-status + filtered-statuses)) + (or (null? filtered-branches) + (member branch filtered-branches))) (append series - `((overall-status . ,overall-status))) + `((branch . ,branch) + (overall-status . ,overall-status))) #f))) - latest-series)) + latest-series + latest-series-branches)) (sorted-latest-series (sort latest-series-with-overall-statuses @@ -298,6 +320,8 @@ #:sxml (patches-view sorted-latest-series filtered-statuses + branch-options + filtered-branches systems-with-low-substitute-availability)))) (('GET "issue" (? (lambda (s) (string-suffix? ".svg" s)) number.svg)) (let* ((number |