Skip to main content

Django-Friendship

Build Status

This application enables you to create and manage follows and bi-d This application enables you to create and manage follows and bi-directional friendships between users. It features:

  • Friendship request objects that can be accepted, rejected, canceled, or marked as viewed.

  • Hooks to easily list all friend requests sent or received by a given user, filtered by the status of the request.

  • Tags to include information about friendships and follows in your templates.

  • Integration with AUTH_USER_MODEL.

  • Validation to prevent common mistakes.

  • Faster server response time through caching

Requirements

Django 1.4 since v0.9.0 (latest release supporting Django 1.3 is v0.8.3)

Installation

  1. pip install django-friendship

  2. add "friendship" to INSTALLED_APPS and run python manage.py migrate.

  3. Use the friendship manager in your own views, or wire up the URLconf to include the builtin views:

    urlpatterns = [
        ...
        url(r'^friendship/', include('friendship.urls'))
        ...
    ]

Usage

django-friendship provides a free API that gives you several ways to create and manage friendship requests or follows in your views. Add the following at the top of your views.py:

from django.contrib.auth.models import User
from friendship.models import Friend, Follow

Getting Data about Friendships

  • List all of a user’s friends: Friend.objects.friends(request.user)

  • List all unread friendship requests: Friend.objects.unread_requests(user=request.user)

  • List all unrejected friendship requests: Friend.objects.unrejected_requests(user=request.user)

  • Count of all unrejected friendship requests: Friend.objects.unrejected_request_count(user=request.user)

  • List all rejected friendship requests: Friend.objects.rejected_requests(user=request.user)

  • Count of all rejected friendship requests: Friend.objects.rejected_request_count(user=request.user)

  • List of all sent friendship requests: Friend.objects.sent_requests(user=request.user)

  • Test if two users are friends: Friend.objects.are_friends(request.user, other_user) == True

Getting Data about Follows

  • List of a user’s followers: Follow.objects.followers(request.user)

  • List of who a user is following: Follow.objects.following(request.user)

Managing Friendships and Follows

  • Create a friendship request:

    other_user = User.objects.get(pk=1)
    Friend.objects.add_friend(
        request.user,                               # The sender
        other_user,                                 # The recipient
        message='Hi! I would like to add you')      # This message is optional
  • Let the user who received the request respond:

    from friendship.models import FriendshipRequest
    
    friend_request = FriendshipRequest.objects.get(pk=1)
    friend_request.accept()
    # or friend_request.reject()
  • To remove the friendship relationship between request.user and other_user, do the following:

    Friend.objects.remove_friend(request.user, other_user)
  • Make request.user a follower of other_user:

    Follow.objects.add_follower(request.user, other_user)

Templates

You can use django-friendship tags in your templates. First enter:

{% load friendshiptags %}

Then use any of the following:

{% friends request.user %}
{% followers request.user %}
{% following request.user %}
{% friend_requests request.user %}

Signals

django-friendship emits the following signals:

  • friendship_request_created

  • friendship_request_rejected

  • friendship_request_canceled

  • friendship_request_accepted

  • friendship_removed

  • follower_created

  • following_created

  • follower_removed

  • following_removed

Contributing

Development takes place on GitHub. Bug reports, patches, and fixes are always welcome!

Metadata

Release files for django-friendship 1.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-friendship 1.5.0
File Size Uploaded
django-friendship-1.5.0.tar.gz 17.7 kB Details

Release files / django-friendship-1.5.0.tar.gz

Download URL django-friendship-1.5.0.tar.gz
Size 17.7 kB
Tags Source
SHA-256 checksum
How to use checksums
414f367802f033d90f443b596d07d82776a58fc910a9d53276f1d808aabf4bdf
BLAKE2b-256 checksum
How to use checksums
fa72079f428dcc91616ac96977bd693186aa328f670504c6a86020b9cf8624d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.11.0

2 release files

1.10.0

2 release files

1.9.6

2 release files

1.9.5

2 release files

1.9.4

1 release file

1.9.3

1 release file

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.2

1 release file

1.8.1

1 release file

1.8.0

1 release file

1.7.1

1 release file

1.7.0

1 release file

1.6.0

1 release file

This release

1.5.0 This release

1 release file

1.3.3

1 release file

1.3.2

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.0

1 release file

1.1.0

1 release file

1.0.0

1 release file

0.9.0

1 release file

0.8.3

1 release file

0.8.1

1 release file

0.8.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page