From 5fb6df7e5ac5087b9d1c3954918770f65ef56e59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vegard=20Sporst=C3=B8l?= <vegarms@stud.ntnu.no> Date: Sat, 6 Mar 2021 00:17:12 +0100 Subject: [PATCH] set athlete as owner working --- backend/secfit/workouts/serializers.py | 3 +++ backend/secfit/workouts/views.py | 6 +++++- frontend/www/scripts/workout.js | 9 +++++---- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/backend/secfit/workouts/serializers.py b/backend/secfit/workouts/serializers.py index a966ed3..c94ede4 100644 --- a/backend/secfit/workouts/serializers.py +++ b/backend/secfit/workouts/serializers.py @@ -98,7 +98,9 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer): if "files" in validated_data: files_data = validated_data.pop("files") + print(validated_data) workout = Workout.objects.create(**validated_data) + print(workout) for exercise_instance_data in exercise_instances_data: ExerciseInstance.objects.create(workout=workout, **exercise_instance_data) @@ -127,6 +129,7 @@ class WorkoutSerializer(serializers.HyperlinkedModelSerializer): instance.name = validated_data.get("name", instance.name) instance.notes = validated_data.get("notes", instance.notes) + instance.owner = validated_data.get("owner", instance.owner) instance.visibility = validated_data.get("visibility", instance.visibility) instance.date = validated_data.get("date", instance.date) instance.save() diff --git a/backend/secfit/workouts/views.py b/backend/secfit/workouts/views.py index efddf40..13dd972 100644 --- a/backend/secfit/workouts/views.py +++ b/backend/secfit/workouts/views.py @@ -26,6 +26,7 @@ from workouts.models import Workout, Exercise, ExerciseInstance, WorkoutFile from workouts.serializers import WorkoutSerializer, ExerciseSerializer from workouts.serializers import RememberMeSerializer from workouts.serializers import ExerciseInstanceSerializer, WorkoutFileSerializer +from django.contrib.auth import get_user_model from django.core.exceptions import PermissionDenied from rest_framework_simplejwt.tokens import RefreshToken from rest_framework.response import Response @@ -128,7 +129,10 @@ class WorkoutList( return self.create(request, *args, **kwargs) def perform_create(self, serializer): - serializer.save(owner=self.request.user) + owner = self.request.POST.get("owner") + User = get_user_model() + user = User.objects.get(username=owner) + serializer.save(owner=user) def get_queryset(self): qs = Workout.objects.none() diff --git a/frontend/www/scripts/workout.js b/frontend/www/scripts/workout.js index 8d49ca2..b351b18 100644 --- a/frontend/www/scripts/workout.js +++ b/frontend/www/scripts/workout.js @@ -122,6 +122,7 @@ async function retrieveWorkout(id) { function handleCancelDuringWorkoutEdit() { location.reload(); } + function athleteChecked() { let checkBox = document.getElementById("forAthlete"); let athletes = document.getElementById("athletes"); @@ -134,17 +135,14 @@ function athleteChecked() { myself.style.display = "block"; } } + async function athletesInDropdown() { let ath = document.getElementById("athletes"); let currentUser = await getCurrentUser(); - console.log("hei"); - console.log(currentUser.username); - console.log(currentUser.athletes); for (let athleteUrl of currentUser.athletes) { let newElement = document.createElement("option"); let response = await sendRequest("GET", athleteUrl); let athlete = await response.json(); - console.log(athlete); newElement.text = athlete.username; ath.add(newElement); } @@ -157,6 +155,7 @@ function handleEditWorkoutButtonClick() { setReadOnly(false, "#form-workout"); document.querySelector("#inputOwner").readOnly = true; // owner field should still be readonly + document.querySelector("#forAthlete").hidden = true editWorkoutButton.className += " hide"; okWorkoutButton.className = okWorkoutButton.className.replace(" hide", ""); @@ -221,6 +220,7 @@ function generateWorkoutForm() { submitForm.append("name", formData.get("name")); let date = new Date(formData.get("date")).toISOString(); submitForm.append("date", date); + submitForm.append("owner", formData.get("owner_username")) submitForm.append("notes", formData.get("notes")); submitForm.append("visibility", formData.get("visibility")); @@ -247,6 +247,7 @@ function generateWorkoutForm() { async function createWorkout() { let submitForm = generateWorkoutForm(); + console.log(submitForm) let response = await sendRequest( "POST", -- GitLab