From de04d5d610ede31d8d3f6049436260072b571d32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cam=20Sa=C3=BCl?= <cammsaul@gmail.com> Date: Fri, 2 Oct 2015 15:21:55 -0700 Subject: [PATCH] fix broken events initialization. Remove some unneeded imports --- src/metabase/db.clj | 6 +++--- src/metabase/driver.clj | 2 +- src/metabase/events.clj | 21 ++++++++++----------- src/metabase/models/common.clj | 4 +--- src/metabase/models/setting.clj | 12 ++++++------ src/metabase/routes.clj | 13 +++---------- 6 files changed, 24 insertions(+), 34 deletions(-) diff --git a/src/metabase/db.clj b/src/metabase/db.clj index 492594f0288..ab88e888c4f 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 1a6867d3691..d44480a9e3b 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 7b260a2138b..f19fd99af83 100644 --- a/src/metabase/events.clj +++ b/src/metabase/events.clj @@ -21,18 +21,17 @@ (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 - ((ns-resolve events-ns 'events-init)))) - dorun)) + (doseq [events-ns (->> (ns-find/find-namespaces (clojure.java.classpath/classpath)) + (map name) + (filter (partial re-find #"^metabase\.events\.")) + (map symbol))] + (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 [events-init (ns-resolve events-ns 'events-init)] + (events-init)))) (defn initialize-events! "Initialize the asynchronous internal events system." diff --git a/src/metabase/models/common.clj b/src/metabase/models/common.clj index 61dfbf8c198..fa922e760cd 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 34ee0564b1b..ccca73a2de9 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 5f9c1d3a0d0..984f8a59e7d 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 -- GitLab