diff --git a/aleksis/core/schema.py b/aleksis/core/schema.py index 044da9120193ba694aa1d5034baafcbfb872fa17..da4b089dcd3352533d47c8a0a614de7f59c9358a 100644 --- a/aleksis/core/schema.py +++ b/aleksis/core/schema.py @@ -3,8 +3,13 @@ from graphene_django import DjangoObjectType from graphene_django.forms.mutation import DjangoModelFormMutation from .forms import PersonForm -from .models import Person -from .util.core_helpers import get_app_module, get_app_packages +from .models import Notification, Person +from .util.core_helpers import get_app_module, get_app_packages, has_person + + +class NotificationType(DjangoObjectType): + class Meta: + model = Notification class PersonType(DjangoObjectType): @@ -22,8 +27,15 @@ class PersonMutation(DjangoModelFormMutation): class Query(graphene.ObjectType): ping = graphene.String(default_value="pong") + notifications = graphene.List(NotificationType) + persons = graphene.List(PersonType) person_by_id = graphene.Field(PersonType, id=graphene.ID()) + who_am_i = graphene.Field(PersonType) + + def resolve_notifications(root, info, **kwargs): + # FIXME do permission stuff + return Notification.objects.all() def resolve_persons(root, info, **kwargs): # FIXME do permission stuff @@ -32,6 +44,12 @@ class Query(graphene.ObjectType): def resolve_person_by_id(root, info, id): return Person.objects.get(pk=id) + def resolve_who_am_i(root, info, **kwargs): + if has_person(info.context.user): + return info.context.user.person + else: + return None + class Mutation(graphene.ObjectType): update_person = PersonMutation.Field()