2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-17 12:35:46 +00:00

Adds filter to purchase order for "assigned to me"

This commit is contained in:
Oliver
2021-12-04 21:15:38 +11:00
parent ab80980b5a
commit 087ac0bd34
3 changed files with 67 additions and 5 deletions

View File

@ -8,6 +8,9 @@ from __future__ import unicode_literals
from django.conf.urls import url, include
from django.db.models import Q, F
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from django_filters import rest_framework as rest_filters
from rest_framework import generics
from rest_framework import filters, status
@ -22,8 +25,38 @@ from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus
import order.models as models
import order.serializers as serializers
from part.models import Part
from users.models import Owner
class POFilter(rest_filters.FilterSet):
"""
Custom API filters for the POList endpoint
"""
assigned_to_me = rest_filters.BooleanFilter(label='assigned_to_me', method='filter_assigned_to_me')
def filter_assigned_to_me(self, queryset, name, value):
"""
Filter by orders which are assigned to the current user
"""
value = str2bool(value)
# Work out who "me" is!
owners = Owner.get_owners_matching_user(self.request.user)
if value:
queryset = queryset.filter(responsible__in=owners)
else:
queryset = queryset.exclude(responsible__in=owners)
return queryset
class Meta:
fields = [
'supplier',
]
class POList(generics.ListCreateAPIView):
@ -35,6 +68,7 @@ class POList(generics.ListCreateAPIView):
queryset = models.PurchaseOrder.objects.all()
serializer_class = serializers.POSerializer
filterset_class = POFilter
def create(self, request, *args, **kwargs):
"""
@ -150,10 +184,6 @@ class POList(generics.ListCreateAPIView):
'reference': ['reference_int', 'reference'],
}
filter_fields = [
'supplier',
]
search_fields = [
'reference',
'supplier__name',