9856 first filterset

This commit is contained in:
Arthur 2024-03-12 10:01:34 -07:00
parent a36cc0abb6
commit 8aca8f84b4
2 changed files with 93 additions and 0 deletions

View File

@ -0,0 +1,45 @@
from typing import List
import strawberry
import strawberry_django
from strawberry import auto
@strawberry.input
class BaseFilterMixin:
id: auto
def filter_by_filterset(self, queryset, key):
return self.filterset(data={key: getattr(self, key)}, queryset=queryset).qs
@strawberry.input
class ChangeLoggedModelFilterMixin(BaseFilterMixin):
created: auto
last_updated: auto
created_by_request: str | None
updated_by_request: str | None
modified_by_request: str | None
def filter_created_by_request(self, queryset):
return self.filter_by_filterset(queryset, 'created_by_request')
def filter_updated_by_request(self, queryset):
return self.filter_by_filterset(queryset, 'updated_by_request')
def filter_modified_by_request(self, queryset):
return self.filter_by_filterset(queryset, 'modified_by_request')
@strawberry.input
class NetBoxModelFilterMixin(ChangeLoggedModelFilterMixin):
q: str | None
tag: List[str] | None
def filter_q(self, queryset):
# return self.search(queryset, None, self.q)
return self.filter_by_filterset(queryset, 'q')
def filter_tag(self, queryset, info):
# return self.filterset(data={'tag': self.tag}, queryset=queryset).qs
# return self.filterset(data={'tag': getattr(self, 'tag')}, queryset=queryset).qs
return self.filter_by_filterset(queryset, 'tag')

View File

@ -0,0 +1,48 @@
from typing import List
import strawberry
import strawberry_django
from strawberry import auto
from netbox.graphql.filter_mixins import BaseFilterMixin
__all__ = (
'ContactModelFilterMixin',
'TenancyFilterMixin',
)
@strawberry.input
class TenancyFilterMixin(BaseFilterMixin):
created: auto
last_updated: auto
created_by_request: str | None
updated_by_request: str | None
modified_by_request: str | None
def filter_created_by_request(self, queryset):
return self.filter_by_filterset(queryset, 'created_by_request')
def filter_updated_by_request(self, queryset):
return self.filter_by_filterset(queryset, 'updated_by_request')
def filter_modified_by_request(self, queryset):
return self.filter_by_filterset(queryset, 'modified_by_request')
@strawberry.input
class ContactModelFilterMixin(BaseFilterMixin):
tenant_group_id: List[str] | None
tenant_group: List[str] | None
tenant_id: List[str] | None
tenant: List[str] | None
def filter_tenant_group_id(self, queryset):
return self.filter_by_filterset(queryset, 'tenant_group_id')
def filter_tenant_group(self, queryset):
return self.filter_by_filterset(queryset, 'tenant_group')
def filter_tenant_id(self, queryset):
return self.filter_by_filterset(queryset, 'tenant_id')
def filter_tenant(self, queryset):
return self.filter_by_filterset(queryset, 'tenant')