From a7cf87aa0db8e0f1222db7054cda4970d9f06e5a Mon Sep 17 00:00:00 2001 From: Trey t Date: Mon, 17 Jul 2023 23:33:34 -0500 Subject: [PATCH] WIP --- db.sqlite3 | Bin 2052096 -> 2052096 bytes exercise/models.py | 2 +- workout/admin.py | 8 +++++- workout/views.py | 60 ++++++++++++++++++++++++++++----------------- 4 files changed, 46 insertions(+), 24 deletions(-) diff --git a/db.sqlite3 b/db.sqlite3 index ee12763dd944b9178cf9a6638a885ab2e979ddce..6d8873a0bd29e0bfbb4b56f2babc38f2908b4f4f 100644 GIT binary patch delta 3935 zcmai1eQX>@72l7ueS07Kd_LdRxc0?4`_4^l-_6W^U)97uBggqrlu{MdLJ)`6QmLA{ z)CNJNXj4^SiT;5r6I~Gm74r`TRZ-+dhgzf*5Fizy09940gkp#a3PcbZ1rQ{NH@lbn z*xa=zy*E4i-u&*(%=^8WJ^A8^lP{iFAC#V0e}1Tp`s`wUN=$F8P3a=p`r*{QqIhWI z--T;p{@E+VwJSxjdZj4cy`G7~YXbZi{sQm8He7@^;HU69yaqSm@9-8}*h;+qbr=lE zikRmr$JH2Dqg}EnO4;gL7o^FNow1ujJo>5tN8n|U)vEfKnu)(1KNWi^UWy%#{xACK zR$}pms9VnW2s1NDCB+ESrie8~?Gd7vh*hF?fjY#twe}W9EW7+^?{_%IF?K0;1w4(C zP79{vSenz$Vi9V%hBf!p^6`-;A6agQ3?f26c?4U~ws$dS2+$gB)5AQLIN(iM3r5mLOC5)n=L{OqAF_bupiUQTGTfK)r7E-?;zFh4(l2{N`UP0+-=;@HYG!eu0EJk2Lu_oB3B+i@V3ay$ar0nf1nV?Hw@U^q=$6iyUEDm- z7*S6^??2o+VKvOIl3^E!Ms?~;Z0^S)DL*X2|0Ecau9YZ5CYjXMCpPEn-pp?6%}Sb8 zFfc=Pdt!56-TMf0KEPdfsBKMb&eh$S)y`Y9N<=SMhHe^mHSs|DdQ2aHV*Schde2JgVn;0N$5T!*W;-MgSt1i8z7g>=i3C~g#a zBONbzz3nN!wLO!(BWEVO&Th})!CkzQyNB!5aqm?)?=`uc-y7qNoIxfaUO4MDmv(ah z$q}wYJN#D}?^Vw*Z^A>BtIO$u!DxI?fGvzRr(RUQseV!&ieHLvxOr)Be}@RX@@-LS z7(sxVg*hh4Ns&Ft4iWfnL?c$P=G81ZajBM*_x5#&z_0hVW!b?4q-L=VlZ{F8eTiBG zN?@inH--mUdy9+9L&omw?J&Mpn{CR1r(n(EI7}Oz2R?kK*t!Mvlfx!NH=6&x$+BQL z+REpiTzYC{X_d09G_P`~9f5SH53qEqwX9{6#nkOOQdX8L%WnDo`Wxe3txm4q|&|M@+3|ZPZvF1;5y~eC^hLl zdn`)r=Fj~eiTXVfCCB-jWS;B39M_34u6w-;N^h1wgGV3m=mR_W8`Wcv>XAns>Z-o~ zRV=|)^t>>jBtznFV{6RUb zJftL%TNlIbEQ#P^VkroR+meG(V(EJG&eYk3r?kbSSJD}Iw)i0+#CGmTPw)2RGU6Df zA#S8IQn}!xgvD?$M?GJ>O=(&%$8K9}n@Y#ik=dy_M*Hay%_L3JaT^yoMs$l&aXS?W zl_xn0CRnFMAyjKdX$D~!V^3;Io}KvMHKC3}sD<;t^GeAG|H+xulr*#3kEGL@;Bm>? z7e9(uN`v&IBD1?XE{Rcc@%Cv^EFMAb*UFcTwM}}kze}3Ar(+;BSKTp#n^UtG4zqLp z%Ir=*5J?c~`)ly4be*8KZfY%oG%N+rNt#yixsTOO}R6x`}s>2#Q71=hC~ z5iYvDnv|t--VX^kx*k&Pa$mzRY&;!W_sF-nn2pSk!pTfI=YzD_qgrjnZnYC%R`x>$3^2h+m2gyjus)shY*0#E~<-$ii&L zNNTQlAHpSZTk^JMVwP!3;ohhq%#LsvQ4~6rXxCX?mzWpO$oMxEfY#U1?ZMrjf8ZBYLw@L}BgLyJ?iWPzF#wf-;D5 QH_8yoaP`)^8TqsS2i##S_W%F@ delta 465 zcmWO1PiPZC7zOZ|*-f*X?#|2DWLwi(Qv?rUOb+HGNFsPG(Sp#64R{kv@FqfNL~y+s ziD9lii5CUg!ysDdRWA*Npdy5V6o~{)SmOVJ-{JT8c)ZKk+HSVCo9&#~96nyUMESCQ zy1+#zES%?7^rmou^UIxI=f*sDe^?BMMQ(;gvDnTy=rjDqR~+I1pD@LD^dq&q1JmCV zXY=!T#vH%PP{VUr(#V@~*?;eMY0~uFN-oK&RmQXW-UpElqa#5qVv_`!AxYv8m!!xn z@rX|(fr*aNt5(H{pae0np%($G* zyfgNgPhox|n5|fOOX*}SsM7eYFlsG`y_AI!!ym*L(Z2)eQ6pGz1R4wx8dTkYZfpfz z+D#b#;U^|keukMm3epu1cbO$)CS$yYUMV@*D8Jj29AP{N$UIpf$4QPXk|lD&#Diu3 F_J4(ixQqY* diff --git a/exercise/models.py b/exercise/models.py index 52050e1..9cb05c1 100644 --- a/exercise/models.py +++ b/exercise/models.py @@ -26,7 +26,7 @@ class Exercise(models.Model): ordering = ('name',) def __str__(self): - return self.name + ":" + self.description + return self.name + " --------- " + self.description def video_url(self): return "exercise_videos/" + self.name.replace(" ", "_") + ".mp4" diff --git a/workout/admin.py b/workout/admin.py index 2915a6d..e2cf44c 100644 --- a/workout/admin.py +++ b/workout/admin.py @@ -2,6 +2,7 @@ from django.contrib import admin from .models import * from exercise.models import Exercise from import_export.admin import ImportExportModelAdmin +from superset.models import Superset # Register your models here. class WorkoutExerciseInline(admin.StackedInline): @@ -9,11 +10,16 @@ class WorkoutExerciseInline(admin.StackedInline): ordering = ("pk",) extra = 0 +class SupersetInline(admin.StackedInline): + model = Superset + ordering = ("pk",) + extra = 0 + @admin.register(Workout) class WorkoutAdmin(ImportExportModelAdmin): list_display = ("name", "description", "registered_user", "created_at", "updated_at") inlines = [ - WorkoutExerciseInline, + SupersetInline, ] @admin.register(WorkoutExercise) diff --git a/workout/views.py b/workout/views.py index e7b4965..3bb7a4d 100644 --- a/workout/views.py +++ b/workout/views.py @@ -60,37 +60,53 @@ def add_workout(request): return Response(status=status.HTTP_400_BAD_REQUEST) # exercise_data = dict(request.POST)["exercise_data"] - exercise_data = request.data["exercise_data"] + exercise_data = request.data["supersets"] if exercise_data is None: - return Response({"exercise_data": [ "missing" ] }, status=status.HTTP_400_BAD_REQUEST) + return Response({"supersets": [ "missing" ] }, status=status.HTTP_400_BAD_REQUEST) if len(exercise_data) < 1: - return Response({"exercise_data": [ "empty" ] }, status=status.HTTP_400_BAD_REQUEST) + return Response({"supersets": [ "empty" ] }, status=status.HTTP_400_BAD_REQUEST) serializer = POSTCompleteWorkoutSerializer(data=request.data) if serializer.is_valid(): - new_obj = serializer.save(registered_user=registered_user) - new_obj.save() + workout = serializer.save(registered_user=registered_user) + workout.save() - for data in exercise_data: - print(data) - id = data["id"] - if id is None: - continue - - exercise = Exercise.objects.get(pk=id) - completed_workout = WorkoutExercise.objects.create( - workout=new_obj, - exercise=exercise + for superset in exercise_data: + name = superset["name"] + rounds = superset["rounds"] + exercises = superset["exercises"] + superset_order = superset["order"] + + superset = Superset.objects.create( + workout=workout, + name=name, + rounds=rounds, + order=superset_order ) - if "weight" in data: - completed_workout.weight = data["weight"] - if "reps" in data: - completed_workout.reps = data["reps"] - if "duration" in data: - completed_workout.duration = data["duration"] - completed_workout.save() + superset.save() + + for exercise in exercises: + exercise_id = exercise["id"] + exercise_obj = Exercise.objects.get(pk=exercise_id) + order = exercise["order"] + + supersetExercise = SupersetExercise.objects.create( + superset=superset, + exercise=exercise_obj, + order=order + ) + + if "weight" in exercise: + supersetExercise.weight = exercise["weight"] + if "reps" in exercise: + supersetExercise.reps = exercise["reps"] + if "duration" in exercise: + supersetExercise.duration = exercise["duration"] + supersetExercise.save() + + superset_order += 1 return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_500_INTERNAL_SERVER_ERROR)