2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-07-02 03:30:54 +00:00

Wrap custom filter validation in try/except blocks

This commit is contained in:
Oliver Walters
2021-02-10 20:40:15 +11:00
parent 9385447761
commit 2fa7c8706b
5 changed files with 62 additions and 23 deletions

View File

@ -3,6 +3,7 @@ from __future__ import unicode_literals
from django.utils.translation import ugettext as _
from django.conf.urls import url, include
from django.core.exceptions import FieldError
from django.http import HttpResponse
from django_filters.rest_framework import DjangoFilterBackend
@ -114,12 +115,19 @@ class StockItemTestReportList(ReportListView, StockItemReportMixin):
matches = True
# Filter string defined for the report object
filters = InvenTree.helpers.validateFilterString(report.filters)
try:
filters = InvenTree.helpers.validateFilterString(report.filters)
except:
continue
for item in items:
item_query = StockItem.objects.filter(pk=item.pk)
if not item_query.filter(**filters).exists():
try:
if not item_query.filter(**filters).exists():
matches = False
break
except FieldError:
matches = False
break

View File

@ -13,6 +13,7 @@ import datetime
from django.db import models
from django.conf import settings
from django.core.exceptions import ValidationError, FieldError
from django.template.loader import render_to_string
@ -262,9 +263,11 @@ class TestReport(ReportTemplateBase):
Test if this report template matches a given StockItem objects
"""
filters = validateFilterString(self.filters)
items = stock.models.StockItem.objects.filter(**filters)
try:
filters = validateFilterString(self.filters)
items = stock.models.StockItem.objects.filter(**filters)
except (ValidationError, FieldError):
return False
# Ensure the provided StockItem object matches the filters
items = items.filter(pk=item.pk)