Metadata-Version: 1.1
Name: django-datatables-too
Version: 0.1.0
Summary: Django integration with jQuery DataTables.
Home-page: https://bitbucket.org/tsantor/django-datatables-too
Author: Tim Santor
Author-email: tsantor@xstudios.agency
License: MIT
Description: Django DataTables Too
        =====================
        
        Author:Tim Santor tsantor@xstudios.agency
        
        Getting It
        ----------
        
        To install Django DataTables Too, just use pip:
        
        ::
        
           $ pip install django-datatables-too
        
        To install the development version:
        
        ::
        
           $ pip install git+https://bitbucket.org/tsantor/django-datatables-too.git
        
        If you want to install it from source, grab the git repository and run
        setup.py:
        
        ::
        
           $ git clone https://bitbucket.org/tsantor/django-datatables-too.git
           $ cd django-datatables-too
           $ pip install .
        
        Usage
        -----
        
        views.py
        ~~~~~~~~
        
        ::
        
           from django.http import JsonResponse
           from django.views.generic import View
           from django_datatables_too.mixins import DataTableMixin
        
           class DataTablesAjaxPagination(DataTableMixin, View):
               model = Report
               queryset = Report.objects.all()
        
               def _get_actions(self, obj):
                   """Get action buttons w/links."""
                   return f'<a href="{obj.get_update_url()}" title="Edit" class="btn btn-primary btn-xs"><i class="fa fa-pencil"></i></a> <a data-title="{obj}" title="Delete" href="{obj.get_delete_url()}" class="btn btn-danger btn-xs btn-delete"><i class="fa fa-trash"></i></a>'
        
               def filter_queryset(self, qs):
                   """Return the list of items for this view."""
                   # If a search term, filter the query
                   if self.search:
                       return qs.filter(
                           Q(number__icontains=self.search) |
                           Q(title__icontains=self.search) |
                           Q(state__icontains=self.search) |
                           Q(year__icontains=self.search)
                       )
                   return qs
        
               def prepare_results(self, qs):
                   # Create row data for datatables
                   data = []
                   for o in qs:
                       data.append({
                           'number': o.number,
                           'title': Truncator(o.title).words(10),
                           'state': o.state,
                           'year': o.year,
                           'published': o.published,
                           'modified': o.modified,
                           'actions': self._get_actions(o)
                       })
                   return data
        
               def get(self, request, *args, **kwargs):
                   context_data = self.get_context_data(request)
                   return JsonResponse(context_data)
        
        urls.py
        ~~~~~~~
        
        ::
        
           from django.urls import path
        
           from . import views
        
           app_name = 'reports'
        
           urlpatterns = [
        
               ...
        
               path('ajax',
                   views.DataTablesAjaxPagination.as_view(), name='report-list-ajax'),
        
           ]
        
        report_list.html
        ~~~~~~~~~~~~~~~~
        
        ::
        
           $('#report-table').DataTable({
               columnDefs: [{
                   orderable: false,
                   targets: -1
               }, ],
        
               // Ajax for pagination
               processing: true,
               serverSide: true,
               ajax: {
                   url: window.pagination_url,
                   type: 'get',
               },
               columns: [
                   { data: 'number', name: 'number'},
                   { data: 'title', name: 'title' },
                   { data: 'state', name: 'state' },
                   { data: 'year', name: 'year' },
                   { data: 'published', name: 'published' },
                   { data: 'modified', name: 'modified' },
                   { data: 'actions', name: 'actions' }
               ]
        
           });
        
        
        
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.6
