9856 user and group

This commit is contained in:
Arthur 2023-08-24 09:11:23 -07:00
parent 3f2c21f005
commit eceac90b1c
4 changed files with 42 additions and 47 deletions

View File

@ -1,18 +1,18 @@
import strawberry
from strawberry_django.optimizer import DjangoOptimizerExtension
from strawberry.schema.config import StrawberryConfig
from users.graphql.schema import UsersQuery
@strawberry.type
class User:
name: str
age: int
class Query(UsersQuery):
pass
@strawberry.type
class Query:
@strawberry.field
def user(self) -> User:
return User(name="Patrick", age=100)
schema = strawberry.Schema(query=Query)
schema = strawberry.Schema(
query=Query,
config=StrawberryConfig(auto_camel_case=False),
extensions=[
DjangoOptimizerExtension,
]
)

View File

@ -1,4 +1,5 @@
import django_filters
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from django.db.models import Q

View File

@ -1,21 +1,16 @@
import graphene
from typing import List
import strawberry
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from netbox.graphql.fields import ObjectField, ObjectListField
from .types import *
from utilities.graphql_optimizer import gql_query_optimizer
class UsersQuery(graphene.ObjectType):
group = ObjectField(GroupType)
group_list = ObjectListField(GroupType)
@strawberry.type
class UsersQuery:
group: GroupType = strawberry.django.field()
group_list: List[GroupType] = strawberry.django.field()
def resolve_group_list(root, info, **kwargs):
return gql_query_optimizer(Group.objects.all(), info)
user = ObjectField(UserType)
user_list = ObjectListField(UserType)
def resolve_user_list(root, info, **kwargs):
return gql_query_optimizer(get_user_model().objects.all(), info)
user: UserType = strawberry.django.field()
user_list: List[UserType] = strawberry.django.field()

View File

@ -1,9 +1,10 @@
import strawberry
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from graphene_django import DjangoObjectType
from strawberry import auto
from users import filtersets
from utilities.querysets import RestrictedQuerySet
from .filters import *
__all__ = (
'GroupType',
@ -11,28 +12,26 @@ __all__ = (
)
class GroupType(DjangoObjectType):
class Meta:
model = Group
fields = ('id', 'name')
filterset_class = filtersets.GroupFilterSet
@strawberry.django.type(
Group,
fields=['id', 'name'],
filters=GroupFilter
)
class GroupType:
@classmethod
def get_queryset(cls, queryset, info):
return RestrictedQuerySet(model=Group).restrict(info.context.user, 'view')
def get_queryset(cls, queryset, info, **kwargs):
return RestrictedQuerySet(model=Group).restrict(info.context.request.user, 'view')
class UserType(DjangoObjectType):
class Meta:
model = get_user_model()
fields = (
'id', 'username', 'password', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'date_joined',
'groups',
)
filterset_class = filtersets.UserFilterSet
@strawberry.django.type(
get_user_model(),
fields=[
'id', 'username', 'password', 'first_name', 'last_name', 'email', 'is_staff',
'is_active', 'date_joined', 'groups',
],
filters=UserFilter
)
class UserType:
@classmethod
def get_queryset(cls, queryset, info):
return RestrictedQuerySet(model=get_user_model()).restrict(info.context.user, 'view')
def get_queryset(cls, queryset, info, **kwargs):
return RestrictedQuerySet(model=get_user_model()).restrict(info.context.request.user, 'view')