Skip to content
Snippets Groups Projects
Commit 42aae181 authored by borzechof99's avatar borzechof99 :whale2:
Browse files

sportlist and single sport in different views, to be changed

parent 80ee091d
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@
Serializers creating JSONs for every Model from .models
"""
from rest_framework import serializers
from .models import Sport, Criterion, Question
from .models import Sport, Criterion, Question, CriterionRating
class SportListSerializer(serializers.ModelSerializer):
......@@ -52,3 +52,38 @@ class SmallSportListSerializer(serializers.BaseSerializer):
)
return serialized_data
class SingleSportSerializer(serializers.BaseSerializer):
def to_representation(self, sport):
serialized_data = {}
serialized_data["pk"] = sport.pk
serialized_data["name"] = sport.name
serialized_data["url"] = sport.url
criteria = []
for criterion in sport.criteria_ratings.iterator():
criterion_data = {}
criterion_data["pk"] = criterion.pk
criterion_data["name"] = criterion.name
# The iterator iterates over the Criterions connected, and not the criterion connection itself, so we need to get that one again
criterion_data["value"] = CriterionRating.objects.get(
criterion=criterion.pk, sport=sport.pk
).rating
criteria.append(criterion_data)
serialized_data["criteria"] = criteria
return serialized_data
def to_internal_value(self, request):
# Probably do some Testing and Data Verification here?
return request.data
......@@ -11,6 +11,7 @@ from .serializers import (
SportListSerializer,
CriterionListSerializer,
QuestionListSerializer,
SingleSportSerializer,
)
from .models import Sport, Criterion, Question
......@@ -56,9 +57,30 @@ class SmallSportListView(viewsets.ViewSet):
TODO: More Documentation
"""
# GET for api/admin/sport/
def list(self, request):
return Response({"test": 0})
return Response({"test": "Showing all Entries"})
# POST for api/admin/sport/
def create(self, request):
return Response({"test": "Creating a new Entry"})
# GET for api/admin/sport/<id>/
def retrieve(self, request, pk=None):
return Response({"test": "Getting a Single Entry"})
# PUT for api/admin/sport/<id>/
def update(self, request, pk=None):
return Response({"test": "Updating a Single Entry"})
# DELETE for api/admin/sport/<id>/
def destroy(self, request, pk=None):
return Response({"test": "Removing a Single Entry"})
# Dev Notes:
......@@ -75,6 +97,8 @@ class SmallSportListAPIView(APIView):
TODO: More Documentation
"""
authentication_classes = []
def get(self, request):
sports = Sport.objects.all()
......@@ -103,3 +127,52 @@ class SmallSportListAPIView(APIView):
serializer = SmallSportListSerializer(is_filled_tuples)
return Response(serializer.data)
class SingleSportAPIView(APIView):
authentication_classes = []
def get(self, request, pk):
return Response(SingleSportSerializer(Sport.objects.get(pk=pk)).data)
def put(self, request, pk):
data_dict = SingleSportSerializer().to_internal_value(request)
sport = Sport.objects.get(pk=pk)
print(data_dict)
return Response([])
class CreateSportAPIView(APIView):
authentication_classes = []
def post(self, request):
data_dict = SingleSportSerializer().to_internal_value(request)
print(data_dict)
new_sport = Sport()
new_sport.name = data_dict["name"]
new_sport.url = data_dict["url"]
# Before writing other Database Entries for Rating, the Sport needs to be saved once
new_sport.save()
for criterion in data_dict["criteria"]:
new_sport.rate(
Criterion.objects.get(pk=criterion["pk"]), criterion["value"]
)
new_sport.save()
response = SingleSportSerializer(new_sport)
return Response(response.data)
......@@ -27,5 +27,7 @@ router.register(r"small-sport-list", views.SmallSportListView, "small-sport-list
urlpatterns = [
path("admin/", admin.site.urls),
path("api/admin/", include(router.urls)),
path(r"api/admin/single-small-sport-list", views.SmallSportListAPIView.as_view()),
path("api/admin/single-small-sport-list", views.SmallSportListAPIView.as_view()),
path("api/admin/single-sport/<int:pk>", views.SingleSportAPIView.as_view()),
path("api/admin/single-sport", views.CreateSportAPIView.as_view()),
]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment