{ "info": { "author": "Frank Wiles", "author_email": "frank@revsys.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "# django-friendship\n\n\n\nThis application enables you to create and manage follows, blocks and bi-directional friendships between users. It features:\n\n- Friendship request objects that can be accepted, rejected, canceled, or marked as viewed.\n- Hooks to easily list all friend requests sent or received by a given user, filtered by the status of the request.\n- A blocklist for each user of users they've blocked.\n- Tags to include information about friendships, blocks and follows in your templates.\n- Integration with `AUTH_USER_MODEL`.\n- Validation to prevent common mistakes.\n- Faster server response time through caching\n\n## Requirements\n\n**Django 1.11+** since v1.7.0 (latest release supporting **Django 1.10** is v1.6.0)\n\n## Installation\n\n1. `pip install django-friendship`\n2. add `\"friendship\"` to `INSTALLED_APPS` and run `python manage.py migrate`.\n3. Use the friendship manager in your own views, or wire up the URLconf to include the builtin views:\n\n```python\nurlpatterns = [\n ...\n url(r'^friendship/', include('friendship.urls'))\n ...\n]\n```\n\nNote: If you are migrating from django-friendship `v1.6.x`, you'll need to rollback your migrations and fake\nmigration `0002`\n\n```shell\n$ ./manage.py migrate friendship 0001\n$ ./manage.py migrate friendship 0002 --fake\n```\n\nIf you're migrating from `v1.7.x`, you'll likely have to fake `0003` as well:\n\n```shell\n$ ./manage.py migrate friendship 0003 --fake\n```\n\n## Usage\n\n`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`:\n\n```python\nfrom django.contrib.auth.models import User\nfrom friendship.models import Friend, Follow, Block\n```\n\n### Getting Data about Friendships\n\n- List all of a user's friends: `Friend.objects.friends(request.user)`\n- List all unread friendship requests: `Friend.objects.unread_requests(user=request.user)`\n- List all unrejected friendship requests: `Friend.objects.unrejected_requests(user=request.user)`\n- Count of all unrejected friendship requests: `Friend.objects.unrejected_request_count(user=request.user)`\n- List all rejected friendship requests: `Friend.objects.rejected_requests(user=request.user)`\n- Count of all rejected friendship requests: `Friend.objects.rejected_request_count(user=request.user)`\n- List of all sent friendship requests: `Friend.objects.sent_requests(user=request.user)`\n- Test if two users are friends: `Friend.objects.are_friends(request.user, other_user) == True`\n\n### Getting Data about Follows\n\n- List of a user's followers: `Follow.objects.followers(request.user)`\n- List of who a user is following: `Follow.objects.following(request.user)`\n\n### Getting Data about Blocks\n\n- List of a user's blockers: `Block.objects.blockers(request.user)`\n- List of who a user is blocking: `Block.objects.blocking(request.user)`\n- Test if a user is blocked: `Block.objects.is_blocked(request.user, other_user) == True`\n\n### Managing Friendships and Follows\n\n#### Create a friendship request:\n\n```python\nother_user = User.objects.get(pk=1)\nFriend.objects.add_friend(\n request.user, # The sender\n other_user, # The recipient\n message='Hi! I would like to add you') # This message is optional\n```\n\n#### Let the user who received the request respond:\n\n```python\nfrom friendship.models import FriendshipRequest\n\nfriend_request = FriendshipRequest.objects.get(to_user=1)\nfriend_request.accept()\n# or friend_request.reject()\n```\n\n#### To remove the friendship relationship between `request.user` and `other_user`, do the following:\n\n```python\nFriend.objects.remove_friend(request.user, other_user)\n```\n\n#### Make request.user a follower of other_user:\n\n```python\nFollow.objects.add_follower(request.user, other_user)\n```\n\n\n#### Make request.user block other_user:\n\n```python\nBlock.objects.add_block(request.user, other_user)\n```\n\n#### Make request.user unblock other_user:\n\n```python\nBlock.objects.remove_block(request.user, other_user)\n```\n\n### Templates\n\nYou can use `django-friendship` tags in your templates. First enter:\n\n```django\n{% load friendshiptags %}\n```\n\nThen use any of the following:\n\n```django\n{% friends request.user %}\n{% followers request.user %}\n{% following request.user %}\n{% friend_requests request.user %}\n{% blockers request.user %}\n{% blocking request.user %}\n```\n\n### Signals\n\n`django-friendship` emits the following signals:\n\n- friendship_request_created\n- friendship_request_rejected\n- friendship_request_canceled\n- friendship_request_accepted\n- friendship_removed\n- follower_created\n- following_created\n- follower_removed\n- following_removed\n- block_created\n- block_removed\n\n\n### Contributing\n\nDevelopment [takes place on GitHub]https://github.com/revsys/django-friendship) Bug reports, patches, and fixes are always welcome!\n\n# Need help?\n\n[REVSYS](http://www.revsys.com?utm_medium=github&utm_source=django-test-plus) 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:\n\n\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/revsys/django-friendship/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-friendship", "package_url": "https://pypi.org/project/django-friendship/", "platform": "", "project_url": "https://pypi.org/project/django-friendship/", "project_urls": { "Homepage": "https://github.com/revsys/django-friendship/" }, "release_url": "https://pypi.org/project/django-friendship/1.8.1/", "requires_dist": null, "requires_python": "", "summary": "django-friendship provides an easy extensible interface for following and friendship", "version": "1.8.1" }, "last_serial": 5312780, "releases": { "0.8.0": [ { "comment_text": "", "digests": { "md5": "69a9c987f5fad4dd2181691a89c3d08b", "sha256": "68610c77c34216a9c9bac7b1c7c47d0c1c8d2c94dff8118327b759d5ba85b499" }, "downloads": -1, "filename": "django-friendship-0.8.0.tar.gz", "has_sig": false, "md5_digest": "69a9c987f5fad4dd2181691a89c3d08b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12135, "upload_time": "2012-04-13T21:22:28", "url": "https://files.pythonhosted.org/packages/b7/be/f2ee675b0aee197e61a7379c7beccd8dfb786739665700a268e8f20f1450/django-friendship-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "e37fe756eefef6f7368692c4bac7ea18", "sha256": "9dcd181772868111597ba2ce838f42d416f521b54dc6c98071ac084f6ede683e" }, "downloads": -1, "filename": "django-friendship-0.8.1.tar.gz", "has_sig": false, "md5_digest": "e37fe756eefef6f7368692c4bac7ea18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12163, "upload_time": "2012-04-30T16:56:26", "url": "https://files.pythonhosted.org/packages/4c/cb/a8f176e031aa5367c8c87c08b42e20f5ebb8d068e64c82650d6a6607e53d/django-friendship-0.8.1.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "bb504873dbc20b2fbc6f7f0d37e6139c", "sha256": "a7a3135e46c6a0f1c3ea1a1a0c384942ecacc8569a285466aad9b81cdec5883c" }, "downloads": -1, "filename": "django-friendship-0.8.3.tar.gz", "has_sig": false, "md5_digest": "bb504873dbc20b2fbc6f7f0d37e6139c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12298, "upload_time": "2013-05-22T18:54:38", "url": "https://files.pythonhosted.org/packages/de/29/7a9c6ad966efdd7d90b97f614074b2ab83084b4c4bd296ef3aae33319b07/django-friendship-0.8.3.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "00b97cd0c952bc298be4f7f334b32aed", "sha256": "dbb397d8de36bf031f6af224ca427fa77013aa16e6def0210c6bc44ba03e8fb5" }, "downloads": -1, "filename": "django-friendship-0.9.0.tar.gz", "has_sig": false, "md5_digest": "00b97cd0c952bc298be4f7f334b32aed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13155, "upload_time": "2013-05-22T20:15:09", "url": "https://files.pythonhosted.org/packages/d2/9c/99a2c2661c593e9632b819e41998e0b14bdaa39786fb67970eb89d9e455d/django-friendship-0.9.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "3af49c89f5844c280aa9bac1cbb1e023", "sha256": "a8b6493b2dc6212d7f40d45375d8fea367745a29c108f712111e7e328dffd7cc" }, "downloads": -1, "filename": "django-friendship-1.0.0.tar.gz", "has_sig": false, "md5_digest": "3af49c89f5844c280aa9bac1cbb1e023", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14750, "upload_time": "2013-11-13T17:45:57", "url": "https://files.pythonhosted.org/packages/74/4b/33b84a02f27841a7916ebd193a81985ff1a668a85a7557fb8770044ee069/django-friendship-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "7a1c239809e974b4672365a831557345", "sha256": "78404bb9875c73ffb49a46ddfa875cab13187c69cc6e95848707a4204cc22107" }, "downloads": -1, "filename": "django-friendship-1.1.0.tar.gz", "has_sig": false, "md5_digest": "7a1c239809e974b4672365a831557345", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15478, "upload_time": "2014-05-06T17:55:47", "url": "https://files.pythonhosted.org/packages/6e/27/0986419e2693f94f837cd5ac5052152bb530fa3910dec4c4a168b9250a0d/django-friendship-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "c0db9deb5d66e26125c241301a8357b6", "sha256": "e1dc29ffdef437b74ccaa08949e127ff8d8f9062fc4e3eaf3f6d1e3de44a3f05" }, "downloads": -1, "filename": "django-friendship-1.2.0.tar.gz", "has_sig": false, "md5_digest": "c0db9deb5d66e26125c241301a8357b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16092, "upload_time": "2014-09-22T15:54:53", "url": "https://files.pythonhosted.org/packages/7e/98/4c15c17222274d4e238a5e9e6268b8fda3fe92668f97500256c6b299ed17/django-friendship-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "0d735a5ace42e1dbf0b4120725c1bc97", "sha256": "5a6d6574d7f9a1273b4c95947a7efbf9a7987ef72400f7b44222f86fc21a9afd" }, "downloads": -1, "filename": "django-friendship-1.3.0.tar.gz", "has_sig": false, "md5_digest": "0d735a5ace42e1dbf0b4120725c1bc97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16379, "upload_time": "2015-07-12T16:20:03", "url": "https://files.pythonhosted.org/packages/98/93/80e02b080fff01ad3aecaf2c2395694ddca3b152d909ef4114d19d15ecf3/django-friendship-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "c775be1dcdc84e3228fd92e7fc9a71a0", "sha256": "a64d0b1fcbf8801b7bb0de69ce3e26c6df0e01358604db4c3e78468cc59ba48f" }, "downloads": -1, "filename": "django-friendship-1.3.1.tar.gz", "has_sig": false, "md5_digest": "c775be1dcdc84e3228fd92e7fc9a71a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16581, "upload_time": "2015-11-10T15:08:23", "url": "https://files.pythonhosted.org/packages/e4/f4/abf7c1d4ee2c0ed7bb412823c6bc436f799854cac15beb7a4a73d57a62d2/django-friendship-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "3f004fab8a65c10d7e189bc49bac8ecb", "sha256": "b1fdf99c293b37b47f6c47697a64234160766e2f02f735881d038f9975168410" }, "downloads": -1, "filename": "django-friendship-1.3.2.tar.gz", "has_sig": false, "md5_digest": "3f004fab8a65c10d7e189bc49bac8ecb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17556, "upload_time": "2016-05-23T20:03:14", "url": "https://files.pythonhosted.org/packages/6a/38/87c77fb2fcec0518c57a16cb04aad432dfd70fb19d901f9a066b22baeeab/django-friendship-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "65ac534a6f76d547354dca4baee97257", "sha256": "1e19a264900825ce0e1d505e68e3dfa73fad8370199f7ceff86153b82bfba3b4" }, "downloads": -1, "filename": "django-friendship-1.3.3.tar.gz", "has_sig": false, "md5_digest": "65ac534a6f76d547354dca4baee97257", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17556, "upload_time": "2016-07-01T20:34:15", "url": "https://files.pythonhosted.org/packages/59/15/f9f4673a703de1bc7f09eb464904165ea481c69a618ae7480c0c369829fb/django-friendship-1.3.3.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "0e94babded597e4e0c5c6d597995ff6f", "sha256": "414f367802f033d90f443b596d07d82776a58fc910a9d53276f1d808aabf4bdf" }, "downloads": -1, "filename": "django-friendship-1.5.0.tar.gz", "has_sig": false, "md5_digest": "0e94babded597e4e0c5c6d597995ff6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17675, "upload_time": "2016-08-21T20:37:17", "url": "https://files.pythonhosted.org/packages/fa/72/079f428dcc91616ac96977bd693186aa328f670504c6a86020b9cf8624d6/django-friendship-1.5.0.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "2e56fa2dada8719358efdc9955647f99", "sha256": "22bd844f5bc0a095276ce7ec93044f11dfefc391daaf838e4db16dd693a7c09e" }, "downloads": -1, "filename": "django-friendship-1.6.0.tar.gz", "has_sig": false, "md5_digest": "2e56fa2dada8719358efdc9955647f99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19930, "upload_time": "2018-05-22T16:13:04", "url": "https://files.pythonhosted.org/packages/a2/44/d0a0083598726591349c018d04a541676642c2f81e8ed56068b69c37c2e4/django-friendship-1.6.0.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "38f0eb3b4333a135c0738bc4129bfffa", "sha256": "9022a2926564bbceaf5aafc7dd4486384d85da9d04bebee731fbec3ee0a4e7be" }, "downloads": -1, "filename": "django-friendship-1.7.0.tar.gz", "has_sig": false, "md5_digest": "38f0eb3b4333a135c0738bc4129bfffa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19952, "upload_time": "2018-07-03T15:32:36", "url": "https://files.pythonhosted.org/packages/72/7e/269e1de128ab287fd6a4284f3967a197760cd6caf9e5b3542ff845473080/django-friendship-1.7.0.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "46a83d612449bd5c991b33c207599afb", "sha256": "6af356a71d47e0387e631cbf4d19d82f1653bd1e7f7440b88f9960bb8f844110" }, "downloads": -1, "filename": "django-friendship-1.7.1.tar.gz", "has_sig": false, "md5_digest": "46a83d612449bd5c991b33c207599afb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20164, "upload_time": "2018-07-05T16:01:31", "url": "https://files.pythonhosted.org/packages/45/b5/61ddb8583f4d768c3c4e62487cb6993a51d15b5515a397d665a11facd7e8/django-friendship-1.7.1.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "95d31a05f81b790dfbb2f2c6db45eccf", "sha256": "9c45f9b848a30201089500f93f6b0351eedfd18318a2e20df2e332b6e7328b8e" }, "downloads": -1, "filename": "django-friendship-1.8.0.tar.gz", "has_sig": false, "md5_digest": "95d31a05f81b790dfbb2f2c6db45eccf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20412, "upload_time": "2018-07-06T21:34:53", "url": "https://files.pythonhosted.org/packages/75/39/03a56d70d2e4cb2da31b2ec1730f066762ed1ec9e1ccd8dea3be475f06bc/django-friendship-1.8.0.tar.gz" } ], "1.8.1": [ { "comment_text": "", "digests": { "md5": "f349ced6855bdc7ec26d5af643da2d48", "sha256": "ec08fb2581eadf4ab8be9124390c55992e0037a69b4fafdbe63ba950135740fa" }, "downloads": -1, "filename": "django-friendship-1.8.1.tar.gz", "has_sig": false, "md5_digest": "f349ced6855bdc7ec26d5af643da2d48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19473, "upload_time": "2019-05-24T13:31:39", "url": "https://files.pythonhosted.org/packages/72/f9/95976aa31c873bb6c1be6fa3e3fe3243f963596f45afebbd612739ee9e25/django-friendship-1.8.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f349ced6855bdc7ec26d5af643da2d48", "sha256": "ec08fb2581eadf4ab8be9124390c55992e0037a69b4fafdbe63ba950135740fa" }, "downloads": -1, "filename": "django-friendship-1.8.1.tar.gz", "has_sig": false, "md5_digest": "f349ced6855bdc7ec26d5af643da2d48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19473, "upload_time": "2019-05-24T13:31:39", "url": "https://files.pythonhosted.org/packages/72/f9/95976aa31c873bb6c1be6fa3e3fe3243f963596f45afebbd612739ee9e25/django-friendship-1.8.1.tar.gz" } ] }