A Django Admin add-on which adds functionality to export data in customized forms of output.
Project description
django-reports-admin
A Django Admin add-on which adds functionality to export data in customized forms of output.
Requirements
Django Reports Admin requires Django 1.10 or later, and is written for Python 3.5 or later.
Installation
NOTE: Although enabled by default, you’ll want to ensure that django.contrib.contenttypes is within INSTALLED_APPS.
pip install django-reports-admin
Then, amend your Django settings.INSTALLED_APPS:
INSTALLED_APPS = (
...
'reports',
...
)
Usage
Creating reports requires subclassing the ModelReport class and identifying a report. This can be done with a few lines of code if you simply want to extract the admin list view for verbatim. For example:
# This file can be named anything, but it lives well within the admin.py or
# models.py as it'll ensure your register() command is run.
# yourapp/reports.py -- This file can be named anything
from reports.base import ModelReport
class MyReport(ModelReport)
name = "Report - My Report"
Then, register the ModelReport against a model:
# yourapp/admin.py
from .reports import MyReport
from .models import MyModel
reports.register(MyModel, MyReport)
Upon registration, you’ll see a new action with the Django Admin for that Model, with whatever name you’ve provided in the name attribute.
For advanced report modification, subclass the following functions within your ModelReport class:
get_field_lookups returns a list of column name-value/callback tuples. This function is a great way to modify the columns of the report, and the exact output of each field. It is useful if you wish to create a calculated field, or format a date field.
get_row_data returns a dictionary of the data to be entered for each row. Generally you should not need to modify this as get_field_lookups will be sufficient.
generate_output can be modified to adjust the type of output. By default, a CSV file is generated.
Usage In Shell And Tests
It may be useful for you to test a report via code, either as a test or a quick shell script. This is done without much stress:
# Assuming a defined ModelReport
from reports.base import ModelReport
from .models import MyModel
class MyReport(ModelReport):
queryset = MyModel.objects.all()
# Instantiate the report, and run it through various means
report = MyReport()
# Create a SavedReport instance
report.run_report()
# Raw output of the report (as CSV, by default)
report.generate_output()
# Output list of OrderedDicts
report.collect_data()
Testing
Tests are run using pytest, and the test suite can be executed using the MakeFile
make test
Changelog
1.1.0 (2021-02-06)
1.0.4 (2017-02-28)
a0dc5a0 - Return None on error when calling ModelReport
1.0.3 (2017-02-27)
1.0.2 (2017-02-10)
fa46174 Adjust user messaging in admin.
Update README
1.0.1 (2017-02-10)
First pypi release
1.0.0 (2017-02-09)
Initial commit
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
File details
Details for the file django-reports-admin-1.1.0.tar.gz
.
File metadata
- Download URL: django-reports-admin-1.1.0.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.5.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0db67b9ba220c4a649b8ff413323b7a7c0a7422440a7a8fe88be5b6f5eefbe2 |
|
MD5 | f552d0bf93b5fd98a50c68ea99c78fe8 |
|
BLAKE2b-256 | a6b5bc5ce1d797911d8f764394d475c08fa0da26cf98fa5319c0e930dda511f2 |