diff --git a/db.sqlite3 b/db.sqlite3 index d74f4da..a9c3f9c 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/media/videos/Recover_8.mp4 b/media/videos/Recover_8.mp4 new file mode 100644 index 0000000..e963b6c Binary files /dev/null and b/media/videos/Recover_8.mp4 differ diff --git a/video/__init__.py b/video/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/video/admin.py b/video/admin.py new file mode 100644 index 0000000..2a377c3 --- /dev/null +++ b/video/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin +from .models import Video + +# Register your models here. +@admin.register(Video) +class VideoAdmin(admin.ModelAdmin): + list_display = ("video_file",) \ No newline at end of file diff --git a/video/apps.py b/video/apps.py new file mode 100644 index 0000000..8977386 --- /dev/null +++ b/video/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class VideoConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'video' diff --git a/video/migrations/0001_initial.py b/video/migrations/0001_initial.py new file mode 100644 index 0000000..f759886 --- /dev/null +++ b/video/migrations/0001_initial.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.2 on 2023-07-14 19:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Video', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('video_file', models.FileField(null=True, upload_to='videos/', verbose_name='')), + ], + ), + ] diff --git a/video/migrations/0002_video_gender.py b/video/migrations/0002_video_gender.py new file mode 100644 index 0000000..79827fc --- /dev/null +++ b/video/migrations/0002_video_gender.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.2 on 2023-07-14 19:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('video', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='video', + name='gender', + field=models.PositiveSmallIntegerField(choices=[(1, 'male'), (2, 'female'), (3, 'both')], default=1), + preserve_default=False, + ), + ] diff --git a/video/migrations/__init__.py b/video/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/video/models.py b/video/models.py new file mode 100644 index 0000000..7576bd3 --- /dev/null +++ b/video/models.py @@ -0,0 +1,19 @@ +from django.db import models + +# Create your models here. +VIDEO_GENDER = ( + (1, "male"), + (2, "female"), + (3, "both"), +) + +class Video(models.Model): + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + video_file = models.FileField(upload_to='videos/', null=True, verbose_name="") + gender = models.PositiveSmallIntegerField( + choices=VIDEO_GENDER + ) + + def __str__(self): + return str(self.video_file) \ No newline at end of file diff --git a/video/serializers.py b/video/serializers.py new file mode 100644 index 0000000..d47c843 --- /dev/null +++ b/video/serializers.py @@ -0,0 +1,7 @@ +from rest_framework import serializers +from .models import * + +class VideoSerializer(serializers.ModelSerializer): + class Meta: + model = Video + fields = ('video_file',) \ No newline at end of file diff --git a/video/tests.py b/video/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/video/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/video/views.py b/video/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/video/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/werkout_api/settings.py b/werkout_api/settings.py index bbb47af..e121700 100644 --- a/werkout_api/settings.py +++ b/werkout_api/settings.py @@ -39,7 +39,8 @@ INSTALLED_APPS = [ 'registered_user', 'workout', 'muscle', - 'scripts' + 'scripts', + 'video' ] MIDDLEWARE = [ diff --git a/workout/serializers.py b/workout/serializers.py index 0f4c5ce..ba89425 100644 --- a/workout/serializers.py +++ b/workout/serializers.py @@ -4,6 +4,8 @@ from exercise.serializers import ExerciseSerializer from registered_user.serializers import GetRegisteredUserSerializer from muscle.models import ExerciseMuscle from equipment.models import WorkoutEquipment +from video.models import Video +from video.serializers import VideoSerializer class WorkoutExerciseSerializer(serializers.ModelSerializer): exercise = ExerciseSerializer(read_only=True) @@ -62,10 +64,13 @@ class WorkoutSerializer(serializers.ModelSerializer): class WorkoutDetailSerializer(serializers.ModelSerializer): exercises = serializers.SerializerMethodField() registered_user = serializers.SerializerMethodField() + male_videos = serializers.SerializerMethodField() + female_videos = serializers.SerializerMethodField() + both_videos = serializers.SerializerMethodField() class Meta: model = Workout - fields = ('id', 'name', 'description', 'exercises', 'registered_user') + fields = ('id', 'name', 'description', 'exercises', 'registered_user', 'male_videos', 'female_videos', 'both_videos') depth = 1 def get_exercises(self, obj): @@ -77,6 +82,18 @@ class WorkoutDetailSerializer(serializers.ModelSerializer): objs = RegisteredUser.objects.get(pk=obj.registered_user.pk) data = GetRegisteredUserSerializer(objs, many=False).data return data + + def get_male_videos(self, obj): + data = Video.objects.filter(gender=1).values_list('video_file', flat=True) + return data + + def get_female_videos(self, obj): + data = Video.objects.filter(gender=2).values_list('video_file', flat=True) + return data + + def get_both_videos(self, obj): + data = Video.objects.filter(gender=3).values_list('video_file', flat=True) + return data class GetCompleteWorkoutSerializer(serializers.ModelSerializer): workout = WorkoutSerializer(many=False, read_only=True)