==========
Reviewable
==========
Reviewable provides simple, customizable reviews for any of your Django models. The templates for each of your reviewable
models can be customised with ease.
Quick Start
-----------
1.
.. code-block:: bash
$ pip install django-reviewable
2. Add "Reviewable" to your INSTALLED_APPS setting:
.. code-block:: python
INSTALLED_APPS = [
...
'Reviewable',
...
]
2. Include the Reviewable URLconf in your projects urls.py:
.. code-block:: python
url(r'^reviews/', include('Reviewable.urls', namespace='Reviewable')),
2. Run ``python manage.py migrate``
5. Add the mixin ``Reviewable`` to any model you want to be reviewable.
.. code-block:: python
...
from Reviewable.models import Reviewable
...
class ReviewableModel(models.Model, Reviewable):
...
Custom Templates
----------------
Reviewable allows you to customise the templates for each reviewable model. Furthemore, the reviewable object is magically
made available in the template context.
For example:
1. You have a model called ``Hotel`` in an app called ``Hotel``
2. You want a custom template for the review creation view
3. You would add a template in ``Hotel/templates/Hotel`` called ``hotel_review_create.html``
- Note: This the template name has to be in camel case and all lower case
4. The hotel object is made available in the template context by the usual ``{{ hotel }}`` tag
5. This can be repeated for templates for all views: ``hotel_review_list.html``, ``hotel_review_update.html``,
``hotel_review_confirm_delete.html`` and ``hotel_review_detail.html``
Template Tags
-------------
Reviewable provides one simple but useful template inclusion tag that will include controls for your reviewable object.
To use this just load in the template tag:
.. code-block:: python
{% load reviewable %}
...
{% show_review_controls reviewable_object %}
The template for the inclusion tag is very basic so it is a good idea to override it in the usual Django fashion.
The name of the template is "Reviewable/__review_controls.html".
Post Delete Signals
-------------------
Deletion of a reviewable object won't automatically cause a cascade delete of all of the objects reviews. Hence, it
is a good idea to use the post delete signal somewhere in your app as below:
.. code-block:: python
from MyApp.models import ReviewableModel
from django.db.models.signals import post_delete
...
post_delete.connect(ReviewableModel.delete_reviews, sender=ReviewableModel)
Settings
--------
All settings are shown below with their defaults.
REVIEW_RATING_CHOICES
+++++++++++++++++++++
.. code-block:: python
REVIEW_RATING_CHOICES=(
(1, '1 Star'),
(2, '2 Star'),
(3, '3 Star'),
(4, '4 Star'),
(5, '5 Star')
)
REVIEW_DELETE_SUCCESS_URL
+++++++++++++++++++++++++
.. code-block:: python
REVIEW_DELETE_SUCCESS_URL='/'
REVIEW_STREAM_ENABLED
+++++++++++++++++++++
Reviewable can utilise GetStream if required. This would mean reviews are automatically published to your GetStream.io
feed. See https://github.com/GetStream/stream-django for more information
.. code-block:: python
REVIEW_STREAM_ENABLED=False