Merge lp:~allenap/launchpad/structural-subscriptions-with-filters-5 into lp:launchpad/db-devel

Proposed by Gavin Panella
Status: Merged
Approved by: Māris Fogels
Approved revision: no longer in the source branch.
Merged at revision: 9866
Proposed branch: lp:~allenap/launchpad/structural-subscriptions-with-filters-5
Merge into: lp:launchpad/db-devel
Prerequisite: lp:~allenap/launchpad/structural-subscriptions-with-filters-4
Diff against target: 55 lines (+30/-4)
2 files modified
lib/lp/registry/model/structuralsubscription.py (+6/-4)
lib/lp/registry/tests/test_structuralsubscriptiontarget.py (+24/-0)
To merge this branch: bzr merge lp:~allenap/launchpad/structural-subscriptions-with-filters-5
Reviewer Review Type Date Requested Status
Gavin Panella (community) code Abstain
Māris Fogels (community) Approve
Review via email: mp+37608@code.launchpad.net

Commit message

getSubscriptionsForBug() now filters by level. Previously it ignored the level passed in.

Description of the change

Make getSubscriptionsForBug() respect its level argument.

To post a comment you must log in.
Revision history for this message
Māris Fogels (mars) wrote :

What a clean branch! The code looks good. r=mars

review: Approve
Revision history for this message
Gavin Panella (allenap) :
review: Abstain (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/registry/model/structuralsubscription.py'
2--- lib/lp/registry/model/structuralsubscription.py 2010-10-05 14:43:49 +0000
3+++ lib/lp/registry/model/structuralsubscription.py 2010-10-05 14:43:50 +0000
4@@ -516,10 +516,12 @@
5 ]
6
7 conditions = [
8- # There's no filter or ...
9- Or(BugSubscriptionFilter.id == None,
10- # there is a filter ...
11- And(
12+ StructuralSubscription.bug_notification_level >= level,
13+ Or(
14+ # There's no filter or ...
15+ BugSubscriptionFilter.id == None,
16+ # there is a filter and ...
17+ And(
18 # there's no status filter, or there is a status filter
19 # and and it matches.
20 Or(BugSubscriptionFilterStatus.id == None,
21
22=== modified file 'lib/lp/registry/tests/test_structuralsubscriptiontarget.py'
23--- lib/lp/registry/tests/test_structuralsubscriptiontarget.py 2010-10-05 14:43:49 +0000
24+++ lib/lp/registry/tests/test_structuralsubscriptiontarget.py 2010-10-05 14:43:50 +0000
25@@ -247,6 +247,30 @@
26 bugtask.bug, BugNotificationLevel.NOTHING)
27 self.assertEqual([subscription], list(subscriptions_for_bug))
28
29+ def test_getSubscriptionsForBug_with_filter_on_level(self):
30+ # All structural subscriptions have a level for bug notifications
31+ # which getSubscriptionsForBug() observes.
32+ bugtask = self.makeBugTask()
33+
34+ # Create a new METADATA level subscription on self.target.
35+ login_person(self.ordinary_subscriber)
36+ subscription = self.target.addSubscription(
37+ self.ordinary_subscriber, self.ordinary_subscriber)
38+ subscription.bug_notification_level = BugNotificationLevel.METADATA
39+
40+ # The subscription is found when looking for NOTHING or above.
41+ subscriptions_for_bug = self.target.getSubscriptionsForBug(
42+ bugtask.bug, BugNotificationLevel.NOTHING)
43+ self.assertEqual([subscription], list(subscriptions_for_bug))
44+ # The subscription is found when looking for METADATA or above.
45+ subscriptions_for_bug = self.target.getSubscriptionsForBug(
46+ bugtask.bug, BugNotificationLevel.METADATA)
47+ self.assertEqual([subscription], list(subscriptions_for_bug))
48+ # The subscription is not found when looking for COMMENTS or above.
49+ subscriptions_for_bug = self.target.getSubscriptionsForBug(
50+ bugtask.bug, BugNotificationLevel.COMMENTS)
51+ self.assertEqual([], list(subscriptions_for_bug))
52+
53 def test_getSubscriptionsForBug_with_multiple_filters(self):
54 # If multiple filters exist for a subscription, all filters must
55 # match.

Subscribers

People subscribed via source and target branches

to status/vote changes: