diff --git a/src/metabase/db.clj b/src/metabase/db.clj index 492594f028863afeb2ee914fbf13e8f7093853f3..ab88e888c4fe2b77a9162186df45cc30902e3374 100644 --- a/src/metabase/db.clj +++ b/src/metabase/db.clj @@ -3,7 +3,7 @@ (:require [clojure.java.jdbc :as jdbc] [clojure.tools.logging :as log] (clojure [set :as set] - [string :as str]) + [string :as s]) [environ.core :refer [env]] (korma [core :as k] [db :as kdb]) @@ -53,8 +53,8 @@ "Connection details for Korma / JDBC." (delay (let [details @db-connection-details] (case (config/config-kw :mb-db-type) - :h2 (kdb/h2 (assoc details :naming {:keys str/lower-case - :fields str/upper-case})) + :h2 (kdb/h2 (assoc details :naming {:keys s/lower-case + :fields s/upper-case})) :postgres (kdb/postgres (assoc details :db (:dbname details))))))) diff --git a/src/metabase/driver.clj b/src/metabase/driver.clj index 1a6867d3691a89c48f5ed46ddf6c085dba6a28b5..d44480a9e3ba9b2151060e59296f18712492fdab 100644 --- a/src/metabase/driver.clj +++ b/src/metabase/driver.clj @@ -2,7 +2,7 @@ (:require clojure.java.classpath [clojure.tools.logging :as log] [medley.core :as m] - [metabase.db :refer [exists? ins sel upd]] + [metabase.db :refer [ins sel upd]] (metabase.driver [interface :as i] [query-processor :as qp]) (metabase.models [database :refer [Database]] diff --git a/src/metabase/events.clj b/src/metabase/events.clj index 42b5e84cd7dd56b2ff770a57dfb58e79d1234ce1..60c569f48e1dbbb7c683224689fa05e480b3dcfd 100644 --- a/src/metabase/events.clj +++ b/src/metabase/events.clj @@ -21,19 +21,16 @@ (atom nil)) (defn- find-and-load-event-handlers - "Search Classpath for namespaces that start with `metabase.events.`, then `require` them so initialization can happen." + "Search Classpath for namespaces that start with `metabase.events.`, and call their `events-init` function if it exists." [] - (->> (ns-find/find-namespaces (clojure.java.classpath/classpath)) - (filter (fn [ns-symb] - (re-find #"^metabase\.events\." (name ns-symb)))) - set - (map (fn [events-ns] - (log/info "\tloading events namespace: " events-ns) - (require events-ns) - ;; look for `events-init` function in the namespace and call it if it exists - (when-let [init-fn (ns-resolve events-ns 'events-init)] - (init-fn)))) - dorun)) + (doseq [events-ns (->> (ns-find/find-namespaces (clojure.java.classpath/classpath)) + (filter (fn [ns-symb] + (re-find #"^metabase\.events\." (name ns-symb)))))] + (log/info "\tloading events namespace: " events-ns) + (require events-ns) + ;; look for `events-init` function in the namespace and call it if it exists + (when-let [init-fn (ns-resolve events-ns 'events-init)] + (init-fn)))) (defn initialize-events! "Initialize the asynchronous internal events system." diff --git a/src/metabase/models/common.clj b/src/metabase/models/common.clj index 61dfbf8c19892b6e6bb42e6890e0582a1da3f7a2..fa922e760cd0aaba1f0d4095f3b78037c7e60338 100644 --- a/src/metabase/models/common.clj +++ b/src/metabase/models/common.clj @@ -1,7 +1,5 @@ (ns metabase.models.common - (:require [clojure.string :as s] - [metabase.api.common :refer [*current-user* *current-user-id* check]] - [metabase.util :as u])) + (:require [clojure.string :as s])) (def ^:const timezones ["GMT" diff --git a/src/metabase/models/setting.clj b/src/metabase/models/setting.clj index 34ee0564b1b3788cd991ae8c2663648f2829a500..ccca73a2de9b1a8a0d440465e5968df907255c5f 100644 --- a/src/metabase/models/setting.clj +++ b/src/metabase/models/setting.clj @@ -1,7 +1,6 @@ (ns metabase.models.setting (:refer-clojure :exclude [get set]) - (:require [clojure.core.match :refer [match]] - [clojure.string :as s] + (:require [clojure.string :as s] [environ.core :as env] [korma.core :as k] [metabase.config :as config] @@ -9,7 +8,8 @@ [metabase.models [common :as common] [interface :refer :all]] [metabase.setup :as setup] - [metabase.util :as u])) + [metabase.util :as u] + [metabase.util.password :as password])) ;; Settings are a fast + simple way to create a setting that can be set ;; from the SuperAdmin page. They are saved to the Database, but intelligently @@ -153,18 +153,18 @@ (sort-by :key)))) (defn public-settings - "Return a simple map of key/value pairs which represent the public settings for the application." + "Return a simple map of key/value pairs which represent the public settings for the front-end application." [] {:ga_code "UA-60817802-1" :intercom_code "gqfmsgf1" - :password_complexity (metabase.util.password/active-password-complexity) + :password_complexity (password/active-password-complexity) :setup_token (setup/token-value) :timezones common/timezones :version (config/mb-version-info) ;; all of these values are dynamic settings controlled at runtime :anon_tracking_enabled (= "true" (get :anon-tracking-enabled)) :site_name (get :site-name) - :email_configured (not (clojure.string/blank? (get :email-smtp-host)))}) + :email_configured (not (s/blank? (get :email-smtp-host)))}) ;; # IMPLEMENTATION diff --git a/src/metabase/routes.clj b/src/metabase/routes.clj index 5f9c1d3a0d0da3c61bd869582b96e2c02fee995b..984f8a59e7da95197145224653402b99a0a79b32 100644 --- a/src/metabase/routes.clj +++ b/src/metabase/routes.clj @@ -6,22 +6,15 @@ [ring.util.response :as resp] [stencil.core :as stencil] [metabase.api.routes :as api] - (metabase.models common - [setting :as setting]) - [metabase.util :as u] - metabase.util.password)) + [metabase.models.setting :as setting])) -(def ^:private ^:const date-format-rfc2616 - "Java SimpleDateFormat representing rfc2616 style date used in http headers." - "EEE, dd MMM yyyy HH:mm:ss zzz") - -(defn- index [request] +(defn- index [_] (-> (io/resource "frontend_client/index.html") slurp (stencil/render-string {:bootstrap_json (json/generate-string (setting/public-settings))}) resp/response (resp/content-type "text/html") - (resp/header "Last-Modified" (u/now-with-format date-format-rfc2616)))) + (resp/header "Last-Modified" "{now} GMT"))) ;; Redirect naughty users who try to visit a page other than setup if setup is not yet complete (defroutes routes diff --git a/test/metabase/api/setup_test.clj b/test/metabase/api/setup_test.clj index 42c947c52775080adb7d3563b35a9b99f4fb9ba3..9daf4c723af79bceba21440654c7e25b5a3f77d9 100644 --- a/test/metabase/api/setup_test.clj +++ b/test/metabase/api/setup_test.clj @@ -12,14 +12,13 @@ ;; ## POST /api/setup/user ;; Check that we can create a new superuser via setup-token -(let [setup-token (setup/token-create) - user-name (random-name)] +(let [user-name (random-name)] (expect-eval-actual-first (match-$ (->> (sel :one User :email (str user-name "@metabase.com")) (:id) (sel :one Session :user_id)) {:id $id}) - (let [resp (http/client :post 200 "setup" {:token setup-token + (let [resp (http/client :post 200 "setup" {:token (setup/token-create) :prefs {:site_name "Metabase Test"} :user {:first_name user-name :last_name user-name