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
Metadata
Release files for django-reports-admin 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django-reports-admin-1.1.0.tar.gz | 13.8 kB | Without provenance | Details for django-reports-admin-1.1.0.tar.gz |
Release files / django-reports-admin-1.1.0.tar.gz
| Download URL | django-reports-admin-1.1.0.tar.gz |
|---|---|
| Size | 13.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d0db67b9ba220c4a649b8ff413323b7a7c0a7422440a7a8fe88be5b6f5eefbe2
|
|
BLAKE2b-256 checksum How to use checksums |
a6b5bc5ce1d797911d8f764394d475c08fa0da26cf98fa5319c0e930dda511f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Security for django-reports-admin 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.