Private
Public Access
1
0

favorites on ote flex - need to do otw flex

This commit is contained in:
Sander Roosendaal
2016-12-06 17:45:05 +01:00
parent bd4f9cbe4c
commit bfc05a7de6
6 changed files with 515 additions and 23 deletions

View File

@@ -2,6 +2,7 @@ import time
import operator
from django.views.generic.base import TemplateView
from django.db.models import Q
from django.db import IntegrityError, transaction
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth import authenticate, login, logout
@@ -16,8 +17,10 @@ from django.core.mail import send_mail, BadHeaderError
from rowers.forms import EmailForm, RegistrationForm, RegistrationFormTermsOfService,RegistrationFormUniqueEmail,CNsummaryForm,UpdateWindForm,UpdateStreamForm
from rowers.forms import PredictedPieceForm,DateRangeForm,DeltaDaysForm
from rowers.forms import SummaryStringForm,IntervalUpdateForm,StrokeDataForm
from rowers.models import Workout, User, Rower, WorkoutForm
from rowers.models import Workout, User, Rower, WorkoutForm,FavoriteChart
from rowers.models import RowerPowerForm,RowerForm,GraphImage,AdvancedWorkoutForm
from rowers.models import FavoriteForm,BaseFavoriteFormSet
from django.forms.formsets import formset_factory
import StringIO
from django.contrib.auth.decorators import login_required,user_passes_test
from time import strftime,strptime,mktime,time,daylight
@@ -2573,27 +2576,29 @@ def workout_comparison_view2(request,id1=0,id2=0,xparam='distance',
def workout_flexchart3_view(request,id=0,#*args,**kwargs):
xparam='distance',yparam1='pace',
yparam2='hr',plottype='line',
promember=0):
def workout_flexchart3_view(request,*args,**kwargs):
# xparam='distance',yparam1='pace',
# yparam2='hr',plottype='line',
# promember=0):
# print args
# try:
# id = args[0]
# except:
# pass
# if 'xparam' in kwargs:
# print "found it"
if request.method == 'POST':
workstrokesonly = request.POST['workstrokesonly']
if workstrokesonly == 'True':
workstrokesonly = True
else:
workstrokesonly = False
try:
id = kwargs['id']
except KeyError:
return HttpResponse("Invalid workout number")
if 'promember' in kwargs:
promember = kwargs['promember']
else:
workstrokesonly = False
promember = 0
try:
favoritenr = int(request.GET['favoritechart'])
except:
favoritenr = 0
row = Workout.objects.get(id=id)
promember=0
@@ -2606,6 +2611,56 @@ def workout_flexchart3_view(request,id=0,#*args,**kwargs):
if request.user == row.user.user:
mayedit=1
favorites = FavoriteChart.objects.filter(user=r).order_by("id")
maxfav = len(favorites)-1
if 'xparam' in kwargs:
xparam = kwargs['xparam']
else:
if favorites:
xparam = favorites[favoritenr].xparam
else:
xparam = 'distance'
if 'yparam1' in kwargs:
yparam1 = kwargs['yparam1']
else:
if favorites:
yparam1 = favorites[favoritenr].yparam1
else:
yparam1 = 'pace'
if 'yparam2' in kwargs:
yparam2 = kwargs['yparam2']
else:
if favorites:
yparam2 = favorites[favoritenr].yparam2
else:
yparam2 = 'hr'
if 'plottype' in kwargs:
plottype = kwargs['plottype']
else:
if favorites:
plottype = favorites[favoritenr].plottype
else:
plottype = 'line'
if request.method == 'POST' and 'savefavorite' in request.POST:
f = FavoriteChart(user=r,xparam=xparam,
yparam1=yparam1,yparam2=yparam2,
plottype=plottype)
f.save()
if request.method == 'POST' and 'workstrokesonly' in request.POST:
workstrokesonly = request.POST['workstrokesonly']
if workstrokesonly == 'True':
workstrokesonly = True
else:
workstrokesonly = False
else:
workstrokesonly = False
# create interactive plot
res = interactive_flex_chart2(id,xparam=xparam,yparam1=yparam1,
yparam2=yparam2,
@@ -2631,6 +2686,8 @@ def workout_flexchart3_view(request,id=0,#*args,**kwargs):
'mayedit':mayedit,
'promember':promember,
'workstrokesonly': not workstrokesonly,
'favoritenr':favoritenr,
'maxfav':maxfav,
})
else:
return render(request,
@@ -2647,6 +2704,8 @@ def workout_flexchart3_view(request,id=0,#*args,**kwargs):
'mayedit':mayedit,
'promember':promember,
'workstrokesonly': not workstrokesonly,
'favoritenr':favoritenr,
'maxfav':maxfav,
})
def testbokeh(request):
@@ -4433,6 +4492,56 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
})
@login_required()
def rower_favoritecharts_view(request):
message = ''
successmessage = ''
r = Rower.objects.get(user=request.user)
favorites = FavoriteChart.objects.filter(user=r).order_by('id')
favorites_data = [{'yparam1':f.yparam1,
'yparam2':f.yparam2,
'xparam':f.xparam,
'plottype':f.plottype}
for f in favorites]
FavoriteChartFormSet = formset_factory(FavoriteForm,formset=BaseFavoriteFormSet)
if request.method == 'POST':
favorites_formset = FavoriteChartFormSet(request.POST)
if favorites_formset.is_valid():
new_instances = []
for favorites_form in favorites_formset:
yparam1 = favorites_form.cleaned_data.get('yparam1')
yparam2 = favorites_form.cleaned_data.get('yparam2')
xparam = favorites_form.cleaned_data.get('xparam')
plottype = favorites_form.cleaned_data.get('plottype')
new_instances.append(FavoriteChart(user=r,
yparam1=yparam1,
yparam2=yparam2,
xparam=xparam,
plottype=plottype))
try:
with transaction.atomic():
FavoriteChart.objects.filter(user=r).delete()
FavoriteChart.objects.bulk_create(new_instances)
successmessage = "You have updated your favorites"
except IntegrityError:
message = "something went wrong"
else:
favorites_formset = FavoriteChartFormSet(initial=favorites_data)
context = {
'favorites_formset':favorites_formset,
'message':message,
'successmessage':successmessage,
}
return render(request,'favoritecharts.html',context)
@login_required()
def rower_edit_view(request,message=""):