A one-stop report and analytics generation and computation with batteries included
Project description
Django Slick Reporting
A one stop reports engine with batteries included.
Features
Effortlessly create Simple, Grouped, Time series and Crosstab reports in a handful of code lines.
Create your Custom Calculation easily, which will be integrated with the above reports types
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
So you have a model that contains data, let’s call it MySalesItems
You can simply use a code like this
# in your urls.py
path('path-to-report', TotalProductSales.as_view())
# in views.py
from django.db.models import Sum
from slick_reporting.views import SlickReportView
from .models import MySalesItems
class TotalProductSales(SlickReportView):
report_model = MySalesItems
date_field = 'date_placed'
group_by = 'product'
columns = ['title',
SlickReportField.create(Sum, 'quantity') ,
SlickReportField.create(Sum, 'value', name='sum__value') ]
chart_settings = [{
'type': 'column',
'data_source': ['sum__value'],
'plot_total': False,
'title_source': 'title',
'title': _('Detailed Columns'),
}, ]
To get something like this
You can do a monthly time series :
# in views.py
from slick_reporting.views import SlickReportView
from .models import MySalesItems
class MonthlyProductSales(SlickReportView):
report_model = MySalesItems
date_field = 'date_placed'
group_by = 'product'
columns = ['name', 'sku']
# Analogy for time series
time_series_pattern = 'monthly'
time_series_columns = [SlickReportField.create(Sum, 'quantity', name='sum__quantity') ]
This would return 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 SlickReportView .
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
Road Ahead
This project is young and can use your support.
Some of the ideas / features that ought be added
Support Other backends like SQL Alchemy & Pandas
Support Grouping by non foreign key fields
Support Time Series and Crosstab at the same time
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
Support & Contributing
Please consider star the project to keep an eye on it. Your PRs, reviews are most welcome and needed.
We honor the well formulated Django’s guidelines to serve as contribution guide here too.
Cross Reference
If you like this package, chances are you may like those packages too!
Django Tabular Permissions Display Django permissions in a HTML table that is translatable and easy customized.
Django Ra ERP Framework A framework to build business solutions with ease.
If you find this project useful or promising , You can support us by a github ⭐
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.5.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4da234ea82c0d0e0201a322e460d9deff8782528a7c188e48fdfe4acf6bc63f5 |
|
MD5 | 81fe0e40cebdc7b658e45d29a262f0d5 |
|
BLAKE2b-256 | c1c7438a7708024c4ad06ca63834c8964b2a9f623b2afdf2427f8072cb52b540 |