Add room update mutation on server
This commit is contained in:
parent
300db36d13
commit
dea1d1b253
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue