guix-commits
[Top][All Lists]
Advanced

[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")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]