Last active
April 1, 2023 18:53
-
-
Save oisobstudio/b99d568974a3393865d53d85cad04106 to your computer and use it in GitHub Desktop.
Revisions
-
oisobstudio revised this gist
Mar 12, 2017 . 1 changed file with 186 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1 +1,186 @@ ### myapp/views.py ```python import json from django.views.generic import View from django.http import HttpResponse from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.db.models import Q from django.core.serializers.json import DjangoJSONEncoder # ================ # Inner app module # ================ from .models import Invoice from .models import TransactionDetail from .models import InvoiceCategory from .models import InvoiceStatus class AjaxInvoiceWebList(View): def post(self, request): # Ambil semua data invoice yang valid invoices = self._datatables(request) return HttpResponse(json.dumps(invoices, cls=DjangoJSONEncoder), content_type='application/json') def _datatables(self, request): datatables = request.POST # Ambil draw draw = int(datatables.get('draw')) # Ambil start start = int(datatables.get('start')) # Ambil length (limit) length = int(datatables.get('length')) # Ambil data search search = datatables.get('search[value]') # Set record total records_total = Invoice.objects.all().exclude(Q(transactiondetail=None)|Q(shipping=None)|Q(billing=None)).count() # Set records filtered records_filtered = records_total # Ambil semua invoice yang valid invoices = Invoice.objects.all().exclude(Q(transactiondetail=None)|Q(shipping=None)|Q(billing=None)) if search: invoices = Invoice.objects.filter( Q(invoice_number__icontains=search)| Q(user__username__icontains=search)| Q(category__info__icontains=search)| Q(status__info__icontains=search) ).exclude(Q(transactiondetail=None)|Q(shipping=None)|Q(billing=None)) records_total = invoices.count() records_filtered = records_total # Atur paginator paginator = Paginator(invoices, length) try: object_list = paginator.page(draw).object_list except PageNotAnInteger: object_list = paginator.page(draw).object_list except EmptyPage: object_list = paginator.page(paginator.num_pages).object_list data = [ { 'user': inv.user.username, 'invoice_number': inv.invoice_number, 'date_transaction': inv.invoice_date, 'total_price': inv.total, 'category': inv.category.info, 'status': inv.status.info } for inv in object_list ] return { 'draw': draw, 'recordsTotal': records_total, 'recordsFiltered': records_filtered, 'data': data, } def invoiceweb_list(request): data_context = {} return render(request, 'myapp/invoice/invoiceweb_list.html', data_context) ``` ### myapp/urls.py ```python from django.conf.urls import url from . import views urlpatterns = [ url(r'^invoice/web\.html$', views.invoiceweb_list, name='invoiceweb_list'), url(r'^ajax/invoice/web\.html$', views.AjaxInvoiceWebList.as_view(), name='ajax_invoice_web_list'), ] ``` ### project/urls.py ```python from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ # .... url(r'^transaction/', include('apltransaction.urls', namespace="apltransaction")), ] ``` ### myapp/templates/myapp/invoice/invoiceweb_list.html ```html {% extends "base.html" %} {% load staticfiles %} {% load widget_tweaks %} {% block title %}Invoice In Web{% endblock %} {% block heading %}Invoice In Web{% endblock %} {% block css %} <link rel="stylesheet" type="text/css" href="{% static 'bower_components/datatables/css/dataTables.bootstrap.min.css' %}"> {% endblock %} {% block content %} <table id="example" class="display table" cellspacing="0" width="100%"> <thead> <tr> <th>#</th> <th>User</th> <th>Invoice Number</th> <th>Date Transaction</th> <th>Total Price</th> <th>Category</th> <th>Status</th> </tr> </thead> <tfoot> <tr> <th><input type="checkbox" name="checkbox"></th> <th>User</th> <th>Invoice Number</th> <th>Date Transaction</th> <th>Total Price</th> <th>Category</th> <th>Status</th> </tr> </tfoot> </table> {% endblock %} {% block js %} <script src="{% static 'bower_components/datatables/js/dataTables.bootstrap.min.js' %}"></script> <script> $(document).ready(function() { $('#example').DataTable( { "processing": true, "serverSide": true, "ajax": { "url": "url 'apltransaction:ajax_invoice_web_list'", "type": "POST" }, "columns": [ { "data": "user" }, { "data": "user" }, { "data": "invoice_number" }, { "data": "date_transaction" }, { "data": "total_price" }, { "data": "category" }, { "data": "status" } ] } ); } ); </script> {% endblock %} ``` -
oisobstudio created this gist
Mar 12, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1 @@ myapp/