Include locale in the JSON response for the packages page

Signed-off-by: Christopher Baines <mail@cbaines.net>
This commit is contained in:
Danjela Lura 2020-06-22 21:09:08 +02:00 committed by Christopher Baines
parent 0b4825427d
commit 5708b81002
4 changed files with 40 additions and 20 deletions

View file

@ -107,7 +107,8 @@
(define (select-package-metadata-by-revision-name-and-version (define (select-package-metadata-by-revision-name-and-version
conn revision-commit-hash name version locale) conn revision-commit-hash name version locale)
(define query " (define query "
SELECT translated_package_synopsis.synopsis, translated_package_descriptions.description, SELECT translated_package_synopsis.synopsis, translated_package_synopsis.locale,
translated_package_descriptions.description, translated_package_descriptions.locale,
package_metadata.home_page, package_metadata.home_page,
locations.file, locations.line, locations.column_number, locations.file, locations.line, locations.column_number,
(SELECT JSON_AGG((license_data.*)) (SELECT JSON_AGG((license_data.*))
@ -125,7 +126,8 @@ INNER JOIN packages
LEFT OUTER JOIN locations LEFT OUTER JOIN locations
ON package_metadata.location_id = locations.id ON package_metadata.location_id = locations.id
INNER JOIN ( INNER JOIN (
SELECT DISTINCT ON (package_description_sets.id) package_description_sets.id, package_descriptions.description SELECT DISTINCT ON (package_description_sets.id) package_description_sets.id,
package_descriptions.description, package_descriptions.locale
FROM package_descriptions FROM package_descriptions
INNER JOIN package_description_sets INNER JOIN package_description_sets
ON package_descriptions.id = ANY (package_description_sets.description_ids) ON package_descriptions.id = ANY (package_description_sets.description_ids)
@ -143,7 +145,8 @@ INNER JOIN (
) AS translated_package_descriptions ) AS translated_package_descriptions
ON package_metadata.package_description_set_id = translated_package_descriptions.id ON package_metadata.package_description_set_id = translated_package_descriptions.id
INNER JOIN ( INNER JOIN (
SELECT DISTINCT ON (package_synopsis_sets.id) package_synopsis_sets.id, package_synopsis.synopsis SELECT DISTINCT ON (package_synopsis_sets.id) package_synopsis_sets.id,
package_synopsis.synopsis, package_synopsis.locale
FROM package_synopsis FROM package_synopsis
INNER JOIN package_synopsis_sets INNER JOIN package_synopsis_sets
ON package_synopsis.id = ANY (package_synopsis_sets.synopsis_ids) ON package_synopsis.id = ANY (package_synopsis_sets.synopsis_ids)
@ -175,9 +178,9 @@ WHERE packages.id IN (
(map (map
(match-lambda (match-lambda
((synopsis description home-page file line column-number ((synopsis synopsis-locale description description-locale home-page file line column-number
license-json) license-json)
(list synopsis description home-page file line column-number (list synopsis synopsis-locale description description-locale home-page file line column-number
(if (string-null? license-json) (if (string-null? license-json)
#() #()
(json-string->scm license-json))))) (json-string->scm license-json)))))

View file

@ -59,7 +59,8 @@
(string-append " (string-append "
WITH data AS ( WITH data AS (
SELECT packages.name, packages.version, translated_package_synopsis.synopsis, SELECT packages.name, packages.version, translated_package_synopsis.synopsis,
translated_package_descriptions.description, package_metadata.home_page, translated_package_synopsis.locale, translated_package_descriptions.description,
translated_package_descriptions.locale, package_metadata.home_page,
locations.file, locations.line, locations.column_number, locations.file, locations.line, locations.column_number,
(SELECT JSON_AGG((license_data.*)) (SELECT JSON_AGG((license_data.*))
FROM ( FROM (
@ -77,7 +78,7 @@ WITH data AS (
ON package_metadata.location_id = locations.id ON package_metadata.location_id = locations.id
INNER JOIN ( INNER JOIN (
SELECT DISTINCT ON (package_synopsis_sets.id) package_synopsis_sets.id, SELECT DISTINCT ON (package_synopsis_sets.id) package_synopsis_sets.id,
package_synopsis.synopsis package_synopsis.synopsis, package_synopsis.locale
FROM package_synopsis_sets FROM package_synopsis_sets
INNER JOIN package_synopsis INNER JOIN package_synopsis
ON package_synopsis.id = ANY (package_synopsis_sets.synopsis_ids) ON package_synopsis.id = ANY (package_synopsis_sets.synopsis_ids)
@ -90,7 +91,7 @@ WITH data AS (
ON package_metadata.package_synopsis_set_id = translated_package_synopsis.id ON package_metadata.package_synopsis_set_id = translated_package_synopsis.id
INNER JOIN ( INNER JOIN (
SELECT DISTINCT ON (package_description_sets.id) package_description_sets.id, SELECT DISTINCT ON (package_description_sets.id) package_description_sets.id,
package_descriptions.description package_descriptions.description, package_descriptions.locale
FROM package_description_sets FROM package_description_sets
INNER JOIN package_descriptions INNER JOIN package_descriptions
ON package_descriptions.id = ANY (package_description_sets.description_ids) ON package_descriptions.id = ANY (package_description_sets.description_ids)
@ -142,7 +143,9 @@ WHERE data.name IN (SELECT name FROM package_names);"))
SELECT packages.name, SELECT packages.name,
packages.version, packages.version,
translated_package_synopsis.synopsis, translated_package_synopsis.synopsis,
translated_package_synopsis.locale,
translated_package_descriptions.description, translated_package_descriptions.description,
translated_package_descriptions.locale,
package_metadata.home_page, package_metadata.home_page,
locations.file, locations.line, locations.column_number, locations.file, locations.line, locations.column_number,
(SELECT JSON_AGG((license_data.*)) (SELECT JSON_AGG((license_data.*))
@ -161,7 +164,7 @@ LEFT OUTER JOIN locations
ON package_metadata.location_id = locations.id ON package_metadata.location_id = locations.id
INNER JOIN ( INNER JOIN (
SELECT DISTINCT ON (package_synopsis_sets.id) package_synopsis_sets.id, SELECT DISTINCT ON (package_synopsis_sets.id) package_synopsis_sets.id,
package_synopsis.synopsis package_synopsis.synopsis, package_synopsis.locale
FROM package_synopsis_sets FROM package_synopsis_sets
INNER JOIN package_synopsis INNER JOIN package_synopsis
ON package_synopsis.id = ANY (package_synopsis_sets.synopsis_ids) ON package_synopsis.id = ANY (package_synopsis_sets.synopsis_ids)
@ -174,7 +177,7 @@ INNER JOIN (
ON package_metadata.package_synopsis_set_id = translated_package_synopsis.id ON package_metadata.package_synopsis_set_id = translated_package_synopsis.id
INNER JOIN ( INNER JOIN (
SELECT DISTINCT ON (package_description_sets.id) package_description_sets.id, SELECT DISTINCT ON (package_description_sets.id) package_description_sets.id,
package_descriptions.description package_descriptions.description, package_descriptions.locale
FROM package_description_sets FROM package_description_sets
INNER JOIN package_descriptions INNER JOIN package_descriptions
ON package_descriptions.id = ANY (package_description_sets.description_ids) ON package_descriptions.id = ANY (package_description_sets.description_ids)

View file

@ -312,13 +312,14 @@
commit-hash))) commit-hash)))
(_ #f))) (_ #f)))
(define (texinfo->variants-alist s) (define (texinfo->variants-alist s locale)
(let ((stexi (texi-fragment->stexi s))) (let ((stexi (texi-fragment->stexi s)))
`((source . ,s) `((source . ,s)
(html . ,(with-output-to-string (html . ,(with-output-to-string
(lambda () (lambda ()
(sxml->html (stexi->shtml stexi))))) (sxml->html (stexi->shtml stexi)))))
(plain . ,(stexi->plain-text stexi))))) (plain . ,(stexi->plain-text stexi))
(locale . ,locale))))
(define (render-unknown-revision mime-types conn commit-hash) (define (render-unknown-revision mime-types conn commit-hash)
(case (most-appropriate-mime-type (case (most-appropriate-mime-type
@ -597,7 +598,7 @@
(packages (packages
. ,(list->vector . ,(list->vector
(map (match-lambda (map (match-lambda
((name version synopsis description home-page ((name version synopsis synopsis-locale description description-locale home-page
location-file location-line location-file location-line
location-column-number licenses) location-column-number licenses)
`((name . ,name) `((name . ,name)
@ -606,11 +607,11 @@
'()) '())
,@(if (member "synopsis" fields) ,@(if (member "synopsis" fields)
`((synopsis `((synopsis
. ,(texinfo->variants-alist synopsis))) . ,(texinfo->variants-alist synopsis synopsis-locale)))
'()) '())
,@(if (member "description" fields) ,@(if (member "description" fields)
`((description `((description
. ,(texinfo->variants-alist description))) . ,(texinfo->variants-alist description description-locale)))
'()) '())
,@(if (member "home-page" fields) ,@(if (member "home-page" fields)
`((home-page . ,home-page)) `((home-page . ,home-page))
@ -737,9 +738,10 @@
`((name . ,name) `((name . ,name)
(version . ,version) (version . ,version)
,@(match metadata ,@(match metadata
(((synopsis description home-page)) (((synopsis synopsis-locale description description-locale home-page file line column-number
`((synopsis . ,synopsis) licenses))
(description . ,description) `((synopsis . ,(texinfo->variants-alist synopsis synopsis-locale))
(description . ,(texinfo->variants-alist description description-locale))
(home-page . ,home-page)))) (home-page . ,home-page))))
(derivations . ,(list->vector (derivations . ,(list->vector
(map (match-lambda (map (match-lambda

View file

@ -199,6 +199,18 @@
(button (@ (type "submit") (button (@ (type "submit")
(class "btn btn-lg btn-primary")) (class "btn btn-lg btn-primary"))
"Update results"))))))) "Update results")))))))
(div
(@ (class "row"))
(div
(@ (class "col-sm-12"))
(a (@ (class "btn btn-default btn-lg pull-right")
(href ,(let ((query-params
(query-parameters->string query-parameters)))
(string-append header-link "/package/" name "/" version ".json"
(if (string-null? query-params)
""
(string-append "?" query-params))))))
"View JSON")))
(div (div
(@ (class "row")) (@ (class "row"))
(div (div
@ -215,7 +227,7 @@
(div (div
(@ (class "col-sm-12")) (@ (class "col-sm-12"))
,(match package-metadata ,(match package-metadata
(((synopsis description home-page file line column-number (((synopsis synopsis-locale description description-locale home-page file line column-number
licenses)) licenses))
`(dl `(dl
(@ (class "dl-horizontal")) (@ (class "dl-horizontal"))
@ -620,7 +632,7 @@
,@(let ((fields (assq-ref query-parameters 'field))) ,@(let ((fields (assq-ref query-parameters 'field)))
(map (map
(match-lambda (match-lambda
((name version synopsis description home-page ((name version synopsis _ description _ home-page
location-file location-line location-file location-line
location-column-number licenses) location-column-number licenses)
`(tr `(tr