A one-stop report adn analytics generation and computation with batteries included
Project description
Django Slick Reporting
A one stop reports engine with batteries included.
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 using simple and intuitive analogy. It also allow you to use those computation units in a time series and cross tab.
Features
Create Simple, Grouped, Time series and Crosstab reports.. effortlessly in a handful of code lines.
Create your Custom Calculation easily, which will be integrated with the above reports kinds
Optimized for speed.
Batteries included! Charts.js , DataTable.net & a Bootstrap form.
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 TotalProductSales(SampleReportView):
# The model where you have the data
report_model = MySalesItems
# the main date to use if date filter is needed
date_field = 'date_placed' # or 'order__date_placed'
# date_field support traversing,
# date_field = 'order__date_placed'
# A foreign key to group calculation on
group_by = 'product'
# The columns you want to display
columns = ['title', '__total_quantity__', '__total__']
# in your urls.py
path('url-to-report', TotalProductSales.as_view())
This will return a page, with a table looking like
Product |
Total Quantity |
Total Value |
Product 1 |
8 |
120 |
Product 2 |
13 |
240 |
You can also do a monthly time series :
# in views.py
from slick_reporting.views import SampleReportView
from .models import MySalesItems
class MonthlyProductSales(SampleReportView):
report_model = MySalesItems
date_field = 'date_placed'
group_by = 'product'
columns = ['name', 'sku']
# Analogy for time series
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” model 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.. Change those to better suit your structure. –
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
Batteries Included
Slick Reporting comes with
A Bootstrap Filter Form
Charting support Charts.js
Powerful tables datatables.net
A Preview:
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
This project is young and can use your support. Please consider star the project to keep an eye on it, and your PR, review are most welcome and needed.
For the guideline, Django’s guidelines should do the job.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for django-slick-reporting-0.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a93642518664824a3f3cb451575a590a136c544852b1ea5f573af3ed9aecbf0 |
|
MD5 | 72b9b1b78cfb30a18d8d91511ab330e6 |
|
BLAKE2b-256 | 1c28a2e7ccf0af8419f4dfce4360ab86dcbecd13d170cad07c30992fca23c783 |