예제 #1
0
 def wouldCreateNotification(self, discussion_id, verb, object):
     parentWouldCreate = super(NotificationSubscriptionFollowSyntheses,
                               self).wouldCreateNotification(
                                   discussion_id, verb, object)
     return parentWouldCreate and (verb == CrudVerbs.CREATE) and isinstance(
         object,
         SynthesisPost) and discussion_id == object.get_discussion_id()
예제 #2
0
 def wouldCreateNotification(self, discussion_id, verb, object):
     parentWouldCreate = super(NotificationSubscriptionFollowAllMessages,
                               self).wouldCreateNotification(
                                   discussion_id, verb, object)
     return (parentWouldCreate
             and (verb in (CrudVerbs.CREATE, CrudVerbs.UPDATE))
             and isinstance(object, Post)
             and object.publication_state == PublicationStates.PUBLISHED
             and discussion_id == object.get_discussion_id())
예제 #3
0
 def wouldCreateNotification(self, discussion_id, verb, object):
     parentWouldCreate = super(NotificationSubscriptionFollowOwnMessageDirectReplies, self).wouldCreateNotification(discussion_id, verb, object)
     return ( parentWouldCreate
              and (verb == CrudVerbs.CREATE)
              and isinstance(object, Post)
              and discussion_id == object.get_discussion_id()
              and object.parent is not None
              and object.parent.creator == self.user
              )
예제 #4
0
    def findApplicableInstances(cls, discussion_id, verb, object, user=None):
        """
        Returns all subscriptions that would fire on the object, and verb given

        This naive implementation instanciates every ACTIVE subscription for every user,
        and calls "would fire" for each.  It is expected that most subclasses will
        override this with a more optimal implementation
        """
        applicable_subscriptions = []
        subscriptionsQuery = cls.default_db.query(cls)
        subscriptionsQuery = subscriptionsQuery.filter(cls.status==NotificationSubscriptionStatus.ACTIVE);
        subscriptionsQuery = subscriptionsQuery.filter(cls.discussion_id==discussion_id);
        if user:
            subscriptionsQuery = subscriptionsQuery.filter(cls.user==user)
        #print "findApplicableInstances(called) with discussion_id=%s, verb=%s, object=%s, user=%s"%(discussion_id, verb, object, user)
        #print repr(subscriptionsQuery.all())
        for subscription in subscriptionsQuery:
            if(subscription.wouldCreateNotification(object.get_discussion_id(), verb, object)):
                applicable_subscriptions.append(subscription)
        return applicable_subscriptions
예제 #5
0
 def wouldCreateNotification(self, discussion_id, verb, object):
     return discussion_id == object.get_discussion_id(
     ) and self.user.is_participant(discussion_id)
예제 #6
0
 def wouldCreateNotification(self, discussion_id, verb, object):
     discussion = Discussion.get(object.get_discussion_id())
     return discussion_id == object.get_discussion_id() and discussion in self.user.participant_in_discussion