mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-11-03 22:55:43 +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:
		@@ -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,
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user