Skip to main content

django-tables2-reports

Fork of abondened https://github.com/goinnn/django-tables2-reports

https://travis-ci.org/goinnn/django-tables2-reports.png?branch=master https://coveralls.io/repos/goinnn/django-tables2-reports/badge.png?branch=master https://badge.fury.io/py/django-tables2-reports.png https://pypip.in/d/django-tables2-reports/badge.png Bitdeli badge

With django-tables2-reports you can get a report (CSV, XLS) of any table with minimal changes to your project

Requirements

If you use python3, and you want export to xls use this version of the xlwt (fork) (0.8.0) if this pull request is not merged still , or use openpyxl

Installation

  • In your settings:

INSTALLED_APPS = (

    'django_tables2_reports',
)


TEMPLATE_CONTEXT_PROCESSORS = (

    'django.core.context_processors.static',

)


# This is optional

EXCEL_SUPPORT = 'xlwt' # or 'openpyxl' or 'pyexcelerator'

Changes in your project

1.a Now your table should extend of ‘TableReport’

############### Before ###################

import django_tables2 as tables


class MyTable(tables.Table):

    ...

############### Now ######################

from django_tables2_reports.tables import TableReport


class MyTable(TableReport):

    ...

1.b If you want to exclude some columns from report (e.g. if it is a column of buttons), you should set ‘exclude_from_report’ - the names of columns (as well as property ‘exclude’ in table)

class MyTable(TableReport):

    class Meta:
        exclude_from_report = ('column1', ...)
    ...

2.a. If you use a traditional views, now you should use other RequestConfig and change a little your view:

############### Before ###################

from django_tables2 import RequestConfig


def my_view(request):
    objs = ....
    table = MyTable(objs)
    RequestConfig(request).configure(table)
    return render_to_response('app1/my_view.html',
                              {'table': table},
                              context_instance=RequestContext(request))

############### Now ######################

from django_tables2_reports.config import RequestConfigReport as RequestConfig
from django_tables2_reports.utils import create_report_http_response

def my_view(request):
    objs = ....
    table = MyTable(objs)
    table_to_report = RequestConfig(request).configure(table)
    if table_to_report:
        return create_report_http_response(table_to_report, request)
    return render_to_response('app1/my_view.html',
                              {'table': table},
                              context_instance=RequestContext(request))

If you have a lot of tables in your project, you can activate the middleware, and you do not have to change your views, only the RequestConfig import

# In your settings

MIDDLEWARE_CLASSES = (

    'django_tables2_reports.middleware.TableReportMiddleware',
)

############### Now (with middleware) ######################

from django_tables2_reports.config import RequestConfigReport as RequestConfig

def my_view(request):
    objs = ....
    table = MyTable(objs)
    RequestConfig(request).configure(table)
    return render_to_response('app1/my_view.html',
                              {'table': table},
                              context_instance=RequestContext(request))

2.b. If you use a Class-based views:

############### Before ###################

from django_tables2.views import SingleTableView


class PhaseChangeView(SingleTableView):
    table_class = MyTable
    model = MyModel


############### Now ######################

from django_tables2_reports.views import ReportTableView


class PhaseChangeView(ReportTableView):
    table_class = MyTable
    model = MyModel

Usage

Under the table appear a CSV icon (and XLS icon if you have xlwt, openpyxl or pyExcelerator in your python path), if you click in this icon, you get a CSV report (or xls report) with every item of the table (without pagination). The ordering works!

Development

You can get the last bleeding edge version of django-tables2-reports by doing a clone of its git repository:

git clone https://github.com/goinnn/django-tables2-reports

Test project

In the source tree, you will find a directory called ‘test_project’. It contains a readily setup project that uses django-tables2-reports. You can run it as usual:

python manage.py syncdb --noinput
python manage.py runserver

Releases

0.0.10 (2014-10-13)

  • Fixes for xlsx Content-Type:
    • django-tables2-reports throws 500 Sever Error when report format is not recognized. 404 is more appropriate in this case.

    • django-tables2-reports sets Content-Type to application/vnd.ms-excel for xlsx files which causes warnings in Firefox. application/vnd.openxmlformats-officedocument.spreadsheetml.sheet is the correct Content-Type for xlsx

  • Support to Django 1.7 (I’m sorry to the delay)

  • Adding new feature: exclude_from_report

  • And a little details

  • Thanks to:

0.0.9 (2013-11-30)

  • Compatible with the future version of Django (>=1.7)

  • Update the tests

  • Refactor the code

  • Fix a bug when the title of the sheet is longer than 31

  • Thanks to:

0.0.8 (2013-11-14)

0.0.7 (2013-08-29)

  • Russian translations

  • Thanks to:

0.0.6 (2013-08-22)

0.0.5 (2013-07-03)

0.0.4 (2013-05-17)

  • Escape csv data correctly during output

  • The fields with commas now are not split into multiple columns

  • Thanks to:

0.0.3 (2012-07-19)

  • Fix a little error, when a column has line breaks. Now these are changed to espaces

  • Details

0.0.2 (2012-07-18)

0.0.1 (2012-07-17)

  • Initial release

Metadata

Release files for tp-django-tables2-reports 0.0.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tp-django-tables2-reports 0.0.12
File Size Uploaded Provenance
tp-django-tables2-reports-0.0.12.tar.gz 22.8 kB Without provenance Details

Release files / tp-django-tables2-reports-0.0.12.tar.gz

Download URL tp-django-tables2-reports-0.0.12.tar.gz
Size 22.8 kB
Tags Source
SHA-256 checksum
How to use checksums
461fff99d92004de52e4b8f54eed2ba4103ded7afb5dc125ddc2a7203afa1fcf
BLAKE2b-256 checksum
How to use checksums
0f943df5dd8801f36e2697e63909bb7d2e254693df20e7559228bb035cf243df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for tp-django-tables2-reports 0.0.12

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.

Release history Release notifications | RSS feed

This release

0.0.12 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page