Creating or deleting the link between a User and any particular object is as easy as calling a function:
from actstream.actions import follow, unfollow # Follow the group (where it is an actor). follow(request.user, group) # Stop following the group. unfollow(request.user, group)
By default, follow only follows the object where it is an actor. To also include activity stream items where the object is the target or action_object, set the actor_only parameter to False:
# Follow the group wherever it appears in activity. follow(request.user, group, actor_only=False)
You can also just make a request to the actstream_follow view while authenticated. The request can use either GET or POST.
curl -X GET http://localhost:8000/activity/follow/<content_type_id>/<object_id>/ # Follow curl -X GET http://localhost:8000/activity/unfollow/<content_type_id>/<object_id>/?next=/blog/ # Unfollow and redirect
If you wish to pass the actor_only parameter, the procedure is identical, only you will use follow_all and unfollow_all in your request. For example:
curl -X GET http://localhost:8000/activity/follow_all/<content_type_id>/<object_id>/ # Follow curl -X GET http://localhost:8000/activity/unfollow_all/<content_type_id>/<object_id>/?next=/blog/ # Unfollow and redirect
Then the current logged in user will follow the actor defined by content_type_id & object_id. Optional next parameter is URL to redirect to.
There is also a function actstream.actions.unfollow which removes the link and takes the same arguments as actstream.actions.follow
Now to retrieve the follower/following relationships you can use the convenient accessors
from actstream.models import following, followers followers(request.user) # returns a list of Users who follow request.user following(request.user) # returns a list of actors who request.user is following
To limit the actor models for the following relationship, just pass the model classes
from django.contrib.auth.models import User, Group following(request.user, User) # returns a list of users who request.user is following following(request.user, Group) # returns a list of groups who request.user is following