Ejemplo n.º 1
0
 def activity_notify(self):
     """Notify everyone who the author has shared with"""
     feeds = [
         feed_manager.get_notification_feed(u.id)
         for u in self.shared_with_users.all()
     ]
     return feeds
Ejemplo n.º 2
0
    def _load_feed(self, request):
        """
        Format:
        user:current:notification

        <model>:<id>:<feed_name>
        :param request:
        :return:
        """
        raw_feed = request.query_params.get('feed', None)

        if raw_feed is None:
            return None

        elements = raw_feed.split(':')

        if len(elements) != 3:
            return None

        #
        # Real shoddy logic here.

        # Current user notification feed.
        if elements[0] == 'user' and elements[1] == 'current' and \
                elements[2] == 'notification':
            return feed_manager.get_notification_feed(request.user.id)

        # Group feed
        if elements[0] == 'group' and elements[1] and elements[2] == 'timeline':
            return feed_manager.get_group_feed(elements[1])

        return None
Ejemplo n.º 3
0
 def activity_notify(self):
     # Here we add the follow activity to the notification feed of the bet_group's owner
     # to notify him about his new subscriber.
     # Then you can define an aggregation statement for the notification feed and you are done.
     return [
         feed_manager.get_notification_feed(self.follow_object.owner.id)
     ]
Ejemplo n.º 4
0
def notification_feed(request):
    enricher = Enrich(request.user)
    context = {}
    feed = feed_manager.get_notification_feed(request.user.id)
    activities = feed.get(limit=25, mark_seen='all')['results']
    context['activities'] = enricher.enrich_aggregated_activities(activities)
    response = render(request, 'core/notification_feed.html', context)
    return response
Ejemplo n.º 5
0
 def activity_notify(self):
     # get liked object
     # content_type, object_id
     following_instance = self.target
     if following_instance:
         # Notify to following user
         target_feed = feed_manager.get_notification_feed(following_instance.id)
     return [target_feed]
Ejemplo n.º 6
0
def notification_feed(request):
    enricher = Enrich(request.user)
    context = RequestContext(request)
    feed = feed_manager.get_notification_feed(request.user.id)
    activities = feed.get(limit=25, mark_seen='all')['results']
    context['activities'] = enricher.enrich_aggregated_activities(activities)
    response = render_to_response('core/notification_feed.html', context)
    return response
Ejemplo n.º 7
0
def notification_feed(request):
    enricher = Enrich(request.user)
    context = RequestContext(request)
    feed = feed_manager.get_notification_feed(request.user.id)
    activities = feed.get(limit=25, mark_seen="all")["results"]
    context["activities"] = enricher.enrich_aggregated_activities(activities)
    response = render_to_response("core/notification_feed.html", context)
    return response
Ejemplo n.º 8
0
def stream_token(request):

    if request.user.is_authenticated:
        stream_token = feed_manager.get_notification_feed(
            request.user.id).get_readonly_token()
    else:
        stream_token = None

    return {'stream_token': stream_token}
Ejemplo n.º 9
0
def notifications(request):
    user = request.user

    notification_feed = feed_manager.get_notification_feed(user.id)
    notification_stats = notification_feed.get(limit=10, mark_seen=True)
    enricher = Enrich()
    notifications = enricher.enrich_aggregated_activities(
        notification_stats['results'])

    return render(request, 'activity/aggregated/report.html',
                  {'notifications': notifications})
Ejemplo n.º 10
0
    def activity_notify(self):
        target_feed = []
        # 해당 hashtag(#) 키워드의 피드(e.g. hashtag:패션)에 activity 추가
        for keyword in self.parse_hashtags():
            target_feed.append(feed_manager.get_feed('hashtag', keyword))
        for user in self.parse_mentions():
            # mention(@)한 유저의 타임라인 피드에 activity 추가
            # get_news_feeds는 기본으로 인자로 받은 user의 1) timeline, 2) timeline_aggregated
            # 피드를 가져옴
            target_feed.append(
                feed_manager.get_news_feeds(user.id)['timeline'])
            # mention(@)한 유저의 notification 피드에 activity 추가
            target_feed.append(feed_manager.get_notification_feed(user.id))

        return target_feed
Ejemplo n.º 11
0
 def activity_notify(self):
     SomeModel = self.content_type.model_class()
     object_id = self.object_id
     qs = SomeModel.objects.filter(id=self.object_id)
     if qs.exists():
         target_instance = SomeModel.objects.filter(
             id=self.object_id).first()
         if target_instance:
             user_object = target_instance.user
             if user_object:
                 user_id = user_object.id
                 author_id = self.user.id
                 if user_id != author_id:
                     # notify
                     target_feed = feed_manager.get_notification_feed(
                         user_id)
                     return [target_feed]
     return []
Ejemplo n.º 12
0
 def post(self, request, format = None):
     try:
         if request.META.get('CONTENT_TYPE') == "application/json":
             if "userid" in request.data and "profileid" in request.data:
                 enricher = Enrich(User.objects.get(pk=request.data['userid']))
                 context = {}
                 notifications = feed_manager.get_notification_feed(request.data['userid'])
                 activities = notifications.get(limit=25)['results']
                 print (activities)
                 activities =  serializers.serialize('json', activities)
                 #context['activities'] = enricher.enrich_aggregated_activities(activities)
                 return Response({'status':"success",'notifications':context}, status=status.HTTP_200_OK) 
             else:
                 return Response({'status':"missing_params"}, status=400)
         else:
             return Response(status=status.HTTP_400_BAD_REQUEST)
     except Exception as e:
         print(e)
         return Response({'status':"server_exception",'details':str(e)}, status=501)
Ejemplo n.º 13
0
 def test_get_notification_feed(self):
     feed = feed_manager.get_notification_feed(42)
     self.assertEqual(feed.id, 'notification:42')
Ejemplo n.º 14
0
 def test_get_notification_feed(self):
     feed = feed_manager.get_notification_feed(42)
     self.assertEqual(feed.feed_id, 'notification:42')
Ejemplo n.º 15
0
 def activity_notify(self):
     target_feed = feed_manager.get_notification_feed(self.friend_id)
     return [target_feed]
 def list(self, request):
     feed = feed_manager.get_notification_feed(self.request.user.id)
     activities = feed.get()['results']
     enriched_activities = enricher.enrich_aggregated_activities(activities)
     serializer = get_activity_serializer(enriched_activities, SnippetSerializer, None, many=True, context={'request': request})
     return Response(serializer.data)
Ejemplo n.º 17
0
 def activity_notify(self):
     target_feed = feed_manager.get_notification_feed(self.target_id)
     return [target_feed]
 def activity_notify(self):
     return [feed_manager.get_notification_feed(self.owner_id)]
Ejemplo n.º 19
0
    def get(self, request, page=0, format=None):
        page = self.kwargs['page']
        if not page:
            page_num = 0
        else:
            page_num = int(page) * 12
        feeds = feed_manager.get_notification_feed(request.user.id)
        notifications = feeds.get(limit=12, offset=page_num,
                                  mark_seen='all')['results']
        enriched_activities = enricher.enrich_aggregated_activities(
            notifications)
        feed = []
        for activity in enriched_activities:
            activity_type = activity.get('verb')
            activity_actor_count = activity.get('actor_count')
            activity_time = activity.get('updated_at')
            activity_activities = activity.get('activities')
            feed_object = None
            if activity_type == 'comment':
                user_list = []
                target_content_type = None
                target_content_id = None
                for small_activity in activity_activities[:2]:

                    actor_instance = small_activity.get('actor')
                    target_address = small_activity.get('target_address')
                    if not target_content_id and target_address:
                        target_content_type, target_content_id = target_address.split(
                            ':')
                    if actor_instance:
                        user_data = UserRowSerializer(actor_instance,
                                                      context={
                                                          'request': request
                                                      }).data
                        user_list.append(user_data)
                feed_object = {
                    'users': user_list,
                    'updated_at': activity_time,
                    'target_type': target_content_type,
                    'target_id': target_content_id,
                    'actor_count': activity_actor_count,
                    'activity_type': activity_type
                }
                feed.append(feed_object)
            elif activity_type == 'like':
                user_list = []
                target_content_type = None
                target_content_id = None
                for small_activity in activity_activities[:2]:
                    actor_instance = small_activity.get('actor')
                    target_address = small_activity.get('target_address')
                    if not target_content_id and target_address:
                        target_content_type, target_content_id = target_address.split(
                            ':')
                    if actor_instance:
                        user_data = UserRowSerializer(actor_instance,
                                                      context={
                                                          'request': request
                                                      }).data
                        user_list.append(user_data)
                feed_object = {
                    'users': user_list,
                    'updated_at': activity_time,
                    'target_type': target_content_type,
                    'target_id': target_content_id,
                    'actor_count': activity_actor_count,
                    'activity_type': activity_type
                }
                feed.append(feed_object)
            elif activity_type == 'follow':
                user_list = []
                target_content_type = None
                target_content_id = None
                for small_activity in activity_activities[:2]:
                    actor_instance = small_activity.get(
                        'actor')  #serialize it!
                    target_address = small_activity.get('target_address')
                    target_address = small_activity.get('target_address')
                    if not target_content_id and target_address:
                        target_content_type, target_content_id = target_address.split(
                            ':')
                    if actor_instance:
                        user_data = UserRowSerializer(actor_instance,
                                                      context={
                                                          'request': request
                                                      }).data
                        user_list.append(user_data)
                feed_object = {
                    'users': user_list,
                    'updated_at': activity_time,
                    'actor_count': activity_actor_count,
                    'activity_type': activity_type
                }
                feed.append(feed_object)
            else:
                # possible exception
                pass
        json_output = feed
        return Response(json_output, status=status.HTTP_200_OK)
Ejemplo n.º 20
0
 def activity_notify(self):
     from stream_django.feed_manager import feed_manager
     return [feed_manager.get_notification_feed('thierry')]
Ejemplo n.º 21
0
 def activity_notify(self):
     # Here we add the follow activity to the notification feed of the target user
     # to notify him about his new follower.
     # Then you can define an aggregation statement for the notification feed and you are done.
     return [feed_manager.get_notification_feed(self.target_user.id)]
Ejemplo n.º 22
0
    def activity_notify(self):
        from stream_django.feed_manager import feed_manager

        return [feed_manager.get_notification_feed("thierry")]
Ejemplo n.º 23
0
 def activity_notify(self):
     # access the followup attr of comment_xtd and notify if True
     obj = self.get_object()
     if isinstance(obj, games.models.TotalBet):
         return [feed_manager.get_notification_feed(obj.user.id)]