This repository has been archived on 2026-10-10. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
LevelUp-API/levelupapi/views/events.py
T
2022-02-09 15:56:52 -06:00

66 lines
2.4 KiB
Python

from django.http import HttpResponseServerError
from rest_framework.viewsets import ViewSet
from rest_framework.response import Response
from rest_framework import serializers, status
from levelupapi.models import Event
class EventView(ViewSet):
"""Level up event types view"""
def retrieve(self, request, pk):
"""Handle GET requests for single event type
Returns:
Response -- JSON serialized event type
"""
try:
game_type = Event.objects.get(pk=pk)
serializer = EventSerializer(game_type)
return Response(serializer.data)
except Event.DoesNotExist as ex:
return Response({'message': ex.args[0]}, status=status.HTTP_404_NOT_FOUND)
def list(self, request):
"""Handle GET requests to get all event types
Returns:
Response -- JSON serialized list of event types
"""
events = Event.objects.all()
# Add in the next 3 lines
game = request.query_params.get('game_id', None)
if game is not None:
events = events.filter(game_id=game)
serializer = EventSerializer(events, many=True)
return Response(serializer.data)
# confused as to why I'm getting a 500 error on this. An article seems to indicate that I may need to nest more of my data inside another JSON object, if for example, it has foreign keys with additional data. https://stackoverflow.com/questions/60279456/django-postman-error-this-field-is-required
def create(self, request):
"""Handle POST operations
Returns
Response -- JSON serialized game instance
"""
event = Event.objects.get(user=request.auth.user)
event_type = Event.objects.get(pk=request.data["description"])
event = Event.objects.create(
description=request.data["description"],
date=request.data["date"],
time=request.data["time"],
game_id=request.data["game_id"],
organizer_id=request.data["organizer_id"]
)
serializer = EventSerializer(event)
return Response(serializer.data)
class EventSerializer(serializers.ModelSerializer):
"""JSON serializer for event types
"""
class Meta:
model = Event
fields = ('id', 'description', 'date', 'time', 'game_id', 'organizer_id')
depth = 2