This commit is contained in:
Trey t
2023-07-27 19:07:35 -05:00
parent 6d68c59ac3
commit 67372cc8ab
9 changed files with 84 additions and 8 deletions

View File

@@ -12,10 +12,17 @@ from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.decorators import authentication_classes
from rest_framework.decorators import permission_classes
from django.core.cache import cache
# Create your views here.
@api_view(['GET'])
def all_equipment(request):
if 'all_equipment' in cache:
data = cache.get('all_equipment')
return Response(data=data, status=status.HTTP_200_OK)
users = Equipment.objects.all()
serializer = EquipmentSerializer(users, many=True)
return Response(data=serializer.data, status=status.HTTP_200_OK)
data = serializer.data
cache.set('all_equipment', data)
return Response(data=data, status=status.HTTP_200_OK)

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.2 on 2023-07-26 22:47
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('exercise', '0007_exercise_estimated_rep_duration'),
]
operations = [
migrations.AddField(
model_name='exercise',
name='video_override',
field=models.CharField(blank=True, max_length=255, null=True),
),
]

View File

@@ -22,6 +22,7 @@ class Exercise(models.Model):
muscle_groups = models.CharField(null=True, blank=True, max_length=255)
synonyms = models.CharField(null=True, blank=True, max_length=255)
estimated_rep_duration = models.FloatField(null=True, blank=True, max_length=255)
video_override = models.CharField(null=True, blank=True, max_length=255)
class Meta:
ordering = ('name',)
@@ -30,7 +31,10 @@ class Exercise(models.Model):
return self.name + " --------- " + self.description
def video_url(self):
return "exercise_videos/" + self.name.replace(" ", "_") + ".mp4"
if self.video_override is not None and len(self.video_override) > 0:
return "exercise_videos/" + self.video_override
else:
return "exercise_videos/" + self.name.replace(" ", "_") + ".mp4"
def audio_url(self):
return "exercise_audio/" + self.name.replace(" ", "_") + ".m4a"

View File

@@ -12,10 +12,17 @@ from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.decorators import authentication_classes
from rest_framework.decorators import permission_classes
from django.core.cache import cache
# Create your views here.
@api_view(['GET'])
def all_exercises(request):
if 'all_exercises' in cache:
data = cache.get('all_exercises')
return Response(data=data, status=status.HTTP_200_OK)
users = Exercise.objects.all()
serializer = ExerciseSerializer(users, many=True)
return Response(data=serializer.data, status=status.HTTP_200_OK)
data = serializer.data
cache.set('all_exercises', data)
return Response(data=data, status=status.HTTP_200_OK)

View File

@@ -12,10 +12,17 @@ from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.decorators import authentication_classes
from rest_framework.decorators import permission_classes
from django.core.cache import cache
# Create your views here.
@api_view(['GET'])
def all_muscles(request):
if 'all_muscles' in cache:
data = cache.get('all_muscles')
return Response(data=data, status=status.HTTP_200_OK)
users = Muscle.objects.all()
serializer = MuscleSerializer(users, many=True)
return Response(data=serializer.data, status=status.HTTP_200_OK)
data = serializer.data
cache.set('all_muscles', data)
return Response(data=data, status=status.HTTP_200_OK)

View File

@@ -13,6 +13,7 @@ Django==4.2.2
django-debug-toolbar==4.1.0
django-import-export==3.2.0
django-push-notifications==3.0.0
django-redis==5.3.0
djangorestframework==3.14.0
et-xmlfile==1.1.0
gevent==22.10.1

View File

@@ -58,6 +58,16 @@ MIDDLEWARE = [
ROOT_URLCONF = 'werkout_api.urls'
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://redis:6379/",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient"
},
}
}
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',

View File

@@ -6,7 +6,7 @@ from muscle.models import ExerciseMuscle
from equipment.models import WorkoutEquipment
from video.models import Video
from video.serializers import VideoSerializer
from superset.serializers import SupersetSerializer
from superset.serializers import SupersetSerializer, SupersetExerciseSerializer
from superset.models import Superset, SupersetExercise
class WorkoutExerciseSerializer(serializers.ModelSerializer):
@@ -79,12 +79,23 @@ class WorkoutDetailSerializer(serializers.ModelSerializer):
male_videos = serializers.SerializerMethodField()
female_videos = serializers.SerializerMethodField()
both_videos = serializers.SerializerMethodField()
all_superset_exercise = serializers.SerializerMethodField()
class Meta:
model = Workout
fields = ('id', 'name', 'description', 'supersets', 'registered_user', 'male_videos', 'female_videos', 'both_videos', 'estimated_time', )
fields = ('id', 'name', 'description', 'supersets', 'registered_user', 'male_videos', 'female_videos', 'both_videos', 'estimated_time', 'all_superset_exercise', )
depth = 1
def get_all_superset_exercise(self, obj):
all_superset_exercise = []
supersets = Superset.objects.filter(workout=obj).order_by('order')
for superset in supersets:
supersetExercises = SupersetExercise.objects.filter(superset=superset).order_by('order')
for x in range(0, superset.rounds):
all_superset_exercise += supersetExercises
data = SupersetExerciseSerializer(all_superset_exercise, many=True).data
return data
def get_supersets(self, obj):
objs = Superset.objects.filter(workout=obj).order_by('order')
data = SupersetSerializer(objs, many=True).data

View File

@@ -16,13 +16,20 @@ from django.shortcuts import get_object_or_404
from datetime import datetime
import json
import os
from django.core.cache import cache
@api_view(['GET'])
def all_workouts(request):
if 'all_workouts' in cache:
data = cache.get('all_workouts')
return Response(data=data, status=status.HTTP_200_OK)
users = Workout.objects.all()
serializer = WorkoutSerializer(users, many=True)
return Response(data=serializer.data, status=status.HTTP_200_OK)
data = serializer.data
cache.set('all_workouts', data)
return Response(data=data, status=status.HTTP_200_OK)
@api_view(['GET'])
@@ -121,6 +128,8 @@ def add_workout(request):
workout.estimated_time = workout_total_time
workout.save()
cache.delete('all_workouts')
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
@@ -229,5 +238,7 @@ def add_from_files(request):
workout_obj.estimated_time = workout_total_time
workout_obj.save()
cache.delete('all_workouts')
return Response(status=status.HTTP_200_OK)