def table_stock_items(request, warehouse_pk=None, param_name=None): """Ajax view that returns list of stock items for using in datatables""" if not warehouse_pk: warehouse_pk = request.GET.get(param_name) warehouse = get_object_or_404(ets.models.Warehouse, pk=warehouse_pk) column_index_map = { 0: 'commodity__name', 1: 'project_number', 2: 'si_code', 3: 'quality', 4: 'number_of_units', 5: 'unit_weight_net', 6: 'unit_weight_gross', 7: 'quantity_net', 8: 'quantity_gross' } redirect_url = get_api_url(request, column_index_map, "api_stock_items", { 'warehouse': warehouse.pk }) if redirect_url: return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8") return get_datatables_records(request, warehouse.stock_items.all(), column_index_map, lambda item: [ unicode(item.commodity), item.project_number, item.si_code, item.get_quality_display(), int(item.number_of_units), item.unit_weight_net, item.unit_weight_gross, item.quantity_net, item.quantity_gross, ])
def table_waybills(request, queryset=ets.models.Waybill.objects.all(), filtering=None): """Ajax view that returns list of waybills for using in datatables""" search_string = request.GET.get("search_string", "") request_params = {} if search_string: request_params["search_string"] = search_string queryset = queryset.filter(pk__icontains=search_string) column_index_map = { 0: 'order__pk', 1: 'pk', 2: 'order__warehouse__name', 3: 'order__consignee__name', 4: 'order__location__name', 5: 'destination__name', 6: 'transaction_type', 7: 'transport_dispach_signed_date', 8: 'receipt_signed_date', 9: 'pk', 10: 'pk', 11: 'pk', } params = { 'filtering': filtering } if filtering else None redirect_url = get_api_url(request, column_index_map, "api_waybills", params, request_params ) if redirect_url: return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8") return get_datatables_records(request, queryset, column_index_map, lambda item: [ fill_link(item.order.get_absolute_url(), item.order.pk), fill_link(item.get_absolute_url(), item.pk), item.order.warehouse.name, item.order.consignee.name, item.order.location.name, item.destination.name if item.destination else "", item.get_transaction_type_display(), item.transport_dispach_signed_date and date_filter(item.transport_dispach_signed_date).upper() \ or fill_link(item.get_absolute_url(), _("Open")), item.receipt_signed_date and date_filter(item.receipt_signed_date).upper() \ or fill_link(reverse('waybill_reception', kwargs={'waybill_pk': item.pk}) if item.has_receive_permission(request.user) else '', _("Receive")), "%s/%s" % (item.validated and "D" or "-", item.receipt_validated and "R" or "-", ), "%s/%s" % (item.sent_compas and "D" or "-", item.receipt_sent_compas and "R" or "-", ), fill_link(reverse('waybill_delete', kwargs={'waybill_pk': item.pk}) \ if item.has_delete_permission(request.user) else '', _("Delete"), "delete_waybill"), ])
def table_validate_waybills(request, queryset=ets.models.Waybill.objects.all(), filtering=None): """Ajax view that returns list of validated/not validated waybills for using in datatables""" if filtering in ["dispatch_validated", "validate_dispatch"]: url = "validate_dispatch" logger_action = ets.models.CompasLogger.DISPATCH queryset = queryset.filter(**get_dispatch_compas_filters(request.user)) elif filtering in ["receipt_validated", "validate_receipt"]: url = "validate_receipt" logger_action = ets.models.CompasLogger.RECEIPT queryset = queryset.filter(**get_receipt_compas_filters(request.user)) column_index_map = { 0: 'order__pk', 1: 'pk', 2: 'order__warehouse__name', 3: 'order__consignee__name', 4: 'order__location__name', 5: 'transport_dispach_signed_date', 6: 'receipt_signed_date', 7: 'pk', 8: 'pk', } params = { 'filtering': filtering } if filtering else None redirect_url = get_api_url(request, column_index_map, "api_waybills", params) if redirect_url: return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8") return get_datatables_records(request, queryset, column_index_map, lambda item: [ fill_link(item.order.get_absolute_url(), item.order.pk), fill_link(item.get_absolute_url(), item.pk), item.order.warehouse.name, item.order.consignee.name, item.order.location.name, item.transport_dispach_signed_date and date_filter(item.transport_dispach_signed_date).upper() or _("Pending"), item.receipt_signed_date and date_filter(item.receipt_signed_date).upper() or _("Pending"), fill_link(reverse(url, kwargs={'waybill_pk': item.pk}), _("Validate"), "validate-link"), fill_link(reverse("waybill_errors", kwargs={'waybill_pk': item.pk, "logger_action": logger_action}), _("Show errors"), "error-link") if item.compass_loggers.filter(action=logger_action).exists() else "", ])
def table_compas_waybills(request, queryset=ets.models.Waybill.objects.all(), filtering=None): """Ajax view that returns list of compas' waybills for using in datatables""" column_index_map = { 0: 'order__pk', 1: 'pk', 2: 'order__warehouse__location__name', 3: 'order__consignee__name', 4: 'order__location__name', } params = { 'filtering': filtering } if filtering else None redirect_url = get_api_url(request, column_index_map, "api_waybills", params) if redirect_url: return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8") return get_datatables_records(request, queryset, column_index_map, lambda item: [ fill_link(item.order.get_absolute_url(), item.order.pk), fill_link(item.get_absolute_url(), item.pk), item.order.warehouse.location.name, item.order.consignee.name, item.order.location.name, ])
def table_orders(request, queryset): """Ajax view that returns list of orders for using in datatables""" column_index_map = { 0: 'code', 1: 'created', 2: 'dispatch_date', 3: 'expiry', 4: 'warehouse__name', 5: 'location__name', 6: 'consignee__code', 7: 'transport_name', 8: 'code', 9: 'code', 10: 'code', } queryset = queryset.filter(**filter_for_orders()) redirect_url = get_api_url(request, column_index_map, "api_orders") if redirect_url: return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8") return get_datatables_records(request, queryset, column_index_map, lambda item: [ fill_link(item.get_absolute_url(), item.code), date_filter(item.created).upper(), date_filter(item.dispatch_date).upper(), date_filter(item.expiry).upper(), item.warehouse.name, item.location.name, unicode(item.consignee), item.transport_name, item.percentage, fill_link(reverse('waybill_create', kwargs={'order_pk': item.pk}) \ if item.has_waybill_creation_permission(request.user) else '', _("Create")), item.is_expired(), ])
def table_warehouses(request, queryset=ets.models.Warehouse): """Ajax view that returns list of warehouses for using in datatables""" column_index_map = { 0: 'code', 1: 'name', 2: 'location__name', 3: 'organization__name', 4: 'compas_text', 5: 'code' } redirect_url = get_api_url(request, column_index_map, "api_warehouses") if redirect_url: return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8") return get_datatables_records(request, queryset, column_index_map, lambda item: [ fill_link(reverse('stock_list', kwargs={ 'object_id': item.code }), item.code), item.name, item.location.name, item.organization and item.organization.name or '', item.compas_text, fill_link(reverse('export_warehouse_file', kwargs={ 'data_type': "data", 'warehouse': item.code }), _('download')), ])