Skip to content
Snippets Groups Projects
Unverified Commit b6b67a61 authored by Ngoc Khuat's avatar Ngoc Khuat Committed by GitHub
Browse files

Delete pulses when archive dashboard (#42558)

parent 11c98539
No related branches found
No related tags found
No related merge requests found
......@@ -20,7 +20,7 @@
[metabase.models.parameter-card :as parameter-card]
[metabase.models.params :as params]
[metabase.models.permissions :as perms]
[metabase.models.pulse :as pulse :refer [Pulse]]
[metabase.models.pulse :as pulse]
[metabase.models.pulse-card :as pulse-card]
[metabase.models.revision :as revision]
[metabase.models.serialization :as serdes]
......@@ -97,11 +97,13 @@
(t2/define-before-update :model/Dashboard
[dashboard]
(u/prog1 (maybe-populate-initially-published-at dashboard)
(params/assert-valid-parameters dashboard)
(parameter-card/upsert-or-delete-from-parameters! "dashboard" (:id dashboard) (:parameters dashboard))
(collection/check-collection-namespace Dashboard (:collection_id dashboard)))
(maybe-populate-initially-published-at dashboard))
(let [changes (t2/changes dashboard)]
(u/prog1 (maybe-populate-initially-published-at dashboard)
(params/assert-valid-parameters dashboard)
(parameter-card/upsert-or-delete-from-parameters! "dashboard" (:id dashboard) (:parameters dashboard))
(collection/check-collection-namespace Dashboard (:collection_id dashboard))
(when (:archived changes)
(t2/delete! :model/Pulse :dashboard_id (u/the-id dashboard))))))
(defn- update-dashboard-subscription-pulses!
"Updates the pulses' names and collection IDs, and syncs the PulseCards"
......@@ -140,7 +142,7 @@
:position position})]
(t2/with-transaction [_conn]
(binding [pulse/*allow-moving-dashboard-subscriptions* true]
(t2/update! Pulse {:dashboard_id dashboard-id}
(t2/update! :model/Pulse {:dashboard_id dashboard-id}
{:name (:name dashboard)
:collection_id (:collection_id dashboard)})
(pulse-card/bulk-create! new-pulse-cards)))))))
......
......@@ -10,6 +10,7 @@
[metabase.models.dashboard-card :as dashboard-card]
[metabase.models.interface :as mi]
[metabase.models.permissions :as perms]
[metabase.models.pulse-channel-test :as pulse-channel-test]
[metabase.models.revision :as revision]
[metabase.models.serialization :as serdes]
[metabase.models.user :as user]
......@@ -756,6 +757,24 @@
:slug "unnamed"}
(first (:parameters dashboard))))))))
(deftest archive-dashboard-delete-pulse-test
(pulse-channel-test/with-send-pulse-setup!
(mt/with-temp [:model/Card {card-id :id} {}
:model/Dashboard {dash-id :id} {}
:model/DashboardCard {dc-id :id} {:dashboard_id dash-id
:card_id card-id}
:model/Pulse {pulse-id :id} {:dashboard_id dash-id}
:model/PulseChannel _ {:pulse_id pulse-id}
:model/PulseCard _ {:pulse_id pulse-id
:card_id card-id
:dashboard_card_id dc-id}]
(testing "sanity check that we have a trigger"
(is (= 1 (count (pulse-channel-test/send-pulse-triggers pulse-id)))))
(t2/update! :model/Dashboard dash-id {:archived true})
(testing "archiving a Dashboard should delete its Pulse and SendPulse triggers"
(is (nil? (t2/select-one :model/Pulse pulse-id)))
(is (= 0 (count (pulse-channel-test/send-pulse-triggers pulse-id))))))))
(deftest post-update-test
(t2.with-temp/with-temp [Collection {collection-id-1 :id} {}
Collection {collection-id-2 :id} {}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment