def getSubscription(self, principal=None): if principal is None: principal = getPrincipal().id try: return getUtility(ISubscriptions).search( object = self.context, principal={'any_of': (principal,)}, visibility = None, type = {'any_of': (self.type,)})[0] except IndexError: return None
def isSubscribedInParents(self, context=None, principal=None): if principal is None: principal = getPrincipal().id ids = getUtility(IIntIds) if context is None: context = self.context contexts = INotificationsContexts(context).getContexts() if getUtility(ISubscriptions).search( object = {'any_of': contexts}, principal={'any_of': (principal,)}, visibility = None, type = {'any_of': (self.type,)}): return True return False
def unsubscribe(self, principal=None): if principal is None: principal = getPrincipal().id getUtility(ISubscriptions).removeSubscription( self.context, principal, self.type)
def subscribe(self, principal=None): if principal is None: principal = getPrincipal().id if not self.isSubscribed(principal): getUtility(ISubscriptions).add(self.context, self.create(principal))