Add room update mutation on server

This commit is contained in:
Ramon Wenger 2018-09-21 13:45:51 +02:00
parent 300db36d13
commit dea1d1b253
3 changed files with 17 additions and 10 deletions

View File

@ -9,9 +9,9 @@ class RoomInput(InputObjectType):
appearance = graphene.String()
class AddRoomArgumen(RoomInput):
class AddRoomArgument(RoomInput):
pass
class ChangeRoomArgument(RoomInput):
class UpdateRoomArgument(RoomInput):
id = graphene.ID(required=True)

View File

@ -1,8 +1,10 @@
import graphene
from graphene import relay
from graphql_relay import from_global_id
from api.utils import get_object
from rooms.inputs import ChangeRoomArgument, AddRoomArgumen
from rooms.inputs import UpdateRoomArgument, AddRoomArgument
from rooms.models import Room
from rooms.schema import RoomNode
from rooms.serializers import RoomSerializer
from user.models import UserGroup
@ -17,7 +19,11 @@ class MutateRoom(relay.ClientIDMutation):
room_data = kwargs.get('room')
user_group = get_object(UserGroup, room_data.get('user_group'))
room_data['user_group'] = user_group.id
serializer = RoomSerializer(data=room_data)
if room_data.get('id') is not None:
room = get_object(Room, room_data['id'])
serializer = RoomSerializer(room, data=room_data)
else:
serializer = RoomSerializer(data=room_data)
if serializer.is_valid():
serializer.save()
return cls(room=serializer.instance, errors=None)
@ -27,14 +33,14 @@ class MutateRoom(relay.ClientIDMutation):
class AddRoom(MutateRoom):
class Input:
room = graphene.Argument(AddRoomArgumen) # NB: can't be named AddRoomInput, otherwise graphene complains
room = graphene.Argument(AddRoomArgument) # NB: can't be named AddRoomInput, otherwise graphene complains
class ChangeRoom(MutateRoom):
class UpdateRoom(MutateRoom):
class Input:
room = graphene.Argument(ChangeRoomArgument) # NB: can't be named ChangeRoomInput, otherwise graphene complains
room = graphene.Argument(UpdateRoomArgument) # NB: can't be named ChangeRoomInput, otherwise graphene complains
class RoomMutations:
change_room = ChangeRoom.Field()
update_room = UpdateRoom.Field()
add_room = AddRoom.Field()

View File

@ -4,6 +4,7 @@ from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from graphene_django.rest_framework.mutation import SerializerMutation
from api.utils import get_object
from rooms.models import Room, RoomEntry
from rooms.serializers import RoomSerializer
from user.schema import UserNode
@ -41,7 +42,7 @@ class RoomNode(DjangoObjectType):
class RoomsQuery(object):
# room = relay.Node.Field(RoomNode)
room_entry = relay.Node.Field(RoomEntryNode)
room = graphene.Field(RoomNode, slug=graphene.String(), id=graphene.Int(), appearance=graphene.String())
room = graphene.Field(RoomNode, slug=graphene.String(), id=graphene.ID(), appearance=graphene.String())
all_rooms = DjangoFilterConnectionField(RoomNode)
all_room_entries = DjangoFilterConnectionField(RoomEntryNode)
@ -51,7 +52,7 @@ class RoomsQuery(object):
room_id = kwargs.get('id')
if room_id is not None:
return Room.objects.get(pk=room_id)
return get_object(Room, room_id)
if slug is not None:
return Room.objects.get(slug=slug)
return None