{ "info": { "author": "Edouard Richard", "author_email": "edou4rd@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.11", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# django-fav\n\nA simple reusable app for django that makes it easy to deal with faving\nand unfaving any object from any application.\n\nIt comes with a Graphene (GraphQL) Query to enable favs in your queries.\n\n## Requirements\n\n* Python 3.4+\n* Django 1.11\n\n\n## Installation\n\n```\npip install django-fav\n```\n\n* Add the app to your settings.py\n\n```python\nINSTALLED_APPS = [\n ...\n \"fav\",\n ...\n]\n```\n\n* Sync your database:\n\n```\npython manage.py migrate\n```\n\n\n## Usage:\n\n\n### Favorites Manager\n\n* Create a Favorite instance for a user and object:\n\n```python\n>>> from django.contrib.auth.models import User\n>>> from music.models import Song\n>>> user = User.objects.get(username='gengue')\n>>> song = Song.objects.get(pk=1)\n>>> fav = Favorite.objects.create(user, song)\n```\n\n or:\n\n```python\n>>> fav = Favorite.objects.create(user, 1, Song)\n```\n\n or:\n\n```python\n>>> fav = Favorite.objects.create(user, 1, \"music.Song\")\n```\n\n * Get the objects favorited by a given user:\n\n```python\n>>> from django.contrib.auth.models import User\n>>> user = User.objects.get(username='gengue')\n>>> Favorite.objects.for_user(user)\n>>> [, , ]\n```\n\n* Now, get user favorited objects belonging to a given model:\n\n```python\n>>> from django.contrib.auth.models import User\n>>> from music.models import Song\n>>> user = User.objects.get(username='gengue')\n>>> Favorite.objects.for_user(user, model=Song)\n>>> [, , ]\n```\n\n* Get the favorited object instances of a given model favorited by any user:\n\n```python\n>>> from music.models import Song\n>>> Favorite.objects.for_model(Song)\n>>> [, , ]\n```\n\n* Get a Favorite instance for a given object and user:\n\n```python\n>>> from django.contrib.auth.models import User\n>>> from music.models import Song\n>>> user = User.objects.get(username='gengue')\n>>> song = Song.objects.get(pk=1)\n>>> fav = Favorite.objects.get_favorite(user, song)\n```\n\n* Get all Favorite instances for a given object\n\n```python\n>>> from music.models import Song\n>>> song = Song.objects.get(pk=1)\n>>> fav = Favorite.objects.for_object(song)\n```\n\n## Graphql\n\nIn `settings.py`, map your grahene queries to your django models\n\n```python\nFAV_MODELS = {\n 'CurrentUser': 'core.user',\n 'User': 'core.user',\n 'Track': 'listen.Track',\n}\n```\n\nAdd `url_renditions.graphql_schema.Query` to your root query and mutation.\n```python\nimport graphene\nimport fav.graphql_schema\n\nclass Query(\n ...\n fav.graphql_schema.Query,\n graphene.ObjectType):\n pass\n\nclass Mutation(\n ...\n fav.graphql_schema.Mutation,\n graphene.ObjectType):\n pass\n\n\nschema = graphene.Schema(query=Query, mutation=Mutation)\n\n```\n\n### Query\n\nThen, you can ask for:\n\n```graphql\nquery {\n isInUserFavorites(objectId: \"VHJhY2s6OA==\")\n}\n```\n\nand you get\n\n```json\n{\n \"data\": {\n \"isInUserFavorites\": false\n }\n}\n```\n\n### Mutation\n\n```graphql\nmutation {\n favorite(input: {objectId: \"VHJhY2s6OA==\"}) {\n deleted\n created\n }\n}\n```\n\nand you get\n\n```json\n{\n \"data\": {\n \"favorite\": {\n \"deleted\": null,\n \"created\": true,\n }\n }\n}\n```\n\n## Thanks\n\n* This apps was based on the fork: https://github.com/gengue/django-favs which is based on the fork of https://github.com/streema/django-favit by streema.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://vied12.github.io", "keywords": "", "license": "BSD License", "maintainer": "", "maintainer_email": "", "name": "django-fav", "package_url": "https://pypi.org/project/django-fav/", "platform": "", "project_url": "https://pypi.org/project/django-fav/", "project_urls": { "Homepage": "https://vied12.github.io" }, "release_url": "https://pypi.org/project/django-fav/0.3/", "requires_dist": null, "requires_python": "", "summary": "A simple reusable app for django that makes it easy to deal with faving and unfaving any object from any application.", "version": "0.3" }, "last_serial": 4457347, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "326bb0f33fe9acf309bb180793e1d8cc", "sha256": "2c28773d6c506d4989ad1d5623e54254f0c3b8bafde0a8e7386e8a0c5f6e467c" }, "downloads": -1, "filename": "django-fav-0.1.tar.gz", "has_sig": false, "md5_digest": "326bb0f33fe9acf309bb180793e1d8cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4602, "upload_time": "2018-05-16T13:05:28", "url": "https://files.pythonhosted.org/packages/d5/a0/faffa3663af07fcb4ea1e46519dc7e49bc5cc637ff6825fb2af7db6c4cf7/django-fav-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "5ec074350670e38674cb326d6cdfc563", "sha256": "4b7c38aaebbf875123af23bd8287ba4b640de801211e9c4d08e82aacbb546be2" }, "downloads": -1, "filename": "django-fav-0.2.tar.gz", "has_sig": false, "md5_digest": "5ec074350670e38674cb326d6cdfc563", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4972, "upload_time": "2018-05-16T13:40:21", "url": "https://files.pythonhosted.org/packages/b5/e4/53d9ad257113d55dd93b19967fe9491d081f3407c24385e5570686f2c51a/django-fav-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "4a796fcf199a2e0393f0898464149199", "sha256": "fc9e87e30b088663139b7de2071752e9de721686ec14ec97880e0e7a397b97e0" }, "downloads": -1, "filename": "django-fav-0.3.tar.gz", "has_sig": false, "md5_digest": "4a796fcf199a2e0393f0898464149199", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4996, "upload_time": "2018-11-06T13:25:24", "url": "https://files.pythonhosted.org/packages/ab/1c/168d7476a924007535a914c54cd46874bee5d9ef71e228709c3fa4a7f223/django-fav-0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4a796fcf199a2e0393f0898464149199", "sha256": "fc9e87e30b088663139b7de2071752e9de721686ec14ec97880e0e7a397b97e0" }, "downloads": -1, "filename": "django-fav-0.3.tar.gz", "has_sig": false, "md5_digest": "4a796fcf199a2e0393f0898464149199", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4996, "upload_time": "2018-11-06T13:25:24", "url": "https://files.pythonhosted.org/packages/ab/1c/168d7476a924007535a914c54cd46874bee5d9ef71e228709c3fa4a7f223/django-fav-0.3.tar.gz" } ] }