zed_workouts/zed_workouts/tracker/views.py

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)})