Skip to content

Commit e831218

Browse files
committed
Merge pull request #1084 from getredash/fix_dup_alerts
Fix #1049: duplicate alerts when data source belongs to multiple groups
2 parents 6edb0ca + 07d2b5b commit e831218

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

redash/models.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -755,7 +755,8 @@ def all(cls, groups):
755755
.join(DataSourceGroup, on=(Query.data_source==DataSourceGroup.data_source))\
756756
.where(DataSourceGroup.group << groups)\
757757
.switch(Alert)\
758-
.join(User)
758+
.join(User)\
759+
.group_by(Alert, User, Query)
759760

760761
@classmethod
761762
def get_by_id_and_org(cls, id, org):

tests/models/test_alerts.py

+10
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,13 @@ def test_returns_all_alerts_for_given_groups(self):
2525
alerts = Alert.all(groups=[group])
2626
self.assertNotIn(alert1, alerts)
2727
self.assertIn(alert2, alerts)
28+
29+
def test_return_each_alert_only_once(self):
30+
group = self.factory.create_group()
31+
self.factory.data_source.add_group(group)
32+
33+
alert = self.factory.create_alert()
34+
35+
alerts = Alert.all(groups=[self.factory.default_group, group])
36+
self.assertEqual(1, len(list(alerts)))
37+
self.assertIn(alert, alerts)

0 commit comments

Comments
 (0)