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
=== modified file 'lib/lp/registry/model/structuralsubscription.py'
--- lib/lp/registry/model/structuralsubscription.py 2010-10-05 14:43:49 +0000
+++ lib/lp/registry/model/structuralsubscription.py 2010-10-05 14:43:50 +0000
@@ -516,10 +516,12 @@
516 ]516 ]
517517
518 conditions = [518 conditions = [
519 # There's no filter or ...519 StructuralSubscription.bug_notification_level >= level,
520 Or(BugSubscriptionFilter.id == None,520 Or(
521 # there is a filter ...521 # There's no filter or ...
522 And(522 BugSubscriptionFilter.id == None,
523 # there is a filter and ...
524 And(
523 # there's no status filter, or there is a status filter525 # there's no status filter, or there is a status filter
524 # and and it matches.526 # and and it matches.
525 Or(BugSubscriptionFilterStatus.id == None,527 Or(BugSubscriptionFilterStatus.id == None,
526528
=== modified file 'lib/lp/registry/tests/test_structuralsubscriptiontarget.py'
--- lib/lp/registry/tests/test_structuralsubscriptiontarget.py 2010-10-05 14:43:49 +0000
+++ lib/lp/registry/tests/test_structuralsubscriptiontarget.py 2010-10-05 14:43:50 +0000
@@ -247,6 +247,30 @@
247 bugtask.bug, BugNotificationLevel.NOTHING)247 bugtask.bug, BugNotificationLevel.NOTHING)
248 self.assertEqual([subscription], list(subscriptions_for_bug))248 self.assertEqual([subscription], list(subscriptions_for_bug))
249249
250 def test_getSubscriptionsForBug_with_filter_on_level(self):
251 # All structural subscriptions have a level for bug notifications
252 # which getSubscriptionsForBug() observes.
253 bugtask = self.makeBugTask()
254
255 # Create a new METADATA level subscription on self.target.
256 login_person(self.ordinary_subscriber)
257 subscription = self.target.addSubscription(
258 self.ordinary_subscriber, self.ordinary_subscriber)
259 subscription.bug_notification_level = BugNotificationLevel.METADATA
260
261 # The subscription is found when looking for NOTHING or above.
262 subscriptions_for_bug = self.target.getSubscriptionsForBug(
263 bugtask.bug, BugNotificationLevel.NOTHING)
264 self.assertEqual([subscription], list(subscriptions_for_bug))
265 # The subscription is found when looking for METADATA or above.
266 subscriptions_for_bug = self.target.getSubscriptionsForBug(
267 bugtask.bug, BugNotificationLevel.METADATA)
268 self.assertEqual([subscription], list(subscriptions_for_bug))
269 # The subscription is not found when looking for COMMENTS or above.
270 subscriptions_for_bug = self.target.getSubscriptionsForBug(
271 bugtask.bug, BugNotificationLevel.COMMENTS)
272 self.assertEqual([], list(subscriptions_for_bug))
273
250 def test_getSubscriptionsForBug_with_multiple_filters(self):274 def test_getSubscriptionsForBug_with_multiple_filters(self):
251 # If multiple filters exist for a subscription, all filters must275 # If multiple filters exist for a subscription, all filters must
252 # match.276 # match.

Subscribers

People subscribed via source and target branches

to status/vote changes: