With django-tables2-reports you can get a report (CSV, XLS) of any django-tables2 with minimal changes to your project
Project description
django-tables2-reports
With django-tables2-reports you can get a report (CSV, XLS) of any table with minimal changes to your project
Requirements
Python (supports 2.7, 3.3, 3.4, 3.5, 3.6)
Django (supports 1.3, 1.4, 1.5, 1.6, 1.7, 1.8. 1.9, 1.10, 1.11)
xlwt, openpyxl or pyExcelerator (these are optionals, to export to xls; defaults to xlwt if available)
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:
cd test_project export PYTHONPATH=.. python manage.py syncdb --noinput python manage.py runserver
Releases
0.1.0 (2017-06-19)
maintenance release,
Django 1.8, 1.9, 1.10, 1.11 support,
openpyxl > 2.0.0 support,
recent django-tables2 support,
new maintainer Michał Pasternak
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)
Refactor the csv_to_excel module. In the next release this package will be a pypi egg.
Support for openpyxl
Integration with travis and coveralls
Fix an error if you use the theme paleblue
Fix test with python 3
Fix some details
Test project
- Thanks to:
0.0.7 (2013-08-29)
Russian translations
- Thanks to:
0.0.6 (2013-08-22)
Python3 support
Polish translation
- Thanks to:
0.0.5 (2013-07-03)
Improvements in the README
Exportable to XLS with xlwt
- Thanks to:
And spatially to Austin Phillips
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)
Add a default view (https://docs.djangoproject.com/en/dev/topics/class-based-views/)
Exportable to XLS
Update the README
0.0.1 (2012-07-17)
Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-tables2-reports-0.1.3.tar.gz
.
File metadata
- Download URL: django-tables2-reports-0.1.3.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10ee0fa91649c4812e955450e25f6303b16e7656a732d55e092e68af0870addb |
|
MD5 | e29e150b13755ddf67a559dc9e749ff4 |
|
BLAKE2b-256 | 034b675c57ee0ad44b816bab5637cfb914da2388059f532ddc378e10ff6b6600 |
File details
Details for the file django_tables2_reports-0.1.3-py2.py3-none-any.whl
.
File metadata
- Download URL: django_tables2_reports-0.1.3-py2.py3-none-any.whl
- Upload date:
- Size: 34.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fb934c0191d84a8ff2700092e261fa501d65fae3426381ca94c0a2344b6048c |
|
MD5 | 279ee5ef54cbf6b88928f200d2b6315d |
|
BLAKE2b-256 | ccb76a56258a32e212008a363858d64e00245f6cc056e703a378bdbc25f53242 |