aboutsummaryrefslogtreecommitdiff
path: root/guix-qa-frontpage/server.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-qa-frontpage/server.scm')
-rw-r--r--guix-qa-frontpage/server.scm36
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