Ver código fonte

9856 first filterset

Arthur 1 ano atrás
pai
commit
8aca8f84b4

+ 45 - 0
netbox/netbox/graphql/filter_mixins.py

@@ -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 - 0
netbox/tenancy/graphql/filter_mixins.py

@@ -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')