Skip to main content

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)

  • 58bece6 - Migration for change to SavedReport.run_by

  • fae699c - Full code base format + commit of change to SavedReport.run_by. Modified to add the on_delete=models.SET_NULL

1.0.4 (2017-02-28)

  • a0dc5a0 - Return None on error when calling ModelReport

1.0.3 (2017-02-27)

  • 21ca6a5 - Refactor calling to report runner

  • fba6bf1 - Allow queryset to be passed within __init__ method

  • 5f0ef05 - Add simple test case for ModelReport, refine misc.

  • 3d7d587 - Document shell usage in README, add more type hints

  • 5268739 - Adjust signature of run_report, easing usage in shell

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

django-reports-admin-1.1.0.tar.gz (13.8 kB view details)

Uploaded Source

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

Hashes for django-reports-admin-1.1.0.tar.gz
Algorithm Hash digest
SHA256 d0db67b9ba220c4a649b8ff413323b7a7c0a7422440a7a8fe88be5b6f5eefbe2
MD5 f552d0bf93b5fd98a50c68ea99c78fe8
BLAKE2b-256 a6b5bc5ce1d797911d8f764394d475c08fa0da26cf98fa5319c0e930dda511f2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page