Exemplo n.º 1
0
    def create(self, request, *args, **kwargs):
        room_id = request.data['room']
        password = request.data['password']

        room = Room.objects.filter(id=room_id).first()
        user = self.request.user

        if (user.username == room.owner.username):
            return Response(
                {"non_field_errors": ['You can not join a room you own.']},
                status=status.HTTP_400_BAD_REQUEST)

        if not room or not room.check_password(password):
            return Response(
                {
                    "non_field_errors":
                    ['Unable to join room with provided credentials.']
                },
                status=status.HTTP_400_BAD_REQUEST)

        serializer = self.serializer_class(data={
            'room': room.id,
            'user': user.id
        })

        if serializer.is_valid():
            serializer.save()
            room_serializer = RoomSerializer(room)

            return Response(room_serializer.data,
                            status=status.HTTP_201_CREATED)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 2
0
 def favs(self, request, pk):
     user = self.get_object()
     serializer = RoomSerializer(user.favs.all(),
                                 many=True,
                                 context={
                                     "request": request
                                 }).data
     return Response(serializer)
Exemplo n.º 3
0
 def toggle_favs(self, request, pk):
     user = self.get_object()
     serializer = RoomSerializer(user)
     id = request.data.get("id", None)
     if id is not None:
         try:
             room = Room.objects.get(pk=id)
             if room in user.favs.all():
                 user.favs.remove(room)
             else:
                 user.favs.add(room)
             return Response(
                 data=RoomSerializer(user.favs.all(), many=True).data)
         except Room.DoesNotExist:
             return Response(status=status.HTTP_400_BAD_REQUEST)
     else:
         return Response(status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 4
0
class EventSerializer(serializers.ModelSerializer):
    group = GroupSerializer(many=True)
    starting_time = serializers.DateTimeField(source='timeslot.starting_time')
    ending_time = serializers.DateTimeField(source='timeslot.ending_time')
    class_info = ClassEventSerializer(source='current_class')
    room = RoomSerializer()

    class Meta:
        model = Event
        fields = ("id", "class_info", "room", "group", "starting_time", "ending_time", "date")
Exemplo n.º 5
0
    def toggle_favs(self, request, pk):
        room_pk = request.data.get("pk", None)

        if room_pk is None:
            return Response(status=status.HTTP_400_BAD_REQUEST)

        try:
            room = Room.objects.get(pk=room_pk)
            if request.user.favs.filter(pk=room_pk).exists():
                request.user.favs.remove(room)
            else:
                request.user.favs.add(room)
            return Response(RoomSerializer(room).data)
        except Room.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)
Exemplo n.º 6
0
 def toggle_favs(self, request, pk):
     pk = request.data.get("pk", None)
     user = self.get_object()
     if pk is not None:
         try:
             room = Room.objects.get(pk=pk)
             if room in user.favs.all():
                 user.favs.remove(room)
             else:
                 user.favs.add(room)
             serializer = RoomSerializer(user.favs.all(), many=True)
             return Response(serializer.data)
         except Room.DoesNotExist:
             pass
     return Response(status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 7
0
 def put(self, request):
     uuid = request.data.get("uuid", None)
     user = request.user
     if uuid is not None:
         try:
             room = Room.objects.get(uuid=uuid)
             if room in user.favs.all():
                 user.favs.remove(room)
             else:
                 user.favs.add(room)
             serializer = RoomSerializer(user.favs.all(), many=True).data
             return Response(data=serializer, status=status.HTTP_200_OK)
         except Room.DoesNotExist:
             pass
     return Response(status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 8
0
 def put(self, request):
     pk = request.data.get("pk", None)
     user = request.user
     if pk is not None:
         try:
             room = Room.objects.get(pk=pk)
             if room in user.favs.all():
                 user.favs.remove(room)
             else:
                 user.favs.add(room)
             serializer = RoomSerializer(user.favs.all(), many=True).data
             return Response(serializer)
         except Room.DoesNotExist:
             return Response(status=status.HTTP_404_NOT_FOUND)
     else:
         return Response(status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 9
0
def room_list(request):
    """
    List all code rooms, or create a new room.
    """
    if request.method == 'GET':
        rooms = Room.objects.all()
        serializer = RoomSerializer(rooms, many=True)
        return Response(serializer.data)

    elif request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = RoomSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 10
0
def room_detail(request, pk):
    """
    Retrieve, update or delete a code room.
    """
    try:
        room = Room.objects.get(pk=pk)
    except Room.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer = RoomSerializer(room)
        return Response(serializer.data)

    elif request.method == 'PUT':
        data = JSONParser().parse(request)
        serializer = RoomSerializer(room, data=data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        room.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 11
0
 def get(self, request):
     user = request.user
     serializer = RoomSerializer(user.favs.all(), many=True).data
     return Response(serializer)
Exemplo n.º 12
0
 def get(self, request):
     user = request.user
     serializer = RoomSerializer(user.favs.all(), many=True).data
     return Response(data=serializer, status=status.HTTP_200_OK)
Exemplo n.º 13
0
 def rooms(self, request, uuid):
     user = self.get_object()
     serializer = RoomSerializer(
         user.rooms.all(), many=True, context={"request": request}
     ).data
     return Response(data=serializer, status=status.HTTP_200_OK)
Exemplo n.º 14
0
 def retrieve(self, request, pk=None):
     queryset = Room.objects.all()
     room = get_object_or_404(queryset, pk=pk)
     serializer = RoomSerializer(room)
     return Response(serializer.data)
Exemplo n.º 15
0
 def favs(self, request, pk):
     # user 정보를 viewset안에 내장되어 있는 get_object 함수로 가져온다
     user = self.get_object()
     # user의 favs의 전부를 가져온다
     serializer = RoomSerializer(user.favs.all(), many=True).data
     return Response(serializer)
Exemplo n.º 16
0
 def favs(self, request, pk):  # detail=True일때 pk 받아줘야 함!
     # user = request.user
     user = self.get_object()  # 로그아웃 상태에서도 favs 볼 수 있게
     serializer = RoomSerializer(user.favs.all(), many=True).data
     return Response(serializer)
Exemplo n.º 17
0
 def favs(self, request, pk):
     user = self.get_object()  # self.get_object() :
     # pk 값으로 해당하는 query 를 찾고 다음
     # permission 에 해당하는 action 을 찾고 그 행동을취해줌
     serializer = RoomSerializer(user.favs.all(), many=True)
     return Response(serializer.data)
Exemplo n.º 18
0
 def destroy(self, request, *args, **kwargs):
     instance = self.get_object()
     data = RoomSerializer(instance).data
     instance.delete()
     return Response(data, status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 19
0
 def create(self, request, *args, **kwargs):
     serializer = RoomSerializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     self.perform_create(serializer)
     return Response(serializer.data, status=status.HTTP_201_CREATED)
Exemplo n.º 20
0
 def favs(self, request, pk):
     user = self.get_object()
     serializer = RoomSerializer(user.favs.all(), many=True)
     return Response(data=serializer.data)
Exemplo n.º 21
0
 def favs(self, request, pk):
     user = self.get_object()
     serializer = RoomSerializer(user.favs.all(),
                                 many=True,
                                 context={"request": request})
     return Response(serializer.data, status=status.HTTP_200_OK)