From f8ce69b6475dc8f14606b0ced7636ab68d7660f7 Mon Sep 17 00:00:00 2001 From: Cam Saul <cam@geotip.com> Date: Wed, 3 Jun 2015 15:03:45 -0700 Subject: [PATCH] fix annoying redirect to setup when developing --- src/metabase/db.clj | 3 ++- src/metabase/routes.clj | 6 +++--- src/metabase/setup.clj | 13 ++++++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/metabase/db.clj b/src/metabase/db.clj index 2ae4feaeff6..19051f4d519 100644 --- a/src/metabase/db.clj +++ b/src/metabase/db.clj @@ -439,7 +439,8 @@ [entity & {:as kwargs}] `(not (empty? (select (entity->korma ~entity) (fields [:id]) - (where ~kwargs) + ~@(when (seq kwargs) + `[(where ~kwargs)]) (limit 1))))) ;; ## CASADE-DELETE diff --git a/src/metabase/routes.clj b/src/metabase/routes.clj index cae3ffa600b..c4a831396da 100644 --- a/src/metabase/routes.clj +++ b/src/metabase/routes.clj @@ -5,9 +5,9 @@ [metabase.api.routes :as api] [metabase.setup :as setup])) - -(let [redirect-to-setup? (fn [{:keys [uri]}] ; Redirect naughty users who try to visit a page other than setup - (and (setup/token-exists?) ; if setup is not yet complete +;; Redirect naughty users who try to visit a page other than setup if setup is not yet complete +(let [redirect-to-setup? (fn [{:keys [uri]}] + (and (setup/incomplete?) (not (re-matches #"^/setup/.*$" uri)))) index (fn [request] (if (redirect-to-setup? request) (resp/redirect (format "/setup/init/%s" (setup/token-value))) diff --git a/src/metabase/setup.clj b/src/metabase/setup.clj index 5ddba8bc2df..91090004c13 100644 --- a/src/metabase/setup.clj +++ b/src/metabase/setup.clj @@ -1,6 +1,8 @@ -(ns metabase.setup) +(ns metabase.setup + (:require [metabase.db :as db] + [metabase.models.user :refer [User]])) -(def ^:private setup-token +(defonce ^:private setup-token (atom nil)) (defn token-value @@ -8,10 +10,11 @@ [] @setup-token) -(defn token-exists? - "Return `true` if a setup token exists." +(defn incomplete? + "Return `true` if a setup token exists and no `Users` exist in the DB." [] - (boolean @setup-token)) + (and @setup-token + (not (db/exists? User)))) (defn token-match? "Function for checking if the supplied string matches our setup token. -- GitLab