def test_walk_subscriptions(self): subs1 = list((path_in_site(obj), sub) for obj, n, sub in walk_subscriptions(self.portal)) self.assertEqual(len(subs1), 2) self.assertTrue(('f1/b/2', self.user2_sub) in subs1) self.assertTrue(('f1/b', self.user1_sub) in subs1) subs2 = list((path_in_site(obj), sub) for obj, n, sub in walk_subscriptions(self.portal['f1']['b']['2'])) self.assertEqual(len(subs2), 1) self.assertTrue(('f1/b/2', self.user2_sub) in subs1) subs3 = list(walk_subscriptions(self.portal['f1']['a'])) self.assertEqual(len(subs3), 0)
def list_user_subscriptions(self, REQUEST, get_all=False): user_id = self.get_user_id(REQUEST) if get_all: obj = self.get_context().getSite() else: obj = self.get_context() for obj, n, subscription in walk_subscriptions(obj): if not isinstance(subscription, AccountSubscription): continue if subscription.user_id != user_id: continue yield { 'location': path_in_site(obj), 'notif_type': subscription.notif_type, 'lang': subscription.lang, }
def walk_site_subscriptions(self): return set((sub.user_id, path_in_site(obj), sub.notif_type, sub.lang) for obj, n, sub in walk_subscriptions(self.portal))
def subscr(): return set((path_in_site(obj), sub.notif_type, sub.user_id) for obj, n, sub in walk_subscriptions(self.portal))