2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-12-16 01:08:12 +00:00

Refactor mixin to avoid specifying model type manually

This commit is contained in:
Oliver Walters
2025-11-26 01:43:42 +00:00
parent 2ce0e42978
commit 8349775af3
7 changed files with 9 additions and 15 deletions

View File

@@ -603,8 +603,6 @@ class BulkUpdateMixin(BulkOperationMixin):
class ParameterListMixin:
"""Mixin class which supports filtering against parametric fields."""
parameter_model_class = None
def filter_queryset(self, queryset):
"""Perform filtering against parametric fields."""
import common.filters
@@ -616,11 +614,15 @@ class ParameterListMixin:
queryset, self.request.query_params
)
serializer_class = (
getattr(self, 'serializer_class', None) or self.get_serializer_class()
)
model_class = serializer_class.Meta.model
# Apply ordering based on query parameter
queryset = common.filters.order_by_parameter(
queryset,
self.parameter_model_class,
self.request.query_params.get('ordering', None),
queryset, model_class, self.request.query_params.get('ordering', None)
)
return queryset

View File

@@ -349,7 +349,6 @@ class BuildList(
- POST: Create a new Build object
"""
parameter_model_class = Build
output_options = BuildListOutputOptions
filterset_class = BuildFilter
filter_backends = SEARCH_ORDER_FILTER_ALIAS

View File

@@ -2442,7 +2442,7 @@ class ParameterTemplate(
choice_set.add(choice)
def validate_unique(self, exclude=None):
"""Ensure that PartParameterTemplates cannot be created with the same name.
"""Ensure that ParameterTemplates cannot be created with the same name.
This test should be case-insensitive (which the unique caveat does not cover).
"""

View File

@@ -60,7 +60,6 @@ class CompanyList(CompanyMixin, ParameterListMixin, DataExportViewMixin, ListCre
- POST: Create a new Company object
"""
parameter_model_class = Company
filter_backends = SEARCH_ORDER_FILTER
filterset_fields = [
@@ -201,7 +200,6 @@ class ManufacturerPartList(
- POST: Create a new ManufacturerPart object
"""
parameter_model_class = ManufacturerPart
filterset_class = ManufacturerPartFilter
filter_backends = SEARCH_ORDER_FILTER
output_options = ManufacturerOutputOptions
@@ -352,7 +350,6 @@ class SupplierPartList(
- POST: Create a new SupplierPart object
"""
parameter_model_class = SupplierPart
filterset_class = SupplierPartFilter
filter_backends = SEARCH_ORDER_FILTER_ALIAS
output_options = SupplierPartOutputOptions

View File

@@ -392,7 +392,6 @@ class PurchaseOrderList(
- POST: Create a new PurchaseOrder object
"""
parameter_model_class = models.PurchaseOrder
filterset_class = PurchaseOrderFilter
filter_backends = SEARCH_ORDER_FILTER_ALIAS
output_options = PurchaseOrderOutputOptions
@@ -863,7 +862,6 @@ class SalesOrderList(
- POST: Create a new SalesOrder
"""
parameter_model_class = models.SalesOrder
filterset_class = SalesOrderFilter
filter_backends = SEARCH_ORDER_FILTER_ALIAS
output_options = SalesOrderOutputOptions
@@ -1537,7 +1535,6 @@ class ReturnOrderList(
):
"""API endpoint for accessing a list of ReturnOrder objects."""
parameter_model_class = models.ReturnOrder
filterset_class = ReturnOrderFilter
filter_backends = SEARCH_ORDER_FILTER_ALIAS

View File

@@ -1076,7 +1076,6 @@ class PartList(
):
"""API endpoint for accessing a list of Part objects, or creating a new Part instance."""
parameter_model_class = Part
output_options = PartOutputOptions
filterset_class = PartFilter
is_create = True

View File

@@ -40,7 +40,7 @@ RULESET_NAMES = [choice[0] for choice in RULESET_CHOICES]
# Permission types available for each ruleset.
RULESET_PERMISSIONS = ['view', 'add', 'change', 'delete']
RULESET_CHANGE_INHERIT = [('part', 'partparameter'), ('part', 'bomitem')]
RULESET_CHANGE_INHERIT = [('part', 'bomitem')]
def get_ruleset_models() -> dict: