All Projects → revsys → Django Friendship

revsys / Django Friendship

Licence: other
Django app to manage following and bi-directional friendships

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Django Friendship

Activflow
Generic, light-weight & extensible Workflow Engine for agile automation of Business Processes | Django, Python
Stars: ✭ 510 (-10.37%)
Mutual labels:  django
Django Project Template
Project template layout for Django 3.0+
Stars: ✭ 530 (-6.85%)
Mutual labels:  django
Scantron
A distributed nmap / masscan scanning framework complete with an API client for automation workflows
Stars: ✭ 542 (-4.75%)
Mutual labels:  django
Django Image Cropping
Django helper application to easily and non-destructively crop arbitrarily large images in admin and frontend.
Stars: ✭ 511 (-10.19%)
Mutual labels:  django
Django React Blog
Simple blog built with Django and React/Redux, deployed with Docker, and served with nginx/uwsgi.
Stars: ✭ 528 (-7.21%)
Mutual labels:  django
Django Oscar
Domain-driven e-commerce for Django
Stars: ✭ 5,152 (+805.45%)
Mutual labels:  django
Ops
基于centos6+python3.6+django2+ansible2.4+celery4.2 运维管理系统,目前实现功能:用户和用户组管理、资产管理、集成ansible2.4、简易堡垒机(主机分配支持rdp以及vnc、用户分配、文件上传下载、配置禁用命令清单、操作录像回放功能)、CI/CD(支持git仓库和svn仓库)、数据库管理(一部分)、celery任务编排、知识库及文件共享
Stars: ✭ 502 (-11.78%)
Mutual labels:  django
Osf.io
Facilitating Open Science
Stars: ✭ 565 (-0.7%)
Mutual labels:  django
Polemarch
Simple WEB gui for infrastructure management by ansible playbooks or modules. This is only mirror with bins in releases.
Stars: ✭ 530 (-6.85%)
Mutual labels:  django
Django Rest Framework Mongoengine
Mongoengine support for Django Rest Framework
Stars: ✭ 544 (-4.39%)
Mutual labels:  django
Django On Docker
Dockerizing Django with Postgres, Gunicorn, and Nginx
Stars: ✭ 516 (-9.31%)
Mutual labels:  django
Djangoforbeginners
Source code for Django For Beginners
Stars: ✭ 527 (-7.38%)
Mutual labels:  django
Django Lfs
An online-shop based on Django
Stars: ✭ 536 (-5.8%)
Mutual labels:  django
Django Messages
A Django application handling private messages between users.
Stars: ✭ 512 (-10.02%)
Mutual labels:  django
Devops
😃DevOps System - ❤️devEops❤️ - 开发自运维平台 - 运维体系解决方案,适用于多个应用环境的资产组织以及运维脚本的适配运行。
Stars: ✭ 555 (-2.46%)
Mutual labels:  django
Django Js Reverse
Javascript url handling for Django that doesn't hurt.
Stars: ✭ 502 (-11.78%)
Mutual labels:  django
Django Sesame
"Magic Links" - URLs with authentication tokens for one-click login
Stars: ✭ 533 (-6.33%)
Mutual labels:  django
Django S3direct
Directly upload files to S3 compatible services with Django.
Stars: ✭ 570 (+0.18%)
Mutual labels:  django
Django Leaflet
Use Leaflet in your Django projects
Stars: ✭ 563 (-1.05%)
Mutual labels:  django
Opman Django
💯✅自动化运维平台:CMDB、CI/CD、DevOps、资产管理、任务编排、持续交付、系统监控、运维管理、配置管理
Stars: ✭ 539 (-5.27%)
Mutual labels:  django

django-friendship

This application enables you to create and manage follows, blocks 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.
  • A blocklist for each user of users they've blocked.
  • Tags to include information about friendships, blocks and follows in your templates.
  • Integration with AUTH_USER_MODEL.
  • Validation to prevent common mistakes.
  • Faster server response time through caching

Requirements

Django 1.11+ since v1.7.0 (latest release supporting Django 1.10 is v1.6.0)

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 = [
    ...
    path('friendship/', include('friendship.urls'))
    ...
]

Note: If you are migrating from django-friendship v1.6.x, you'll need to rollback your migrations and fake migration 0002

$ ./manage.py migrate friendship 0001
$ ./manage.py migrate friendship 0002 --fake

If you're migrating from v1.7.x, you'll likely have to fake 0003 as well:

$ ./manage.py migrate friendship 0003 --fake

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, Block

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)

Getting Data about Blocks

  • List of a user's blockers: Block.objects.blockers(request.user)
  • List of who a user is blocking: Block.objects.blocking(request.user)
  • Test if a user is blocked: Block.objects.is_blocked(request.user, other_user) == True

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(to_user=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)

Make request.user block other_user:

Block.objects.add_block(request.user, other_user)

Make request.user unblock other_user:

Block.objects.remove_block(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 %}
{% blockers request.user %}
{% blocking 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
  • block_created
  • block_removed

Contributing

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

Need help?

REVSYS can help with your Python, Django, and infrastructure projects. If you have a question about this project, please open a GitHub issue. If you love us and want to keep track of our goings-on, here's where you can find us online:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].