[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
03/09: Use lint checker related translations on some pages
From: |
Christopher Baines |
Subject: |
03/09: Use lint checker related translations on some pages |
Date: |
Sun, 7 Jun 2020 16:27:58 -0400 (EDT) |
cbaines pushed a commit to branch master
in repository data-service.
commit d3096de655166cc8827cd109641558a0c9f3f419
Author: Danjela Lura <danielaluraa@gmail.com>
AuthorDate: Thu May 28 23:00:10 2020 +0200
Use lint checker related translations on some pages
Signed-off-by: Christopher Baines <mail@cbaines.net>
---
guix-data-service/comparison.scm | 36 +++++++++-------
guix-data-service/model/lint-checker.scm | 5 ++-
guix-data-service/model/lint-warning.scm | 19 ++++++---
guix-data-service/web/compare/controller.scm | 36 +++++++++++++---
guix-data-service/web/compare/html.scm | 57 ++++++++++++++++++++++++-
guix-data-service/web/repository/controller.scm | 7 ++-
guix-data-service/web/revision/controller.scm | 34 +++++++++++----
guix-data-service/web/revision/html.scm | 24 +++++++++++
8 files changed, 176 insertions(+), 42 deletions(-)
diff --git a/guix-data-service/comparison.scm b/guix-data-service/comparison.scm
index 40d10fe..59a25e9 100644
--- a/guix-data-service/comparison.scm
+++ b/guix-data-service/comparison.scm
@@ -598,9 +598,10 @@ ORDER BY coalesce(base_packages.name,
target_packages.name) ASC, base_packages.v
target-derivations)))))))))
names-and-versions)))
-(define (lint-warning-differences-data conn
+(define* (lint-warning-differences-data conn
base-guix-revision-id
- target-guix-revision-id)
+ target-guix-revision-id
+ locale)
(define query
(string-append "
WITH base_lint_warnings AS (
@@ -620,18 +621,19 @@ WITH base_lint_warnings AS (
ON lint_checkers.lint_checker_description_set_id =
lint_checker_description_sets.id
INNER JOIN lint_checker_descriptions
ON lint_checker_descriptions.id = ANY
(lint_checker_description_sets.description_ids)
+ AND lint_checker_descriptions.locale = $3
INNER JOIN locations
ON lint_warnings.location_id = locations.id
INNER JOIN lint_warning_message_sets
ON lint_warnings.lint_warning_message_set_id = lint_warning_message_sets.id
INNER JOIN lint_warning_messages
ON lint_warning_messages.id = ANY (lint_warning_message_sets.message_ids)
AND
- lint_warning_messages.locale = 'en_US.utf8'
+ lint_warning_messages.locale = $3
WHERE lint_warnings.id IN (
- SELECT lint_warning_id
- FROM guix_revision_lint_warnings
- WHERE guix_revision_id = $1
- )
+ SELECT lint_warning_id
+ FROM guix_revision_lint_warnings
+ WHERE guix_revision_id = $1
+ )
), target_lint_warnings AS (
SELECT lint_warnings.id,
packages.name, packages.version,
@@ -649,18 +651,19 @@ WITH base_lint_warnings AS (
ON lint_checkers.lint_checker_description_set_id =
lint_checker_description_sets.id
INNER JOIN lint_checker_descriptions
ON lint_checker_descriptions.id = ANY
(lint_checker_description_sets.description_ids)
- INNER JOIN locations
+ AND lint_checker_descriptions.locale = $3"
+ "INNER JOIN locations
ON lint_warnings.location_id = locations.id
INNER JOIN lint_warning_message_sets
ON lint_warnings.lint_warning_message_set_id = lint_warning_message_sets.id
INNER JOIN lint_warning_messages
- ON lint_warning_messages.id = ANY (lint_warning_message_sets.message_ids)
AND
- lint_warning_messages.locale = 'en_US.utf8'
- WHERE lint_warnings.id IN (
- SELECT lint_warning_id
- FROM guix_revision_lint_warnings
- WHERE guix_revision_id = $2
- )
+ ON lint_warning_messages.id = ANY (lint_warning_message_sets.message_ids)
+ AND lint_warning_messages.locale = $3"
+ " WHERE lint_warnings.id IN (
+ SELECT lint_warning_id
+ FROM guix_revision_lint_warnings
+ WHERE guix_revision_id = $2
+)
)
SELECT coalesce(
base_lint_warnings.name,
@@ -728,7 +731,8 @@ ORDER BY coalesce(base_lint_warnings.name,
target_lint_warnings.name) ASC, base_
(exec-query conn query
(list base-guix-revision-id
- target-guix-revision-id)))
+ target-guix-revision-id
+ locale)))
(define (channel-news-differences-data conn
base-guix-revision-id
diff --git a/guix-data-service/model/lint-checker.scm
b/guix-data-service/model/lint-checker.scm
index 181d5fd..133984d 100644
--- a/guix-data-service/model/lint-checker.scm
+++ b/guix-data-service/model/lint-checker.scm
@@ -92,6 +92,7 @@ INNER JOIN lint_checker_description_sets
ON lint_checkers.lint_checker_description_set_id =
lint_checker_description_sets.id
INNER JOIN lint_checker_descriptions
ON lint_checker_descriptions.id = ANY
(lint_checker_description_sets.description_ids)
+ AND lint_checker_descriptions.locale = 'en_US.utf8'
INNER JOIN (
SELECT lint_checker_id, COUNT(*)
FROM lint_warnings
@@ -136,11 +137,11 @@ INNER JOIN lint_checker_description_sets
ON lint_checkers.lint_checker_description_set_id =
lint_checker_description_sets.id
INNER JOIN lint_checker_descriptions
ON lint_checker_descriptions.id = ANY
(lint_checker_description_sets.description_ids)
+ AND lint_checker_descriptions.locale = 'en_US.utf8'
WHERE lint_checkers.id IN (
SELECT lint_checker_id
FROM guix_revision_lint_checkers
INNER JOIN guix_revisions
ON guix_revisions.id = guix_revision_lint_checkers.guix_revision_id
- WHERE commit = $1
-)"
+ WHERE commit = $1)"
(list commit-hash)))
diff --git a/guix-data-service/model/lint-warning.scm
b/guix-data-service/model/lint-warning.scm
index 6c83773..0a1b385 100644
--- a/guix-data-service/model/lint-warning.scm
+++ b/guix-data-service/model/lint-warning.scm
@@ -72,7 +72,9 @@ INNER JOIN lint_checker_description_sets
ON lint_checkers.lint_checker_description_set_id =
lint_checker_description_sets.id
INNER JOIN lint_checker_descriptions
ON lint_checker_descriptions.id = ANY
(lint_checker_description_sets.description_ids)
-INNER JOIN packages
+ AND lint_checker_descriptions.locale = "
+ "'" locale "' "
+"INNER JOIN packages
ON lint_warnings.package_id = packages.id
INNER JOIN locations
ON locations.id = lint_warnings.location_id
@@ -118,11 +120,13 @@ INNER JOIN lint_warning_messages
(list message-query)
'()))))
-(define (select-lint-warnings-by-revision-package-name-and-version conn
+(define* (select-lint-warnings-by-revision-package-name-and-version conn
commit-hash
- name
version)
- (define query "
-SELECT lint_warnings.id, lint_checkers.name,
lint_checker_descriptions.description,
+ name version
+ #:key
+ locale)
+ (define query
+"SELECT lint_warnings.id, lint_checkers.name,
lint_checker_descriptions.description,
lint_checkers.network_dependent,
locations.file, locations.line, locations.column_number,
lint_warning_messages.message
@@ -133,6 +137,7 @@ INNER JOIN lint_checker_description_sets
ON lint_checkers.lint_checker_description_set_id =
lint_checker_description_sets.id
INNER JOIN lint_checker_descriptions
ON lint_checker_descriptions.id = ANY
(lint_checker_description_sets.description_ids)
+ AND lint_checker_descriptions.locale = $4
INNER JOIN packages
ON lint_warnings.package_id = packages.id
LEFT OUTER JOIN locations
@@ -140,7 +145,7 @@ LEFT OUTER JOIN locations
INNER JOIN lint_warning_message_sets
ON lint_warning_message_sets.id = lint_warning_message_set_id
INNER JOIN lint_warning_messages
- ON lint_warning_messages.locale = 'en_US.utf8'
+ ON lint_warning_messages.locale = $4
AND lint_warning_messages.id = ANY (lint_warning_message_sets.message_ids)
WHERE packages.id IN (
SELECT package_derivations.package_id
@@ -157,4 +162,4 @@ WHERE packages.id IN (
(exec-query conn
query
- (list commit-hash name version)))
+ (list commit-hash name version locale)))
diff --git a/guix-data-service/web/compare/controller.scm
b/guix-data-service/web/compare/controller.scm
index 78ed3fa..98c74fa 100644
--- a/guix-data-service/web/compare/controller.scm
+++ b/guix-data-service/web/compare/controller.scm
@@ -33,6 +33,7 @@
#:use-module (guix-data-service model guix-revision)
#:use-module (guix-data-service model derivation)
#:use-module (guix-data-service model build-status)
+ #:use-module (guix-data-service model lint-warning-message)
#:use-module (guix-data-service web compare html)
#:export (compare-controller))
@@ -72,7 +73,8 @@
(parse-query-parameters
request
`((base_commit ,(parse-commit conn) #:required)
- (target_commit ,(parse-commit conn) #:required)))))
+ (target_commit ,(parse-commit conn) #:required)
+ (locale ,identity #:default "en_US.utf8")))))
(render-compare mime-types
conn
parsed-query-parameters)))
@@ -83,7 +85,8 @@
`((base_branch ,identity #:required)
(base_datetime ,parse-datetime #:required)
(target_branch ,identity #:required)
- (target_datetime ,parse-datetime #:required)))))
+ (target_datetime ,parse-datetime #:required)
+ (locale ,identity #:default "en_US.utf8")))))
(render-compare-by-datetime mime-types
conn
parsed-query-parameters)))
@@ -147,6 +150,14 @@
(define (render-compare mime-types
conn
query-parameters)
+ (define lint-warnings-locale-options
+ (map
+ (match-lambda
+ ((locale)
+ locale))
+ (lint-warning-message-locales-for-revision
+ conn (assq-ref query-parameters 'target_commit))))
+
(if (any-invalid-query-parameters? query-parameters)
(case (most-appropriate-mime-type
'(application/json text/html)
@@ -172,7 +183,8 @@
(assq-ref query-parameters 'base_commit)))
(target-revision-id (commit->revision-id
conn
- (assq-ref query-parameters 'target_commit))))
+ (assq-ref query-parameters 'target_commit)))
+ (locale (assq-ref query-parameters 'locale)))
(let-values
(((base-packages-vhash target-packages-vhash)
(package-data->package-data-vhashes
@@ -193,7 +205,8 @@
2
(lint-warning-differences-data conn
base-revision-id
- target-revision-id)))
+ target-revision-id
+ locale)))
(channel-news-data
(channel-news-differences-data conn
base-revision-id
@@ -252,6 +265,7 @@
removed-packages
version-changes
lint-warnings-data
+ lint-warnings-locale-options
channel-news-data)
#:extra-headers http-headers-for-unchanging-content))))))))
@@ -281,11 +295,19 @@
(let ((base-branch (assq-ref query-parameters 'base_branch))
(base-datetime (assq-ref query-parameters 'base_datetime))
(target-branch (assq-ref query-parameters 'target_branch))
- (target-datetime (assq-ref query-parameters 'target_datetime)))
+ (target-datetime (assq-ref query-parameters 'target_datetime))
+ (locale (assq-ref query-parameters 'locale)))
(let* ((base-revision-details
(select-guix-revision-for-branch-and-datetime conn
base-branch
base-datetime))
+ (lint-warnings-locale-options
+ (map
+ (match-lambda
+ ((locale)
+ locale))
+ (lint-warning-message-locales-for-revision
+ conn (second base-revision-details))))
(base-revision-id
(first base-revision-details))
(target-revision-details
@@ -314,7 +336,8 @@
2
(lint-warning-differences-data conn
base-revision-id
- target-revision-id)))
+ target-revision-id
+ locale)))
(channel-news-data
(channel-news-differences-data conn
base-revision-id
@@ -382,6 +405,7 @@
removed-packages
version-changes
lint-warnings-data
+ lint-warnings-locale-options
channel-news-data)
#:extra-headers http-headers-for-unchanging-content)))))))))
diff --git a/guix-data-service/web/compare/html.scm
b/guix-data-service/web/compare/html.scm
index c96967a..74849ac 100644
--- a/guix-data-service/web/compare/html.scm
+++ b/guix-data-service/web/compare/html.scm
@@ -36,6 +36,7 @@
removed-packages
version-changes
lint-warnings-data
+ lint-warnings-locale-options
channel-news-data)
(define base-commit
(assq-ref query-parameters 'base_commit))
@@ -43,9 +44,13 @@
(define target-commit
(assq-ref query-parameters 'target_commit))
+ (define locale
+ (assq-ref query-parameters 'locale))
+
(define query-params
(string-append "?base_commit=" base-commit
- "&target_commit=" target-commit))
+ "&target_commit=" target-commit
+ "&locale=" locale))
(layout
#:body
@@ -79,14 +84,62 @@
(a (@ (class "btn btn-default")
(href ,(string-append "/compare/derivations" query-params)))
"Compare derivations"))))
+
+ (div
+ (@ (class "row"))
+ (div
+ (@ (class "col-md-12"))
+ (div
+ (@ (class "well"))
+ (form
+ (@ (method "get")
+ (action "")
+ (style "padding-bottom: 0")
+ (class "form-horizontal"))
+ ,(form-horizontal-control
+ "" query-parameters
+ #:name "base_commit"
+ #:type "hidden")
+ ,(form-horizontal-control
+ "" query-parameters
+ #:name "target_commit"
+ #:type "hidden")
+ ,(form-horizontal-control
+ "" query-parameters
+ #:name "base_branch"
+ #:type "hidden")
+ ,(form-horizontal-control
+ "" query-parameters
+ #:name "base_datetime"
+ #:type "hidden")
+ ,(form-horizontal-control
+ "" query-parameters
+ #:name "target_branch"
+ #:type "hidden")
+ ,(form-horizontal-control
+ "" query-parameters
+ #:name "target_datetime"
+ #:type "hidden")
+ ,(form-horizontal-control
+ "Locale" query-parameters
+ #:name "locale"
+ #:allow-selecting-multiple-options #f
+ #:options lint-warnings-locale-options
+ #:help-text "Language")
+ (div (@ (class "form-group form-group-lg"))
+ (div (@ (class "col-sm-offset-2 col-sm-10"))
+ (button (@ (type "submit")
+ (class "btn btn-lg btn-primary"))
+ "Update results")))))))
(div
(@ (class "row") (style "clear: left;"))
(div
(@ (class "col-sm-12"))
- (a (@ (class "btn btn-default btn-lg")
+ (a (@ (class "btn btn-default btn-lg pull-right")
(href ,(string-append
"/compare.json" query-params)))
"View JSON")))
+
(div
(@ (class "row"))
(div
diff --git a/guix-data-service/web/repository/controller.scm
b/guix-data-service/web/repository/controller.scm
index 6fbe4ce..67b6194 100644
--- a/guix-data-service/web/repository/controller.scm
+++ b/guix-data-service/web/repository/controller.scm
@@ -258,13 +258,18 @@
commit-hash))))
(('GET "repository" repository-id "branch" branch-name
"latest-processed-revision" "package" name version)
(let ((commit-hash
- (latest-processed-commit-for-branch conn repository-id
branch-name)))
+ (latest-processed-commit-for-branch conn repository-id
branch-name))
+ (parsed-query-parameters
+ (parse-query-parameters
+ request
+ `((locale ,identity #:default "en_US.utf8")))))
(if commit-hash
(render-revision-package-version mime-types
conn
commit-hash
name
version
+ parsed-query-parameters
#:header-text
`("Latest processed revision for
branch "
(samp ,branch-name))
diff --git a/guix-data-service/web/revision/controller.scm
b/guix-data-service/web/revision/controller.scm
index 9093d70..d4a5e83 100644
--- a/guix-data-service/web/revision/controller.scm
+++ b/guix-data-service/web/revision/controller.scm
@@ -157,11 +157,16 @@
commit-hash)))
(('GET "revision" commit-hash "package" name version)
(if (guix-commit-exists? conn commit-hash)
- (render-revision-package-version mime-types
- conn
- commit-hash
- name
- version)
+ (let ((parsed-query-parameters
+ (parse-query-parameters
+ request
+ `((locale ,identity #:default "en_US.utf8")))))
+ (render-revision-package-version mime-types
+ conn
+ commit-hash
+ name
+ version
+ parsed-query-parameters))
(render-unknown-revision mime-types
conn
commit-hash)))
@@ -287,7 +292,7 @@
(let ((parsed-query-parameters
(parse-query-parameters
request
- `((locale ,identity #:default "en_US.utf8")
+ `((locale ,identity #:default "en_US.utf8")
(package_query ,identity)
(linter ,identity #:multi-value)
(message_query ,identity)
@@ -667,6 +672,7 @@
commit-hash
name
version
+ query-parameters
#:key
(header-text
`("Revision "
@@ -675,7 +681,15 @@
(string-append
"/revision/" commit-hash))
version-history-link)
- (let ((metadata
+
+ (define lint-warnings-locale-options
+ (map
+ (match-lambda
+ ((locale)
+ locale))
+ (lint-warning-message-locales-for-revision conn commit-hash)))
+
+ (let* ((metadata
(select-package-metadata-by-revision-name-and-version
conn
commit-hash
@@ -690,12 +704,14 @@
(git-repositories
(git-repositories-containing-commit conn
commit-hash))
+ (locale (assq-ref query-parameters 'locale))
(lint-warnings
(select-lint-warnings-by-revision-package-name-and-version
conn
commit-hash
name
- version)))
+ version
+ #:locale locale)))
(case (most-appropriate-mime-type
'(application/json text/html)
mime-types)
@@ -725,6 +741,8 @@
derivations
git-repositories
lint-warnings
+ query-parameters
+ lint-warnings-locale-options
#:header-text header-text
#:header-link header-link
#:version-history-link
diff --git a/guix-data-service/web/revision/html.scm
b/guix-data-service/web/revision/html.scm
index f04a7a8..4485b77 100644
--- a/guix-data-service/web/revision/html.scm
+++ b/guix-data-service/web/revision/html.scm
@@ -161,6 +161,8 @@
package-metadata
derivations git-repositories
lint-warnings
+ query-parameters
+ locale-options
#:key header-text
header-link
version-history-link)
@@ -178,6 +180,28 @@
(div
(@ (class "row"))
(div
+ (@ (class "col-md-12"))
+ (div
+ (@ (class "well"))
+ (form
+ (@ (method "get")
+ (action "")
+ (style "padding-bottom: 0")
+ (class "form-horizontal"))
+ ,(form-horizontal-control
+ "Locale" query-parameters
+ #:options locale-options
+ #:allow-selecting-multiple-options #f
+ #:help-text
+ "Language")
+ (div (@ (class "form-group form-group-lg"))
+ (div (@ (class "col-sm-offset-2 col-sm-10"))
+ (button (@ (type "submit")
+ (class "btn btn-lg btn-primary"))
+ "Update results")))))))
+ (div
+ (@ (class "row"))
+ (div
(@ (class "col-sm-12"))
,@(if version-history-link
`((a (@ (class "btn btn-lg btn-default pull-right")
- branch master updated (ae6541a -> 480d718), Christopher Baines, 2020/06/07
- 01/09: Get the translated lint checker descriptions into the database, Christopher Baines, 2020/06/07
- 02/09: Add checks to guard against null data, Christopher Baines, 2020/06/07
- 05/09: Make the form-horizontal-control procedure aware of hidden inputs, Christopher Baines, 2020/06/07
- 04/09: Make the query that provides locale options look nicer, Christopher Baines, 2020/06/07
- 07/09: Fall back to en_US.utf8 for the lint warnings page for a revision, Christopher Baines, 2020/06/07
- 09/09: Fix lint checker tests, Christopher Baines, 2020/06/07
- 03/09: Use lint checker related translations on some pages,
Christopher Baines <=
- 06/09: Provide the comparison page with translated lint warnings, Christopher Baines, 2020/06/07
- 08/09: Fall back to en_US.utf8 in the package page, Christopher Baines, 2020/06/07