With django-tables2-reports you can get a report (CSV, XLS) of any django-tables2 with minimal changes to your project
Project description
Contents
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)
- django-tables2
- 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:
- Crashy23
- Gamesbook
- 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
Hashes for django-tables2-reports-0.1.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10ee0fa91649c4812e955450e25f6303b16e7656a732d55e092e68af0870addb |
|
MD5 | e29e150b13755ddf67a559dc9e749ff4 |
|
BLAKE2-256 | 034b675c57ee0ad44b816bab5637cfb914da2388059f532ddc378e10ff6b6600 |
Hashes for django_tables2_reports-0.1.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fb934c0191d84a8ff2700092e261fa501d65fae3426381ca94c0a2344b6048c |
|
MD5 | 279ee5ef54cbf6b88928f200d2b6315d |
|
BLAKE2-256 | ccb76a56258a32e212008a363858d64e00245f6cc056e703a378bdbc25f53242 |