Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

The Reporting Engine for Django. Create dashboards and standalone Reports and Charts.

License

NotificationsYou must be signed in to change notification settings

RamezIssac/django-slick-reporting

Repository files navigation

https://img.shields.io/readthedocs/django-slick-reportinghttps://api.travis-ci.com/ra-systems/django-slick-reporting.svg?branch=masterhttps://img.shields.io/codecov/c/github/ra-systems/django-slick-reporting

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 Chart(s) for your reports with a single line of code.
  • Create Custom complex Calculation.
  • Optimized for speed.
  • Easily extendable.

Installation

Use the package managerpip to install django-slick-reporting.

pip install django-slick-reporting

Usage

So we have a model SalesTransaction which contains typical data about a sale.We can extract different kinds of information for that model.

Let's start by a "Group by" report. This will generate a report how much quantity and value was each product sold within a certain time.

# in views.pyfromdjango.db.modelsimportSumfromslick_reporting.viewsimportReportView,Chartfromslick_reporting.fieldsimportComputationFieldfrom .modelsimportMySalesItemsclassTotalProductSales(ReportView):report_model=SalesTransactiondate_field="date"group_by="product"columns= ["name",ComputationField.create(Sum,"quantity",verbose_name="Total quantity sold",is_summable=False        ),ComputationField.create(Sum,"value",name="sum__value",verbose_name="Total Value sold $"        ),    ]chart_settings= [Chart("Total sold $",Chart.BAR,data_source=["sum__value"],title_source=["name"],        ),Chart("Total sold $ [PIE]",Chart.PIE,data_source=["sum__value"],title_source=["name"],        ),    ]# then, in urls.pypath("total-sales-report",TotalProductSales.as_view())

With this code, you will get something like this:

Shipped in View Page

Time Series

A Time series report is a report that is generated for a periods of time.The period can be daily, weekly, monthly, yearly or custom. Calculations will be performed for each period in the time series.

Example: How much was sold in value for each product monthly within a date period ?

# in views.pyfromslick_reporting.viewsimportReportViewfromslick_reporting.fieldsimportComputationFieldfrom .modelsimportSalesTransactionclassMonthlyProductSales(ReportView):report_model=SalesTransactiondate_field="date"group_by="product"columns= ["name","sku"]time_series_pattern="monthly"# or "yearly" , "weekly" , "daily" , others and custom patternstime_series_columns= [ComputationField.create(Sum,"value",verbose_name=_("Sales Value"),name="value"        )# what will be calculated for each month    ]chart_settings= [Chart(_("Total Sales Monthly"),Chart.PIE,data_source=["value"],title_source=["name"],plot_total=True,        ),Chart("Total Sales [Area chart]",Chart.AREA,data_source=["value"],title_source=["name"],plot_total=False,        ),    ]

Time Series Report

Cross Tab

Use crosstab reports, also known as matrix reports, to show the relationships between three or more query items.Crosstab reports show data in rows and columns with information summarized at the intersection points.

# in views.pyfromslick_reporting.viewsimportReportViewfromslick_reporting.fieldsimportComputationFieldfrom .modelsimportMySalesItemsclassMyCrosstabReport(ReportView):crosstab_field="client"crosstab_ids= [1,2,3]crosstab_columns= [ComputationField.create(Sum,"value",verbose_name=_("Value for")),    ]crosstab_compute_remainder=Truecolumns= ["some_optional_field",# You can customize where the crosstab columns are displayed in relation to the other columns"__crosstab__",# This is the same as the Same as the calculation in the crosstab, but this one will be on the whole set. IE total valueComputationField.create(Sum,"value",verbose_name=_("Total Value")),    ]

Homepage

Low level

The view is a wrapper over the ReportGenerator class, which is the core of the reporting engine.You can interact with the ReportGenerator using same syntax as used with the ReportView .

fromslick_reporting.generatorimportReportGeneratorfrom .modelsimportMySalesModelclassMyReport(ReportGenerator):report_model=MySalesModelgroup_by="product"columns= ["title","__total__"]# ORmy_report=ReportGenerator(report_model=MySalesModel,group_by="product",columns=["title","__total__"])my_report.get_report_data()# -> [{'title':'Product 1', '__total__: 56}, {'title':'Product 2', '__total__: 43}, ]

This is just a scratch of what you can do and customize.

Demo site

Available onDjango Slick Reporting

You can also use locally

#clone the repogit clone https://github.com/ra-systems/django-slick-reporting.git#create a virtual environment and activate itpython -m venv /path/to/new/virtual/environmentsource /path/to/new/virtual/environment/bin/activatecd django-slick-reporting/demo_projpip install -r requirements.txtpython manage.py migratepython manage.py create_entriespython manage.py runserver

thecreate_entries command will generate data for the demo app

Documentation

Available onRead The Docs

You can run documentation locally

<activate your virtual environment>cd docspip install -r requirements.txtsphinx-build -b html source build

Road Ahead

  • Continue on enriching the demo project
  • Add the dashboard capabilities

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#Orfor 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 formulatedDjango's guidelines to serve as contribution guide here too.

Authors

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 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 ⭐

About

The Reporting Engine for Django. Create dashboards and standalone Reports and Charts.

Topics

Resources

License

Stars

Watchers

Forks

Contributors12


[8]ページ先頭

©2009-2025 Movatter.jp