Home > django-customreport

django-customreport

Django-customreport is a project mainly written in Python, it's free.

A library which allows one to create custom reports which filter and display any fields/relations on a model

""" Refactoring 6/2011

Allowing users to display columns has always been a problem because when there are changes to models, the introspection might auto-include undesired things.

We're going to move the display column inclusions to an admin-like interface where report administrators can establish what fields and attributes users can select during their report generation.

  • Down the road *

1.4 - ChangeList - https://code.djangoproject.com/ticket/5833

This ticket unlocked the admin changelist in a way very similar to Gaynor's efforts. I collaborated with the devs to make sure that features which weren't possible in Gaynor's django-filters were addressed, which was the reason I whipped up https://github.com/subsume/django-qfilters. As of 1.4 you can just use contrib.admin)

"""

EXAMPLE SETUP:

forms.py - Establish a django filterset a la

class CustomFilterSet(FilterSet): # See notes about this in filters.py addresszip = CommaFilter(label="Zip") disability = DisabilityFilter(queryset=bm.Disability.objects.all(),label="Disability") filter_overrides = { models.DateField: { 'filter_class': bfilters.DateSpecificRangeFilter }, models.PositiveIntegerField:{ 'filter_class': django_filters.RangeFilter }, models.ForeignKey : { 'filter_class': django_filters.ModelMultipleChoiceFilter, 'extra': lambda f: { 'queryset': f.rel.to._default_manager.complex_filter(f.rel.limit_choices_to), 'to_field_name': f.rel.field_name, } }, models.CharField : { 'filter_class': django_filters.MultipleChoiceFilter, 'extra': lambda f: {'choices': f.choices, } }, } class Meta: model = Customer fields = ['race', 'location', 'household_annual_income', 'gender', 'addresszip_link__counties', 'employment_status', 'household_type', 'entry_date', 'closure_date', 'is_veteran', 'status', 'goalstype', 'goalsservicetype', 'contactprogram', 'contactdate', 'consumertagtag', 'address__zip',]

report.py

from django_customreport.sites import ReportSite as BaseReportSite class ReportSite(BaseReportSite): queryset = SomeQueryset.objects.all() filterset_class = SomeFilterSet displayset_class = SomeDisplaySet

site = ReportSite()

urls.py

from my.report import site urlpatterns = patterns('', url('^my-report/$', include(site.urls)), )