Metadata-Version: 1.1
Name: django-tables2-reports
Version: 0.1.3
Summary: With django-tables2-reports you can get a report (CSV, XLS) of any django-tables2 with minimal changes to your project
Home-page: https://github.com/goinnn/django-tables2-reports
Author: Pablo Martin
Author-email: goinnn@gmail.com
License: LGPL 3
Description: .. contents::
        
        ======================
        django-tables2-reports
        ======================
        
        .. image:: https://travis-ci.org/goinnn/django-tables2-reports.svg?branch=master
            :target: https://travis-ci.org/goinnn/django-tables2-reports
        
        .. image:: https://badge.fury.io/py/django-tables2-reports.svg
            :target: https://pypi.python.org/pypi/django-tables2-reports
        
        With django-tables2-reports you can get a report (CSV, XLS) of any `table <http://pypi.python.org/pypi/django-tables2/>`_  with **minimal changes** to your project
        
        Requirements
        ============
        
        * `Python <http://python.org>`_ (supports 2.7, 3.3, 3.4, 3.5, 3.6)
        * `Django <http://pypi.python.org/pypi/django/>`_ (supports 1.3, 1.4, 1.5, 1.6, 1.7, 1.8. 1.9, 1.10, 1.11)
        * `django-tables2 <http://pypi.python.org/pypi/django-tables2/>`_ 
        * `xlwt <http://pypi.python.org/pypi/xlwt/>`_, `openpyxl <http://pythonhosted.org/openpyxl/>`_ or `pyExcelerator <http://pypi.python.org/pypi/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 <http://pypi.python.org/pypi/django-tables2/>`_)
        
        ::
        
            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 <https://docs.djangoproject.com/en/dev/topics/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 <http://pypi.python.org/pypi/xlwt/>`_, `openpyxl <http://pythonhosted.org/openpyxl/>`_ or `pyExcelerator <http://pypi.python.org/pypi/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 <https://github.com/mpasternak>`_
        
        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:
            * `Ramana Varanasi <https://github.com/sramana>`_
            * `Mihas <https://github.com/mihasK>`_
            * `Paulgueltekin <https://github.com/paulgueltekin>`_
            * `David Ray <https://github.com/daaray>`_
        
        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:
            * `Pavel Zaytsev <https://github.com/stelzzz>`_
        
        
        0.0.8 (2013-11-14)
        ------------------
        * `Refactor the csv_to_excel module <https://github.com/goinnn/django-tables2-reports/commit/51c8cee2500f73ba8b823a81fc5ad9b3f2a62d83>`_. In the next release this package will be a pypi egg.
        * Support for `openpyxl <http://pythonhosted.org/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:
            * `Michał Pasternak <https://github.com/mpasternak>`_
            * `Mark Jones <https://github.com/mark0978>`_
        
        0.0.7 (2013-08-29)
        ------------------
        
        * Russian translations
        * Thanks to:
            * `Armicron <https://github.com/armicron>`_
        
        
        0.0.6  (2013-08-22)
        -------------------
        
        * Python3 support
        * Polish translation
        * Thanks to:
            * `Michał Pasternak <https://github.com/mpasternak>`_
        
        0.0.5  (2013-07-03)
        -------------------
        
        * Improvements in the README
        * Exportable to XLS with `xlwt <http://pypi.python.org/pypi/xlwt/>`_
        * Thanks to:
            * `Crashy23 <https://github.com/Crashy23>`_
            * `Gamesbook <https://github.com/gamesbook>`_
            * And spatially to `Austin Phillips <https://github.com/austinphillips2>`_
        
        
        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:
            * `Austin Phillips <https://github.com/austinphillips2>`_
        
        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
        
Keywords: django,tables,django-tables2,reports,CSV,XLS
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Django
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
