53 lines
2.1 KiB
Python
53 lines
2.1 KiB
Python
from django.shortcuts import render, redirect
|
|
from django.db import transaction
|
|
from .models import Exercise, Workout, ChestTemplate, BackTemplate, LegsTemplate
|
|
import json
|
|
from datetime import date
|
|
|
|
def workout_tracker(request):
|
|
template_models = {
|
|
'Chest': ChestTemplate,
|
|
'Back': BackTemplate,
|
|
'Legs': LegsTemplate,
|
|
}
|
|
|
|
if request.method == 'POST':
|
|
# Data comes in as lists from the form
|
|
selected_template = request.POST.get('template_name')
|
|
exercises = request.POST.getlist('exercise[]')
|
|
groups = request.POST.getlist('group[]')
|
|
types = request.POST.getlist('type[]')
|
|
sets = request.POST.getlist('set[]')
|
|
weights = request.POST.getlist('weight[]')
|
|
reps = request.POST.getlist('reps[]')
|
|
notes = request.POST.getlist('notes[]')
|
|
|
|
TemplateModel = template_models.get(selected_template)
|
|
|
|
if TemplateModel and exercises:
|
|
with transaction.atomic():
|
|
# 1. Clear the specific Template table to replace with new data
|
|
TemplateModel.objects.all().delete()
|
|
|
|
# 2. Iterate and save to both Workouts (History) and Template (Current)
|
|
for i in range(len(exercises)):
|
|
row_data = {
|
|
'group': groups[i],
|
|
'type': types[i],
|
|
'exercise': exercises[i],
|
|
'set': int(sets[i]),
|
|
'weight': float(weights[i] or 0),
|
|
'reps': int(reps[i] or 0),
|
|
'notes': notes[i]
|
|
}
|
|
|
|
# Save to history
|
|
Workout.objects.create(**row_data)
|
|
# Save to template (date will auto-set to today)
|
|
TemplateModel.objects.create(**row_data)
|
|
|
|
return redirect('workout_tracker')
|
|
|
|
# GET: Fetch exercises for dropdowns
|
|
exercises = list(Exercise.objects.values('exercise', 'type', 'group'))
|
|
return render(request, 'tracker/index.html', {'exercises_json': json.dumps(exercises)})
|