django-likeit 0.1.2
A simple app for Django that enables users to like and unlike any object/item within any model. It generates a like button for your objects.
License: MIT License

django-likeit
=============

A simple app for Django that enables users to like and unlike any
object/item within any model. It's developed on Python 3.5 & Python 3.6
for Django 1.10 and later.

Installation
------------

-  Install django-likeit in your vilrtual env:

::

    pip install django-likeit

-  Add the app to your settings.py

.. code:: python

    INSTALLED_APPS = [
      ...
      "like",
      ...
    ]

-  Add likeit urls to your project's ``urls.py`` file:

.. code:: python

    from django.conf.urls import url, include

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

-  Migrations:

::

    python manage.py makemigrations like
    python manage.py migrate

-  Make sure you have jQuery ajax CSRF configuration right, and also you
   included Font Awesome in your HTML.

Usage:
------

Template tags:
~~~~~~~~~~~~~~

-  Get the liked objects for a given user:

.. code:: python

    {% with user_likes <user> "app_label.model" as like_list %}
        {% for like_obj in like_list %}
            {# do something with like_obj #}
        {% endfor %}
    {% endwith %}

-  Given an object ``obj`` you may show it like count like this:

.. code:: python

    <p>Like Count {{ obj|likes_count }}</p>

-  Get Like instance for an object (obj) and a user (user)

.. code:: python

    {% with obj|get_like_for:user as like_object %}
        ...
    {% endwith %}

-  Like Button for an object ``my_obj``:

.. code:: python

    {% like_button my_obj %}

Likes Manager
~~~~~~~~~~~~~

-  Create a Like instance for a user and object:

.. code:: python

    >>> from django.contrib.auth.models import User
    >>> from music.models import Song
    >>> user = User.objects.get(username='jdoe')
    >>> song = Song.objects.get(pk=1)
    >>> like = Like.objects.create(user, song)

::

    or:

.. code:: python

    >>> like = Like.objects.create(user, 1, Song)

::

    or:

.. code:: python

    >>> like = Like.objects.create(user, 1, "music.Song")

-  Get the objects liked by a given user:

.. code:: python

    >>> from django.contrib.auth.models import User
    >>> user = User.objects.get(username='jdoe')
    >>> Like.objects.for_user(user)
    >>> [<Like: Like object 1>, <Like: Like object 2>, <Like: Like object 3>]

-  Now, get user liked objects belonging to a given model:

.. code:: python

    >>> from django.contrib.auth.models import User
    >>> from music.models import Song
    >>> user = User.objects.get(username='jdoe')
    >>> Like.objects.for_user(user, model=Song)
    >>> [<Like: Like object 1>, <Like: Like object 2>, <Like: Like object 3>]

-  Get the liked object instances of a given model liked by any user:

.. code:: python

    >>> from music.models import Song
    >>> Like.objects.for_model(Song)
    >>> [<Like: Like object 1>, <Like: Like object 2>, <Like: Like object 3>]

-  Get a Like instance for a given object and user:

.. code:: python

    >>> from django.contrib.auth.models import User
    >>> from music.models import Song
    >>> user = User.objects.get(username='jdoe')
    >>> song = Song.objects.get(pk=1)
    >>> like = Like.objects.get_like(user, song)

-  Get all Like instances for a given object

.. code:: python

    >>> from music.models import Song
    >>> song = Song.objects.get(pk=1)
    >>> like = Like.objects.for_object(song)