Skip to content
Snippets Groups Projects
Commit 8c24c82f authored by NikolaiDokken's avatar NikolaiDokken
Browse files

post challenge backend

parent 7bf115db
No related branches found
No related tags found
1 merge request!3Feat/create challenge
# Generated by Django 3.1 on 2022-03-13 16:47
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('challenges', '0002_auto_20220312_1532'),
]
operations = [
migrations.RemoveField(
model_name='challenge',
name='groups',
),
migrations.RemoveField(
model_name='challengecompleted',
name='group',
),
]
......@@ -11,16 +11,15 @@ class Challenge(models.Model):
Attributes:
coach: Who coaches the group
name: Name of group
title: Name of group
athletes All athletes that are assigned to challenge
"""
title = models.CharField(max_length=24, default="Challenge")
coach = models.ForeignKey(
get_user_model(), on_delete=models.CASCADE, related_name="+")
athletes = models.ManyToManyField(get_user_model(), through="ChallengeCompleted", related_name="+")
groups = models.ManyToManyField(Group, through="ChallengeCompleted")
class ChallengeCompleted(models.Model):
completed = models.BooleanField(default=False)
athlete = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
challenge = models.ForeignKey(Challenge, on_delete=models.CASCADE)
\ No newline at end of file
from rest_framework import serializers
from challenges.models import Challenge
class ChallengeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Challenge
fields = [
"title",
"athletes",
"coach",
]
def create(self, validated_data):
athletes = []
if "athletes" in validated_data:
athletes = validated_data.pop("athletes")
challenge_obj = Challenge.objects.create(**validated_data)
challenge_obj.athletes.set(athletes)
return challenge_obj
class ChallengeGetSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Challenge
fields = [
"title",
"athletes",
"coach",
]
\ No newline at end of file
from django.urls import path, include
from challenges import views
from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = [
path("api/challenges/", views.ChallengeList.as_view(), name="challenge-list"),
path("api/challenges/<int:pk>/", views.ChallengeDetails.as_view(), name="challenge-detail"),
]
from django.shortcuts import render
from rest_framework import mixins, generics
from challenges.models import Challenge
from challenges.serializers import ChallengeSerializer, ChallengeGetSerializer
# Create your views here.
# Create your views here
class ChallengeList(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):
serializer_class = ChallengeSerializer
def get(self, request, *args, **kwargs):
self.serializer_class = ChallengeGetSerializer
return self.list(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
def get_queryset(self):
# Tror man filtrerer her
qs = Challenge.objects.all()
if self.request.user:
qs = Challenge.objects.filter(coach=self.request.user.pk)
return qs
class ChallengeDetail(
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
generics.GenericAPIView,
):
lookup_field_options = ["pk"]
# serializer_class = UserSerializer
# queryset = get_user_model().objects.all()
# permission_classes = [permissions.IsAuthenticated & (IsCurrentUser | IsReadOnly)]
def get_object(self):
for field in self.lookup_field_options:
if field in self.kwargs:
self.lookup_field = field
break
return super().get_object()
def get(self, request, *args, **kwargs):
#self.serializer_class = UserGetSerializer
return self.retrieve(request, *args, **kwargs)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment