mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -06:00
9856 first filterset
This commit is contained in:
parent
a36cc0abb6
commit
8aca8f84b4
45
netbox/netbox/graphql/filter_mixins.py
Normal file
45
netbox/netbox/graphql/filter_mixins.py
Normal 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')
|
48
netbox/tenancy/graphql/filter_mixins.py
Normal file
48
netbox/tenancy/graphql/filter_mixins.py
Normal 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')
|
Loading…
Reference in New Issue
Block a user