2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-08-10 05:40:55 +00:00

Enable regex search (#4566)

* Adds custom search filter to allow 'regex' searching of results

* Specify if "shell" can access database for certain commands

* Bug fix for settings API

- Do not allow cache on detail endpoints
- Was causing strange error conditions with missing or duplicate PK values

* Adds user setting to control regex search

* Enable regex for search queries

- bootstrap tables
- search preview

* Pass search options through bettererer

* Refactor API endpoints to use new filter approach

* Bump API version

* Add "whole word" search

- Closes https://github.com/inventree/InvenTree/issues/4510

* Handle case where existing fields are empty

* pop > get
This commit is contained in:
Oliver
2023-04-04 07:05:55 +10:00
committed by GitHub
parent eef303dfea
commit d6715d94c1
19 changed files with 165 additions and 72 deletions

View File

@@ -17,7 +17,7 @@ import order.models
from build.models import Build, BuildItem
from InvenTree.api import (APIDownloadMixin, AttachmentMixin,
ListCreateDestroyAPIView, MetadataView)
from InvenTree.filters import InvenTreeOrderingFilter
from InvenTree.filters import InvenTreeOrderingFilter, InvenTreeSearchFilter
from InvenTree.helpers import (DownloadFile, increment_serial_number, isNull,
str2bool, str2int)
from InvenTree.mixins import (CreateAPI, CustomRetrieveUpdateDestroyAPI,
@@ -154,7 +154,7 @@ class CategoryList(CategoryMixin, APIDownloadMixin, ListCreateAPI):
filter_backends = [
DjangoFilterBackend,
filters.SearchFilter,
InvenTreeSearchFilter,
filters.OrderingFilter,
]
@@ -387,7 +387,7 @@ class PartTestTemplateList(ListCreateAPI):
filter_backends = [
DjangoFilterBackend,
filters.OrderingFilter,
filters.SearchFilter,
InvenTreeSearchFilter,
]
@@ -421,7 +421,7 @@ class PartThumbs(ListAPI):
return Response(data)
filter_backends = [
filters.SearchFilter,
InvenTreeSearchFilter,
]
search_fields = [
@@ -1226,7 +1226,7 @@ class PartList(PartMixin, APIDownloadMixin, ListCreateAPI):
filter_backends = [
DjangoFilterBackend,
filters.SearchFilter,
InvenTreeSearchFilter,
InvenTreeOrderingFilter,
]
@@ -1340,7 +1340,7 @@ class PartParameterTemplateList(ListCreateAPI):
filter_backends = [
DjangoFilterBackend,
filters.OrderingFilter,
filters.SearchFilter,
InvenTreeSearchFilter,
]
filterset_fields = [
@@ -1733,7 +1733,7 @@ class BomList(BomMixin, ListCreateDestroyAPIView):
filter_backends = [
DjangoFilterBackend,
filters.SearchFilter,
InvenTreeSearchFilter,
InvenTreeOrderingFilter,
]
@@ -1838,7 +1838,7 @@ class BomItemSubstituteList(ListCreateAPI):
filter_backends = [
DjangoFilterBackend,
filters.SearchFilter,
InvenTreeSearchFilter,
filters.OrderingFilter,
]

View File

@@ -328,13 +328,14 @@ def setting_object(key, *args, **kwargs):
return PluginSetting.get_setting_object(key, plugin=plugin, cache=cache)
if 'method' in kwargs:
elif 'method' in kwargs:
return NotificationUserSetting.get_setting_object(key, user=kwargs['user'], method=kwargs['method'], cache=cache)
if 'user' in kwargs:
elif 'user' in kwargs:
return InvenTreeUserSetting.get_setting_object(key, user=kwargs['user'], cache=cache)
return InvenTreeSetting.get_setting_object(key, cache=cache)
else:
return InvenTreeSetting.get_setting_object(key, cache=cache)
@register.simple_tag()