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