Private
Public Access
1
0
Files
rowsandall/rowers/middleware.py
2018-01-17 18:27:59 +01:00

62 lines
1.6 KiB
Python

from django.utils import timezone
from rowers.models import Workout, PowerTimeFitnessMetric, Rower
import datetime
def getrower(user):
try:
r = Rower.objects.get(user=user)
except Rower.DoesNotExist:
r = Rower(user=user)
r.save()
return r
def do_update(user,mode='rower',days=42):
r = getrower(user)
startdate = timezone.now()-datetime.timedelta(days=days)
# test if not something already done
now_date = timezone.now().strftime('%Y-%m-%d')
ms = PowerTimeFitnessMetric.objects.filter(
user=user,
workoutmode=mode)
if len(ms) == 0:
return 0
max_workout_id = max([m.last_workout for m in ms])
last_update_date = max([m.date.strftime('%Y-%m-%d') for m in ms])
if mode == 'rower':
workouts = Workout.objects.filter(
user=r,
workouttype__in=['rower','dynamic','slides'],
startdatetime__gte=startdate)
else:
workouts = Workout.objects.filter(
user=r,
workouttype__in=['water','coastal'],
startdatetime__gte=startdate)
theids = [int(w.id) for w in workouts]
max_id = max(theids)
if last_update_date < now_date and max_workout_id < max_id:
job = myqueue(queue,
handle_updatefitnessmetric,
request.user.id,mode,theids,
)
return 1
class PowerTimeFitnessMetricMiddleWare(object):
def process_request(self, request):
# Code to be executed before the view is called
result = do_update(request.user,mode='rower')
result = do_update(request.user,mode='water')