(self, obj, with_user_activity=False, follow_flag=None, **kwargs)
return qs.filter(q, **kwargs)
Create a stream of the most recent actions by objects that the user is following.
Create a stream of the most recent actions by objects that the user is following.
Create a stream of the most recent actions by objects that the user is following .
def user(self, obj, with_user_activity=False, follow_flag=None, **kwargs):
        """Create a stream of the most recent actions by objects that the user is following."""
        q = Q()
        qs = self.public()

        if not obj:
            return qs.none()

        check(obj)

        if with_user_activity:
            q = q | Q(
                actor_content_type=ContentType.objects.get_for_model(obj),
                actor_object_id=obj.pk
            )

        follows = apps.get_model('actstream', 'follow').objects.filter(user=obj)
        if follow_flag:
            follows = follows.filter(flag=follow_flag)
            
        content_types = ContentType.objects.filter(
            pk__in=follows.values('content_type_id')
        )

        if not (content_types.exists() or with_user_activity):
            return qs.none()

        for content_type in content_types:
            object_ids = follows.filter(content_type=content_type)
            q = q | Q(
                actor_content_type=content_type,
                actor_object_id__in=object_ids.values('object_id')
            ) | Q(
                target_content_type=content_type,
                target_object_id__in=object_ids.filter(
                    actor_only=False).values('object_id')
            ) | Q(
                action_object_content_type=content_type,
                action_object_object_id__in=object_ids.filter(
                    actor_only=False).values('object_id')
            )

        return qs.filter(q, **kwargs)
def user ( self , obj , with_user_activity = False , follow_flag = None , * * kwargs ) : q = Q ( ) qs = self . public ( ) if not obj : return qs . none ( ) check ( obj ) if with_user_activity : q = q | Q ( actor_content_type = ContentType . objects . get_for_model ( obj ) , actor_object_id = obj . pk ) follows = apps . get_model ( 'actstream' , 'follow' ) . objects . filter ( user = obj ) if follow_flag : follows = follows . filter ( flag = follow_flag ) content_types = ContentType . objects . filter ( pk__in = follows . values ( 'content_type_id' ) ) if not ( content_types . exists ( ) or with_user_activity ) : return qs . none ( ) for content_type in content_types : object_ids = follows . filter ( content_type = content_type ) q = q | Q ( actor_content_type = content_type , actor_object_id__in = object_ids . values ( 'object_id' ) ) | Q ( target_content_type = content_type , target_object_id__in = object_ids . filter ( actor_only = False ) . values ( 'object_id' ) ) | Q ( action_object_content_type = content_type , action_object_object_id__in = object_ids . filter ( actor_only = False ) . values ( 'object_id' ) ) return qs . filter ( q , * * kwargs )