.. http://docutils.sourceforge.net/docs/user/rst/quickref.html

django_dramatiq_charts 📊
=========================

Draw charts by `django_dramatiq <https://github.com/Bogdanp/django_dramatiq>`_ task history in db.

Chart types: `load <#load-chart>`_ and `timeline <#timeline-chart>`_.

.. image:: https://img.shields.io/pypi/dm/django_dramatiq_charts.svg?style=social

===============  ===============================================================
Python version   3.6+
License          Apache-2.0
PyPI             https://pypi.python.org/pypi/django_dramatiq_charts/
===============  ===============================================================

.. contents::

Installation
------------
::

    $ pip install django-dramatiq-charts

Requirements:

* Django 2.2+
* dramatiq 1.11+
* django-dramatiq 0.10.0+

Guide
-----

Configuration
^^^^^^^^^^^^^

1. Add django_dramatiq_charts to installed apps after django_dramatiq app:

.. code-block:: python

    INSTALLED_APPS = [
        'django_dramatiq',
        'django_dramatiq_charts',
        'my_app',
        # ...
    ]

2. Add lib views to your urls:

.. code-block:: python

    from django_dramatiq_charts.views import load_chart, timeline_chart, clean_cache

    urlpatterns = [
        path('django_dramatiq_charts/load_chart/', load_chart, name='ddc_load_chart'),
        path('django_dramatiq_charts/timeline_chart/', timeline_chart, name='ddc_timeline_chart'),
        path('django_dramatiq_charts/clean_cache/', clean_cache, name='ddc_clean_cache'),
        # ...
    ]

3. Configure lib in your project settings file:

.. list-table::
   :header-rows: 1

   * - Parameter
     - Description
     - Default
   * - DJANGO_DRAMATIQ_CHARTS_PERM_FN
     - users with access to the charts
     - def fn(request): return request.user.is_superuser
   * - DJANGO_DRAMATIQ_CHARTS_LOAD_QS_FILTER
     - Additional queryset filter for load chart
     - None
   * - DJANGO_DRAMATIQ_CHARTS_TIMELINE_QS_FILTER
     - Additional queryset filter for timeline chart
     - None
   * - DJANGO_DRAMATIQ_CHARTS_CACHE_FORM_DATA_SEC
     - Minutes to cache choices of queue and actor form fields  (False-like to disable)
     - 4 hours

Load chart
^^^^^^^^^^

**Shows the number of simultaneously executed actors in each time interval on timeline**

.. image:: docs/load_chart.png

Tasks running more than one day are not counted (assumed to be an error).

Timeline chart
^^^^^^^^^^^^^^

**Shows actors on timeline**

.. figure:: docs/timeline_chart.png

If the task duration is less than a second, this task is displayed on the chart with a duration of 1 second.

Release notes
-------------

History of important changes: `release_notes.rst <https://github.com/ikvk/django_dramatiq_charts/blob/master/docs/release_notes.rst>`_

Thanks
------

Thanks to all who helped develop this library:

`MilkyCake <https://github.com/MilkyCake>`_,
`lexa2907 <https://github.com/lexa2907>`_,
`python <https://www.python.org/>`_,
`django <https://www.djangoproject.com/>`_,
`plotly <https://plotly.com/python/>`_,
`jquery <https://jquery.com/>`_,
`select2 <https://select2.org/>`_,
`flaticon.com <https://www.flaticon.com/free-icons/bar-chart>`_
