Home

Awesome

django-friendship-network

Django Friendship module that works on Neo4j.

You need to have a Neo4j instance running. Tested under neo4j-community-1.9.4-unix.

Why?

Using Graph databases instead of relational databases allows us performing complex graph operations such as friend suggestion and further social network analysis.

Requirements

Usage

Add friendship_network to INSTALLED_APPS.

To use friendship_network in your views::

from django.contrib.auth.models import User
from friendship_network.models import FriendshipManager, FollowManager

def my_friendship_view(request):
    # Adding, removing and testing friendship.
    FriendshipManager.add_friend(request.user.pk, other_user.pk)
    FriendshipManager.are_friends(request.user.pk, other_user.pk)
    FriendshipManager.remove_friend(other_user.pk, request.user.pk)
    
    # List of this user's friends
    all_friends = FriendshipManager.get_friends(request.user.pk)

    # Gets unread friendship request count
    unread_count = FriendshipManager.get_unread_incoming_request_count(request.user.pk)
    
    # List all unread friendship requests
    requests = FriendshipManager.get_unread_incoming_requests(request.user.pk)
    
    # List all friendship requests
    requests = FriendshipManager.get_incoming_requests(request.user.pk)
    
    # List all guys who want to be friend with the user.
    requesters = FriendshipManager.get_requesting_friends(request.user.pk)
    
    # List all guys who the user wants to be friend with
    wannabes = FriendshipManager.get_requesting_friends(request.user.pk)
    
    # List all sent friendship requests
    requests = FriendshipManager.get_sent_requests(request.user.pk)


    ### Managing friendship relationships
    other_user = User.objects.get(pk=1)
    successful = FriendshipManager.send_friendship_request(
                                  request.user.pk, other_user.pk)
    
def my_follow_view(request):
    other_user = User.objects.get(pk=1)
    
    # List of this user's followers
    all_followers = FollowManager.get_followers(request.user.pk)

    # List of who this user is following
    following = FollowManager.get_following(request.user.pk)

    # Create request.user follows other_user relationship
    FollowManager.follow(request.user.pk, other_user.pk)
    
    # Unfollow
    FollowManager.unfollow(request.user.pk, other_user.pk)
    
def my_ban_view(request):
    # User bans another user.
    BanManager.ban(request.user.pk, other_user.pk)
    
    # User removes ban on another user.
    BanManager.unban(request.user.pk, other_user.pk)
    

TODO