diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e43191..72f27c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: strategy: fail-fast: false matrix: - netbox_version: &nb_versions [v4.3.7, v4.4.10, v4.5.3] + netbox_version: &nb_versions [v4.3.7, v4.4.10, v4.5.5] steps: - name: Checkout uses: actions/checkout@v3 diff --git a/validity/graphql/filters.py b/validity/graphql/filters.py index 1511e29..9a08c6a 100644 --- a/validity/graphql/filters.py +++ b/validity/graphql/filters.py @@ -10,7 +10,7 @@ from strawberry_django import FilterLookup from validity import models -from validity.netbox_changes import BaseModelFilter, NetBoxModelFilter +from validity.netbox_changes import BaseModelFilter, NetBoxModelFilter, StrFilterLookup @strawberry_django.filter_type(Job, lookups=True) @@ -20,13 +20,13 @@ class JobFilter(NetBoxModelFilter): @strawberry_django.filter_type(models.ComplianceSelector, lookups=True) class ComplianceSelectorFilter(NetBoxModelFilter): - name: FilterLookup[str] | None = strawberry_django.filter_field() + name: StrFilterLookup | None = strawberry_django.filter_field() @strawberry_django.filter_type(models.ComplianceTest, lookups=True) class ComplianceTestFilter(NetBoxModelFilter): id: FilterLookup[ID] | None = strawberry_django.filter_field() - name: FilterLookup[str] | None = strawberry_django.filter_field() + name: StrFilterLookup | None = strawberry_django.filter_field() selectors: Annotated["ComplianceSelectorFilter", strawberry.lazy("validity.graphql.filters")] | None = ( strawberry_django.filter_field() ) @@ -53,12 +53,12 @@ def latest(self, queryset: QuerySet, value: bool, prefix: str) -> tuple[QuerySet @strawberry_django.filter_type(models.Serializer, lookups=True) class SerializerFilter(NetBoxModelFilter): - name: FilterLookup[str] | None = strawberry_django.filter_field() + name: StrFilterLookup | None = strawberry_django.filter_field() @strawberry_django.filter_type(models.NameSet, lookups=True) class NameSetFilter(NetBoxModelFilter): - name: FilterLookup[str] | None = strawberry_django.filter_field() + name: StrFilterLookup | None = strawberry_django.filter_field() _global: Annotated["bool", strawberry.lazy("builtins")] | None = strawberry_django.filter_field(name="global") @@ -69,12 +69,12 @@ class ComplianceReportFilter(BaseModelFilter): @strawberry_django.filter_type(models.Poller, lookups=True) class PollerFilter(NetBoxModelFilter): - name: FilterLookup[str] | None = strawberry_django.filter_field() + name: StrFilterLookup | None = strawberry_django.filter_field() @strawberry_django.filter_type(models.Command, lookups=True) class CommandFilter(NetBoxModelFilter): - name: FilterLookup[str] | None = strawberry_django.filter_field() + name: StrFilterLookup | None = strawberry_django.filter_field() serializer: Annotated["SerializerFilter", strawberry.lazy("validity.graphql.filters")] | None = ( strawberry_django.filter_field() ) @@ -86,7 +86,7 @@ class CommandFilter(NetBoxModelFilter): @strawberry_django.filter_type(models.BackupPoint, lookups=True) class BackupPointFilter(NetBoxModelFilter): - name: FilterLookup[str] | None = strawberry_django.filter_field() + name: StrFilterLookup | None = strawberry_django.filter_field() data_source: Annotated["DataSourceFilter", strawberry.lazy("core.graphql.filters")] | None = ( strawberry_django.filter_field() ) diff --git a/validity/graphql/schema.py b/validity/graphql/schema.py index 3075b47..06d3df8 100644 --- a/validity/graphql/schema.py +++ b/validity/graphql/schema.py @@ -2,6 +2,7 @@ import strawberry import strawberry_django +from strawberry.types import Info from validity import models from .filters import NameSetFilter @@ -42,7 +43,7 @@ class Query: @strawberry.field def validity_nameset_list( self, - info, + info: Info, filters: NameSetFilter | None = None, global_filter: Annotated[bool | None, strawberry.argument(name="global")] = None, ) -> list[NameSetType]: diff --git a/validity/netbox_changes/__init__.py b/validity/netbox_changes/__init__.py index 2a8a290..37622f0 100644 --- a/validity/netbox_changes/__init__.py +++ b/validity/netbox_changes/__init__.py @@ -3,9 +3,15 @@ different versions of NetBox together """ +from pydoc import locate + +from strawberry_django import FilterLookup + from validity import config +StrFilterLookup = locate("strawberry_django.StrFilterLookup") if config.netbox_version >= "4.5.5" else FilterLookup[str] + if config.netbox_version >= "4.5.0": from .current import * elif config.netbox_version >= "4.4.0": diff --git a/validity/views/report.py b/validity/views/report.py index bcb306f..9cb5b14 100644 --- a/validity/views/report.py +++ b/validity/views/report.py @@ -8,7 +8,7 @@ from netbox.views import generic from utilities.views import ViewTab, register_model_view -from validity import filtersets, forms, models, tables +from validity import config, filtersets, forms, models, tables from validity.choices import DeviceGroupByChoices, SeverityChoices from .base import FilterViewWithForm, ObjectPermissionRequiredMixin, TestResultBaseView @@ -103,7 +103,7 @@ def get_table(self, **kwargs): return table def get_table_kwargs(self): - return {"user": self.request.user} + return {"user": self.request.user} if config.netbox_version < "4.5.4" else {} def get_context_data(self, **kwargs: Any) -> dict[str, Any]: return super().get_context_data(**kwargs) | {