Add room mutation

This commit is contained in:
Ramon Wenger 2018-09-17 11:35:49 +02:00
parent e94c7c5e8a
commit fe59a65e87
6 changed files with 50 additions and 13 deletions

View File

@ -23,6 +23,7 @@ raven = "==6.9.0"
django-extensions = "==1.9.8"
graphene-django = "==2.2.0"
django-filter = "==2.0.0"
djangorestframework = "==3.8.2"
pillow = "==5.0.0"
wagtail = "==2.2.2"
django-cors-headers = "==2.2.0"

4
Pipfile.lock generated
View File

@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "22744fc51ea36160ffcfa7253af7639a5290f7fd6f0a28a07752bd2904e8b39f"
"sha256": "2341eacc0bfdcc8c231c5ebf696c89360052a264240118f3b509c927aeaf611b"
},
"pipfile-spec": 6,
"requires": {
@ -168,7 +168,7 @@
"sha256:b6714c3e4b0f8d524f193c91ecf5f5450092c2145439ac2769711f7eba89a9d9",
"sha256:c375e4f95a3a64fccac412e36fb42ba36881e52313ec021ef410b40f67cddca4"
],
"markers": "python_version >= '2.7' and python_version != '3.3.*' and python_version != '3.2.*' and python_version != '3.1.*' and python_version != '3.0.*'",
"index": "pypi",
"version": "==3.8.2"
},
"docutils": {

View File

@ -0,0 +1,25 @@
mutation AddRoomMutation($input: RoomMutationInput!) {
room(input: $input) {
id,
title,
slug,
title,
description,
appearance,
clientMutationId,
errors {
field
messages
}
}
}
#{
# "input": {
# "title": "Neuer Raum",
# "description": "So eine Beschreibung",
# "userGroup": 4
#}
#}

View File

@ -9,7 +9,7 @@ from api import graphene_wagtail
from book.schema.mutations import BookMutations
from filteredbook.schema import BookQuery
from objectives.schema import ObjectivesQuery
from rooms.schema import RoomsQuery
from rooms.schema import RoomsQuery, RoomMutations
from user.schema import UsersQuery
@ -20,7 +20,7 @@ class Query(UsersQuery, RoomsQuery, ObjectivesQuery, BookQuery, graphene.ObjectT
debug = graphene.Field(DjangoDebug, name='__debug')
class Mutation(graphene.ObjectType, BookMutations):
class Mutation(BookMutations, RoomMutations, graphene.ObjectType):
if settings.DEBUG:
debug = graphene.Field(DjangoDebug, name='__debug')

View File

@ -2,8 +2,10 @@ import graphene
from graphene import relay
from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from graphene_django.rest_framework.mutation import SerializerMutation
from rooms.models import Room, RoomEntry
from rooms.serializers import RoomSerializer
from user.schema import UserNode
@ -37,18 +39,17 @@ class RoomNode(DjangoObjectType):
class RoomsQuery(object):
room = graphene.Field(RoomNode, slug=graphene.String(), id=graphene.Int(), appearance=graphene.String())
room = relay.Node.Field(RoomNode)
room_entry = relay.Node.Field(RoomEntryNode)
all_rooms = DjangoFilterConnectionField(RoomNode)
all_room_entries = DjangoFilterConnectionField(RoomEntryNode)
def resolve_room(self, info, **kwargs):
slug = kwargs.get('slug')
room_id = kwargs.get('id')
if room_id is not None:
return Room.objects.get(pk=room_id)
if slug is not None:
return Room.objects.get(slug=slug)
return None
class RoomMutation(SerializerMutation):
class Meta:
serializer_class = RoomSerializer
class RoomMutations:
room = RoomMutation.Field()

View File

@ -0,0 +1,10 @@
from rest_framework import serializers
from rooms.models import Room
class RoomSerializer(serializers.ModelSerializer):
class Meta:
model = Room
fields = ('id', 'title', 'description', 'slug', 'user_group', 'appearance', )
read_only_fields = ('id', 'slug', )