diff --git a/guix-data-service/model/package-metadata.scm b/guix-data-service/model/package-metadata.scm index f2319fc..032e706 100644 --- a/guix-data-service/model/package-metadata.scm +++ b/guix-data-service/model/package-metadata.scm @@ -107,7 +107,8 @@ (define (select-package-metadata-by-revision-name-and-version conn revision-commit-hash name version locale) (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, locations.file, locations.line, locations.column_number, (SELECT JSON_AGG((license_data.*)) @@ -125,7 +126,8 @@ INNER JOIN packages LEFT OUTER JOIN locations ON package_metadata.location_id = locations.id 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 INNER JOIN package_description_sets ON package_descriptions.id = ANY (package_description_sets.description_ids) @@ -143,7 +145,8 @@ INNER JOIN ( ) AS translated_package_descriptions ON package_metadata.package_description_set_id = translated_package_descriptions.id 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 INNER JOIN package_synopsis_sets ON package_synopsis.id = ANY (package_synopsis_sets.synopsis_ids) @@ -175,9 +178,9 @@ WHERE packages.id IN ( (map (match-lambda - ((synopsis description home-page file line column-number + ((synopsis synopsis-locale description description-locale home-page file line column-number 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) #() (json-string->scm license-json))))) diff --git a/guix-data-service/model/package.scm b/guix-data-service/model/package.scm index 42c4e83..643148d 100644 --- a/guix-data-service/model/package.scm +++ b/guix-data-service/model/package.scm @@ -59,7 +59,8 @@ (string-append " WITH data AS ( 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, (SELECT JSON_AGG((license_data.*)) FROM ( @@ -77,7 +78,7 @@ WITH data AS ( ON package_metadata.location_id = locations.id INNER JOIN ( SELECT DISTINCT ON (package_synopsis_sets.id) package_synopsis_sets.id, - package_synopsis.synopsis + package_synopsis.synopsis, package_synopsis.locale FROM package_synopsis_sets INNER JOIN package_synopsis 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 INNER JOIN ( SELECT DISTINCT ON (package_description_sets.id) package_description_sets.id, - package_descriptions.description + package_descriptions.description, package_descriptions.locale FROM package_description_sets INNER JOIN package_descriptions 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, packages.version, translated_package_synopsis.synopsis, + translated_package_synopsis.locale, translated_package_descriptions.description, + translated_package_descriptions.locale, package_metadata.home_page, locations.file, locations.line, locations.column_number, (SELECT JSON_AGG((license_data.*)) @@ -161,7 +164,7 @@ LEFT OUTER JOIN locations ON package_metadata.location_id = locations.id INNER JOIN ( SELECT DISTINCT ON (package_synopsis_sets.id) package_synopsis_sets.id, - package_synopsis.synopsis + package_synopsis.synopsis, package_synopsis.locale FROM package_synopsis_sets INNER JOIN package_synopsis 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 INNER JOIN ( SELECT DISTINCT ON (package_description_sets.id) package_description_sets.id, - package_descriptions.description + package_descriptions.description, package_descriptions.locale FROM package_description_sets INNER JOIN package_descriptions ON package_descriptions.id = ANY (package_description_sets.description_ids) diff --git a/guix-data-service/web/revision/controller.scm b/guix-data-service/web/revision/controller.scm index 6fa225f..e233fe7 100644 --- a/guix-data-service/web/revision/controller.scm +++ b/guix-data-service/web/revision/controller.scm @@ -312,13 +312,14 @@ commit-hash))) (_ #f))) -(define (texinfo->variants-alist s) +(define (texinfo->variants-alist s locale) (let ((stexi (texi-fragment->stexi s))) `((source . ,s) (html . ,(with-output-to-string (lambda () (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) (case (most-appropriate-mime-type @@ -597,7 +598,7 @@ (packages . ,(list->vector (map (match-lambda - ((name version synopsis description home-page + ((name version synopsis synopsis-locale description description-locale home-page location-file location-line location-column-number licenses) `((name . ,name) @@ -606,11 +607,11 @@ '()) ,@(if (member "synopsis" fields) `((synopsis - . ,(texinfo->variants-alist synopsis))) + . ,(texinfo->variants-alist synopsis synopsis-locale))) '()) ,@(if (member "description" fields) `((description - . ,(texinfo->variants-alist description))) + . ,(texinfo->variants-alist description description-locale))) '()) ,@(if (member "home-page" fields) `((home-page . ,home-page)) @@ -737,9 +738,10 @@ `((name . ,name) (version . ,version) ,@(match metadata - (((synopsis description home-page)) - `((synopsis . ,synopsis) - (description . ,description) + (((synopsis synopsis-locale description description-locale home-page file line column-number + licenses)) + `((synopsis . ,(texinfo->variants-alist synopsis synopsis-locale)) + (description . ,(texinfo->variants-alist description description-locale)) (home-page . ,home-page)))) (derivations . ,(list->vector (map (match-lambda diff --git a/guix-data-service/web/revision/html.scm b/guix-data-service/web/revision/html.scm index b7a2ad8..c37683f 100644 --- a/guix-data-service/web/revision/html.scm +++ b/guix-data-service/web/revision/html.scm @@ -199,6 +199,18 @@ (button (@ (type "submit") (class "btn btn-lg btn-primary")) "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 (@ (class "row")) (div @@ -215,7 +227,7 @@ (div (@ (class "col-sm-12")) ,(match package-metadata - (((synopsis description home-page file line column-number + (((synopsis synopsis-locale description description-locale home-page file line column-number licenses)) `(dl (@ (class "dl-horizontal")) @@ -620,7 +632,7 @@ ,@(let ((fields (assq-ref query-parameters 'field))) (map (match-lambda - ((name version synopsis description home-page + ((name version synopsis _ description _ home-page location-file location-line location-column-number licenses) `(tr