mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-30 20:46:47 +00:00
Refactor exporters for:
- Part - PurchaseOrderLineItem
This commit is contained in:
parent
a77d4b97b4
commit
465e69c254
@ -17,7 +17,7 @@ from company.models import SupplierPart
|
|||||||
|
|
||||||
from InvenTree.filters import InvenTreeOrderingFilter
|
from InvenTree.filters import InvenTreeOrderingFilter
|
||||||
from InvenTree.helpers import str2bool, DownloadFile
|
from InvenTree.helpers import str2bool, DownloadFile
|
||||||
from InvenTree.api import AttachmentMixin
|
from InvenTree.api import AttachmentMixin, APIDownloadMixin
|
||||||
from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus
|
from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus
|
||||||
|
|
||||||
from order.admin import PurchaseOrderLineItemResource
|
from order.admin import PurchaseOrderLineItemResource
|
||||||
@ -407,7 +407,7 @@ class PurchaseOrderLineItemFilter(rest_filters.FilterSet):
|
|||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
class PurchaseOrderLineItemList(generics.ListCreateAPIView):
|
class PurchaseOrderLineItemList(APIDownloadMixin, generics.ListCreateAPIView):
|
||||||
""" API endpoint for accessing a list of PurchaseOrderLineItem objects
|
""" API endpoint for accessing a list of PurchaseOrderLineItem objects
|
||||||
|
|
||||||
- GET: Return a list of PurchaseOrder Line Item objects
|
- GET: Return a list of PurchaseOrder Line Item objects
|
||||||
@ -460,25 +460,19 @@ class PurchaseOrderLineItemList(generics.ListCreateAPIView):
|
|||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
def download_queryset(self, queryset, export_format):
|
||||||
|
dataset = PurchaseOrderLineItemResource().export(queryset=queryset)
|
||||||
|
|
||||||
|
filedata = dataset.export(export_format)
|
||||||
|
|
||||||
|
filename = f"InvenTree_PurchaseOrderItems.{export_format}"
|
||||||
|
|
||||||
|
return DownloadFile(filedata, filename)
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
|
|
||||||
queryset = self.filter_queryset(self.get_queryset())
|
queryset = self.filter_queryset(self.get_queryset())
|
||||||
|
|
||||||
# Check if we wish to export the queried data to a file
|
|
||||||
export_format = request.query_params.get('export', None)
|
|
||||||
|
|
||||||
if export_format:
|
|
||||||
export_format = str(export_format).strip().lower()
|
|
||||||
|
|
||||||
if export_format in ['csv', 'tsv', 'xls', 'xlsx']:
|
|
||||||
dataset = PurchaseOrderLineItemResource().export(queryset=queryset)
|
|
||||||
|
|
||||||
filedata = dataset.export(export_format)
|
|
||||||
|
|
||||||
filename = f"InvenTree_PurchaseOrderData.{export_format}"
|
|
||||||
|
|
||||||
return DownloadFile(filedata, filename)
|
|
||||||
|
|
||||||
page = self.paginate_queryset(queryset)
|
page = self.paginate_queryset(queryset)
|
||||||
|
|
||||||
if page is not None:
|
if page is not None:
|
||||||
|
@ -49,7 +49,7 @@ from . import serializers as part_serializers
|
|||||||
|
|
||||||
from InvenTree.helpers import str2bool, isNull, increment
|
from InvenTree.helpers import str2bool, isNull, increment
|
||||||
from InvenTree.helpers import DownloadFile
|
from InvenTree.helpers import DownloadFile
|
||||||
from InvenTree.api import AttachmentMixin
|
from InvenTree.api import AttachmentMixin, APIDownloadMixin
|
||||||
|
|
||||||
from InvenTree.status_codes import BuildStatus, PurchaseOrderStatus, SalesOrderStatus
|
from InvenTree.status_codes import BuildStatus, PurchaseOrderStatus, SalesOrderStatus
|
||||||
|
|
||||||
@ -847,7 +847,7 @@ class PartFilter(rest_filters.FilterSet):
|
|||||||
virtual = rest_filters.BooleanFilter()
|
virtual = rest_filters.BooleanFilter()
|
||||||
|
|
||||||
|
|
||||||
class PartList(generics.ListCreateAPIView):
|
class PartList(APIDownloadMixin, generics.ListCreateAPIView):
|
||||||
"""
|
"""
|
||||||
API endpoint for accessing a list of Part objects
|
API endpoint for accessing a list of Part objects
|
||||||
|
|
||||||
@ -897,6 +897,15 @@ class PartList(generics.ListCreateAPIView):
|
|||||||
|
|
||||||
return self.serializer_class(*args, **kwargs)
|
return self.serializer_class(*args, **kwargs)
|
||||||
|
|
||||||
|
def download_queryset(self, queryset, export_format):
|
||||||
|
dataset = PartResource().export(queryset=queryset)
|
||||||
|
|
||||||
|
filedata = dataset.export(export_format)
|
||||||
|
|
||||||
|
filename = f"InvenTree_Parts.{export_format}"
|
||||||
|
|
||||||
|
return DownloadFile(filedata, filename)
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
Overide the 'list' method, as the PartCategory objects are
|
Overide the 'list' method, as the PartCategory objects are
|
||||||
@ -908,22 +917,6 @@ class PartList(generics.ListCreateAPIView):
|
|||||||
|
|
||||||
queryset = self.filter_queryset(self.get_queryset())
|
queryset = self.filter_queryset(self.get_queryset())
|
||||||
|
|
||||||
# Check if we wish to export the queried data to a file.
|
|
||||||
# If so, skip pagination!
|
|
||||||
export_format = request.query_params.get('export', None)
|
|
||||||
|
|
||||||
if export_format:
|
|
||||||
export_format = str(export_format).strip().lower()
|
|
||||||
|
|
||||||
if export_format in ['csv', 'tsv', 'xls', 'xlsx']:
|
|
||||||
dataset = PartResource().export(queryset=queryset)
|
|
||||||
|
|
||||||
filedata = dataset.export(export_format)
|
|
||||||
|
|
||||||
filename = f"InvenTree_Parts.{export_format}"
|
|
||||||
|
|
||||||
return DownloadFile(filedata, filename)
|
|
||||||
|
|
||||||
page = self.paginate_queryset(queryset)
|
page = self.paginate_queryset(queryset)
|
||||||
|
|
||||||
if page is not None:
|
if page is not None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user