Skip to main content

A one-stop report adn analytics generation and computation with batteries included

Project description

https://img.shields.io/pypi/v/django-slick-reporting.svg https://img.shields.io/pypi/pyversions/django-slick-reporting.svg https://img.shields.io/readthedocs/django-slick-reporting https://api.travis-ci.org/ra-systems/django-slick-reporting.svg?branch=master https://img.shields.io/codecov/c/github/ra-systems/django-slick-reporting

Django Slick Reporting

A one stop reports and analytics tool for Django

What it does:

Given a model that contains some data (ex: an OrderLine Model); Slick Reporting allows you to compute any kind of stats (Sum, AVG, etc.. ) over any field. It also allow you to use those computation units in a time series and cross tab.

Features

  • Preform Different computation grouping over the foreign keys.

  • Those computation can also be calculated on Time Series report like monthly, with custom dates ability.

  • Computation can be used on Cross tab reports

  • Create your Custom Calculation

  • Optimized for speed !

  • … and much more

Installation

Use the package manager pip to install django-slick-reporting.

pip install django-slick-reporting

Usage

From high Level,

You can use SampleReportView which is a subclass of django.views.generic.FormView like this

# in views.py
from slick_reporting.views import SampleReportView
from .models import MySalesItems

class MonthlyProductSales(SampleReportView):
    report_model = MySalesItems
    date_field = 'date_placed' # or 'order__date_placed'
    group_by = 'product'
    columns = ['name', 'sku']
    time_series_pattern = 'monthly'
    time_series_columns = ['__total_quantity__']

hook it into your urls.py , and it would return a page with a table looking something like this:

Product Name

SKU

Total Quantity in Jan 20

Total Quantity in Feb 20

Total Quantity in …

Total Quantity in December 20

Product 1

<from product model>

10

15

14

Product 2

<from product model>

11

12

12

Product 3

<from product model>

17

12

17

This example code assumes your “MySalesItems” contains the fields `product` as foreign key, `quantity` as number and `date_placed` as a date field. It also assumes your `Product` model has an SKU field..

On a low level

You can interact with the ReportGenerator using same syntax as used with the SampleReportView .

from slick_reporting.generator import ReportGenerator
from . models import MySalesModel

report = ReportGenerator(report_model=MySalesModel,
                        group_by='product',
                        columns=['title', '__total__']
)
report.get_report_data() #-> [{'title':'Product 1', '__total__: 56}, {'title':'Product 2', '__total__: 43}, ]

This is just a scratch, for more please visit the documentation

Documentation

Available on Read The Docs

Running tests

Create a virtual environment (maybe with virtual slick_reports_test), activate it; Then ,

$ git clone git+git@github.com:ra-systems/django-slick-reporting.git
$ cd tests
$ python -m pip install -e ..

$ python runtests.py
#     Or for Coverage report
$ coverage run --include=../* runtests.py [-k]
$ coverage html

Contributing

We follow Django’s guidelines guidelines.

Authors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-slick-reporting-0.1.3.tar.gz (19.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page