mirror of
https://github.com/netbox-community/netbox.git
synced 2026-02-06 07:16:25 -06:00
Address PR feedback: Replace global filterset mappings with registry
This commit is contained in:
@@ -2,3 +2,22 @@ from .constants import *
|
||||
from .forms import *
|
||||
from .mixins import *
|
||||
from .utils import *
|
||||
|
||||
|
||||
def register_filterset(filterset_class):
|
||||
"""
|
||||
Decorator for registering a FilterForm -> FilterSet mapping.
|
||||
|
||||
Usage:
|
||||
@register_filterset(DeviceFilterSet)
|
||||
class DeviceFilterForm(NetBoxModelFilterSetForm):
|
||||
...
|
||||
|
||||
Args:
|
||||
filterset_class: The corresponding filterset class
|
||||
"""
|
||||
def decorator(form_class):
|
||||
from netbox.registry import registry
|
||||
registry['filtersets'][form_class] = filterset_class
|
||||
return form_class
|
||||
return decorator
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
# Mapping of filter form classes to their corresponding FilterSet classes
|
||||
# This enables the FilterModifierMixin to verify which lookups are actually supported
|
||||
# by checking the FilterSet's auto-generated lookup filters.
|
||||
#
|
||||
# Usage:
|
||||
# from utilities.forms.filterset_mappings import FILTERSET_MAPPINGS
|
||||
# from .forms.filtersets import XFilterForm
|
||||
# from .filtersets import XFilterSet
|
||||
# FILTERSET_MAPPINGS[XFilterForm] = XFilterSet
|
||||
|
||||
FILTERSET_MAPPINGS = {}
|
||||
@@ -172,10 +172,10 @@ class FilterModifierMixin:
|
||||
def _enhance_fields_with_modifiers(self):
|
||||
"""Wrap compatible field widgets with FilterModifierWidget."""
|
||||
from utilities.forms.widgets import FilterModifierWidget
|
||||
from utilities.forms.filterset_mappings import FILTERSET_MAPPINGS
|
||||
from netbox.registry import registry
|
||||
|
||||
# Get the corresponding FilterSet if registered
|
||||
filterset_class = FILTERSET_MAPPINGS.get(self.__class__)
|
||||
filterset_class = registry['filtersets'].get(self.__class__)
|
||||
filterset = filterset_class() if filterset_class else None
|
||||
|
||||
for field_name, field in self.fields.items():
|
||||
|
||||
Reference in New Issue
Block a user