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()
|
appearance = graphene.String()
|
||||||
|
|
||||||
|
|
||||||
class AddRoomArgumen(RoomInput):
|
class AddRoomArgument(RoomInput):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ChangeRoomArgument(RoomInput):
|
class UpdateRoomArgument(RoomInput):
|
||||||
id = graphene.ID(required=True)
|
id = graphene.ID(required=True)
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
import graphene
|
import graphene
|
||||||
from graphene import relay
|
from graphene import relay
|
||||||
|
from graphql_relay import from_global_id
|
||||||
|
|
||||||
from api.utils import get_object
|
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.schema import RoomNode
|
||||||
from rooms.serializers import RoomSerializer
|
from rooms.serializers import RoomSerializer
|
||||||
from user.models import UserGroup
|
from user.models import UserGroup
|
||||||
|
|
@ -17,7 +19,11 @@ class MutateRoom(relay.ClientIDMutation):
|
||||||
room_data = kwargs.get('room')
|
room_data = kwargs.get('room')
|
||||||
user_group = get_object(UserGroup, room_data.get('user_group'))
|
user_group = get_object(UserGroup, room_data.get('user_group'))
|
||||||
room_data['user_group'] = user_group.id
|
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():
|
if serializer.is_valid():
|
||||||
serializer.save()
|
serializer.save()
|
||||||
return cls(room=serializer.instance, errors=None)
|
return cls(room=serializer.instance, errors=None)
|
||||||
|
|
@ -27,14 +33,14 @@ class MutateRoom(relay.ClientIDMutation):
|
||||||
|
|
||||||
class AddRoom(MutateRoom):
|
class AddRoom(MutateRoom):
|
||||||
class Input:
|
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:
|
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:
|
class RoomMutations:
|
||||||
change_room = ChangeRoom.Field()
|
update_room = UpdateRoom.Field()
|
||||||
add_room = AddRoom.Field()
|
add_room = AddRoom.Field()
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ from graphene_django import DjangoObjectType
|
||||||
from graphene_django.filter import DjangoFilterConnectionField
|
from graphene_django.filter import DjangoFilterConnectionField
|
||||||
from graphene_django.rest_framework.mutation import SerializerMutation
|
from graphene_django.rest_framework.mutation import SerializerMutation
|
||||||
|
|
||||||
|
from api.utils import get_object
|
||||||
from rooms.models import Room, RoomEntry
|
from rooms.models import Room, RoomEntry
|
||||||
from rooms.serializers import RoomSerializer
|
from rooms.serializers import RoomSerializer
|
||||||
from user.schema import UserNode
|
from user.schema import UserNode
|
||||||
|
|
@ -41,7 +42,7 @@ class RoomNode(DjangoObjectType):
|
||||||
class RoomsQuery(object):
|
class RoomsQuery(object):
|
||||||
# room = relay.Node.Field(RoomNode)
|
# room = relay.Node.Field(RoomNode)
|
||||||
room_entry = relay.Node.Field(RoomEntryNode)
|
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_rooms = DjangoFilterConnectionField(RoomNode)
|
||||||
all_room_entries = DjangoFilterConnectionField(RoomEntryNode)
|
all_room_entries = DjangoFilterConnectionField(RoomEntryNode)
|
||||||
|
|
@ -51,7 +52,7 @@ class RoomsQuery(object):
|
||||||
room_id = kwargs.get('id')
|
room_id = kwargs.get('id')
|
||||||
|
|
||||||
if room_id is not None:
|
if room_id is not None:
|
||||||
return Room.objects.get(pk=room_id)
|
return get_object(Room, room_id)
|
||||||
if slug is not None:
|
if slug is not None:
|
||||||
return Room.objects.get(slug=slug)
|
return Room.objects.get(slug=slug)
|
||||||
return None
|
return None
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue