diff --git a/backend/secfit/workouts/views.py b/backend/secfit/workouts/views.py index 9b64e09924f9f43b86271b758cc2829205dd3af9..f9b6a1709bf2aa99efe76867a0476e22a13adeea 100644 --- a/backend/secfit/workouts/views.py +++ b/backend/secfit/workouts/views.py @@ -1,16 +1,16 @@ """Contains views for the workouts application. These are mostly class-based views. """ -from rest_framework import generics, mixins -from rest_framework import permissions - +from collections import namedtuple +import base64 +import pickle +from rest_framework import generics, mixins, permissions, filters from rest_framework.parsers import ( JSONParser, ) from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.reverse import reverse -from django.db.models import Q -from rest_framework import filters +from rest_framework_simplejwt.tokens import RefreshToken from workouts.parsers import MultipartJsonParser from workouts.permissions import ( IsOwner, @@ -26,12 +26,8 @@ from workouts.models import Workout, Exercise, ExerciseInstance, Goal, WorkoutFi from workouts.serializers import WorkoutSerializer, ExerciseSerializer, GoalSerializer from workouts.serializers import RememberMeSerializer from workouts.serializers import ExerciseInstanceSerializer, WorkoutFileSerializer +from django.db.models import Q from django.core.exceptions import PermissionDenied -from rest_framework_simplejwt.tokens import RefreshToken -from rest_framework.response import Response -import json -from collections import namedtuple -import base64, pickle from django.core.signing import Signer @@ -66,16 +62,15 @@ class RememberMe( serializer_class = RememberMeSerializer def get(self, request): - if request.user.is_authenticated == False: + if not request.user.is_authenticated: raise PermissionDenied - else: - return Response({"remember_me": self.rememberme()}) + return Response({"remember_me": self.rememberme()}) def post(self, request): - cookieObject = namedtuple("Cookies", request.COOKIES.keys())( + coockie_object = namedtuple("Cookies", request.COOKIES.keys())( *request.COOKIES.values() ) - user = self.get_user(cookieObject) + user = self.get_user(coockie_object) refresh = RefreshToken.for_user(user) return Response( { @@ -84,8 +79,8 @@ class RememberMe( } ) - def get_user(self, cookieObject): - decode = base64.b64decode(cookieObject.remember_me) + def get_user(self, coockie_object): + decode = base64.b64decode(coockie_object.remember_me) user, sign = pickle.loads(decode) # Validate signature @@ -132,18 +127,18 @@ class WorkoutList( serializer.save(owner=self.request.user) def get_queryset(self): - qs = Workout.objects.none() + query_set = Workout.objects.none() if self.request.user: # A workout should be visible to the requesting user if any of the following hold: # - The workout has public visibility # - The owner of the workout is the requesting user # - The workout has coach visibility and the requesting user is the owner's coach - qs = Workout.objects.filter( + query_set = Workout.objects.filter( Q(visibility="PU") | (Q(visibility="CO") & Q(owner__coach=self.request.user)) ).distinct() - return qs + return query_set class WorkoutDetail( @@ -288,9 +283,9 @@ class ExerciseInstanceList( return self.create(request, *args, **kwargs) def get_queryset(self): - qs = ExerciseInstance.objects.none() + query_set = ExerciseInstance.objects.none() if self.request.user: - qs = ExerciseInstance.objects.filter( + query_set = ExerciseInstance.objects.filter( Q(workout__owner=self.request.user) | ( (Q(workout__visibility="CO") | Q(workout__visibility="PU")) @@ -298,7 +293,7 @@ class ExerciseInstanceList( ) ).distinct() - return qs + return query_set class ExerciseInstanceDetail( @@ -351,9 +346,9 @@ class WorkoutFileList( serializer.save(owner=self.request.user) def get_queryset(self): - qs = WorkoutFile.objects.none() + query_set = WorkoutFile.objects.none() if self.request.user: - qs = WorkoutFile.objects.filter( + query_set = WorkoutFile.objects.filter( Q(owner=self.request.user) | Q(workout__owner=self.request.user) | ( @@ -362,7 +357,7 @@ class WorkoutFileList( ) ).distinct() - return qs + return query_set class WorkoutFileDetail(