Skip to content

aladagemre/django-friendship-network

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

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

  • Django >= 1.4
  • neomodel
  • pytz

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

  • Friend suggestion
  • Hiding banned users.

About

Django Friendship module with Neo4j infrastructure

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages