Merge branch 'develop' into feature/restapi
This commit is contained in:
207
rowers/views.py
207
rowers/views.py
@@ -1,11 +1,14 @@
|
||||
import time
|
||||
import operator
|
||||
from django.views.generic.base import TemplateView
|
||||
from django.db.models import Q
|
||||
from django.shortcuts import render
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from rowers.forms import LoginForm,DocumentsForm,UploadOptionsForm
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.template import RequestContext
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from django.conf import settings
|
||||
from django.utils.datastructures import MultiValueDictKeyError
|
||||
from django.utils import timezone,translation
|
||||
@@ -1322,9 +1325,10 @@ def cum_flex(request,theuser=0,
|
||||
u = ''
|
||||
|
||||
if allergworkouts:
|
||||
res = interactive_cum_flex_chart(allergworkouts,xparam=xparam,
|
||||
yparam1=yparam1,yparam2=yparam2,
|
||||
promember=promember)
|
||||
res = interactive_cum_flex_chart2(allergworkouts,xparam=xparam,
|
||||
yparam1=yparam1,
|
||||
yparam2=yparam2,
|
||||
promember=promember)
|
||||
script = res[0]
|
||||
div = res[1]
|
||||
js_resources = res[2]
|
||||
@@ -1352,6 +1356,36 @@ def cum_flex(request,theuser=0,
|
||||
'promember':promember,
|
||||
})
|
||||
|
||||
@login_required()
|
||||
def workout_histo_view(request,id=0):
|
||||
row = Workout.objects.get(id=id)
|
||||
promember=0
|
||||
mayedit=0
|
||||
if not request.user.is_anonymous():
|
||||
r = Rower.objects.get(user=request.user)
|
||||
result = request.user.is_authenticated() and r.rowerplan=='pro'
|
||||
if result:
|
||||
promember=1
|
||||
if request.user == row.user.user:
|
||||
mayedit=1
|
||||
|
||||
if not promember:
|
||||
return HttpResponseRedirect("/rowers/about/")
|
||||
|
||||
|
||||
|
||||
|
||||
res = interactive_histoall([row])
|
||||
script = res[0]
|
||||
div = res[1]
|
||||
|
||||
return render(request,
|
||||
'histo_single.html',
|
||||
{'interactiveplot':script,
|
||||
'the_div':div,
|
||||
'id':id,
|
||||
'mayedit':mayedit,
|
||||
})
|
||||
|
||||
@login_required()
|
||||
def histo(request,theuser=0,
|
||||
@@ -1582,8 +1616,8 @@ def rankings_view(request,theuser=0,
|
||||
for rankingduration in rankingdurations:
|
||||
|
||||
workouts = Workout.objects.filter(user=r,duration=rankingduration,
|
||||
workouttype='rower',
|
||||
startdatetime__gte=startdate,
|
||||
workouttype='rower',
|
||||
startdatetime__gte=startdate,
|
||||
startdatetime__lte=enddate).order_by('-distance')
|
||||
if workouts:
|
||||
thedistances.append(workouts[0].distance)
|
||||
@@ -1754,29 +1788,156 @@ def rankings_view(request,theuser=0,
|
||||
})
|
||||
|
||||
@login_required()
|
||||
def workouts_view(request,message='',successmessage=''):
|
||||
def workout_recalcsummary_view(request,id=0):
|
||||
row = Workout.objects.get(id=id)
|
||||
if (checkworkoutuser(request.user,row)==False):
|
||||
message = "You are not allowed to edit this workout"
|
||||
url = reverse(workouts_view,args=[str(message)])
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
filename = row.csvfilename
|
||||
rowdata = rdata(filename)
|
||||
row.summary = rowdata.allstats()
|
||||
row.save()
|
||||
successmessage = "Summary Updated"
|
||||
url = reverse(workout_edit_view,
|
||||
kwargs = {
|
||||
'id':str(id),
|
||||
'successmessage':str(successmessage),
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
@login_required()
|
||||
def workouts_view(request,message='',successmessage='',
|
||||
startdatestring="",enddatestring="",
|
||||
startdate=timezone.now()-datetime.timedelta(days=365),
|
||||
enddate=timezone.now()):
|
||||
try:
|
||||
r = Rower.objects.get(user=request.user)
|
||||
# res = mailprocessing.safeprocessattachments()
|
||||
#if len(res)>0 and np.cumsum(np.array(res)).max()>0:
|
||||
# successmessage = 'New Workouts have been created from email'
|
||||
|
||||
workouts = Workout.objects.filter(user=r).order_by("-date", "-starttime")
|
||||
|
||||
if request.method == 'POST':
|
||||
dateform = DateRangeForm(request.POST)
|
||||
if dateform.is_valid():
|
||||
startdate = dateform.cleaned_data['startdate']
|
||||
enddate = dateform.cleaned_data['enddate']
|
||||
else:
|
||||
dateform = DateRangeForm(initial={
|
||||
'startdate':startdate,
|
||||
'enddate':enddate,
|
||||
})
|
||||
|
||||
startdate = datetime.datetime.combine(startdate,datetime.time())
|
||||
enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59))
|
||||
|
||||
if startdatestring:
|
||||
startdate = iso8601.parse_date(startdatestring)
|
||||
if enddatestring:
|
||||
enddate = iso8601.parse_date(enddatestring)
|
||||
|
||||
if enddate < startdate:
|
||||
s = enddate
|
||||
enddate = startdate
|
||||
startdate = s
|
||||
|
||||
|
||||
workouts = Workout.objects.filter(user=r,
|
||||
startdatetime__gte=startdate,
|
||||
startdatetime__lte=enddate).order_by("-date", "-starttime")
|
||||
|
||||
query = request.GET.get('q')
|
||||
if query:
|
||||
query_list = query.split()
|
||||
workouts = workouts.filter(
|
||||
reduce(operator.and_,
|
||||
(Q(name__icontains=q) for q in query_list)) |
|
||||
reduce(operator.and_,
|
||||
(Q(notes__icontains=q) for q in query_list))
|
||||
)
|
||||
|
||||
paginator = Paginator(workouts,20) # show 25 workouts per page
|
||||
page = request.GET.get('page')
|
||||
|
||||
try:
|
||||
workouts = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
workouts = paginator.page(1)
|
||||
except EmptyPage:
|
||||
workouts = paginator.page(paginator.num_pages)
|
||||
|
||||
return render(request, 'list_workouts.html',
|
||||
{'workouts': workouts,
|
||||
'message': message,
|
||||
'successmessage':successmessage,
|
||||
'dateform':dateform,
|
||||
'startdate':startdate,
|
||||
'enddate':enddate,
|
||||
})
|
||||
except Rower.DoesNotExist:
|
||||
return HttpResponse("User has no rower instance")
|
||||
|
||||
@user_passes_test(promember,login_url="/login")
|
||||
def workout_comparison_list(request,id=0,message='',successmessage=''):
|
||||
def workout_comparison_list(request,id=0,message='',successmessage='',
|
||||
startdatestring="",enddatestring="",
|
||||
startdate=timezone.now()-datetime.timedelta(days=365),
|
||||
enddate=timezone.now()):
|
||||
|
||||
try:
|
||||
r = Rower.objects.get(user=request.user)
|
||||
u = User.objects.get(id=r.user.id)
|
||||
workouts = Workout.objects.filter(user=r).order_by("-date", "-starttime").exclude(id=id)
|
||||
if request.method == 'POST':
|
||||
dateform = DateRangeForm(request.POST)
|
||||
if dateform.is_valid():
|
||||
startdate = dateform.cleaned_data['startdate']
|
||||
enddate = dateform.cleaned_data['enddate']
|
||||
else:
|
||||
dateform = DateRangeForm(initial={
|
||||
'startdate':startdate,
|
||||
'enddate':enddate,
|
||||
})
|
||||
|
||||
if startdatestring:
|
||||
startdate = iso8601.parse_date(startdatestring)
|
||||
if enddatestring:
|
||||
enddate = iso8601.parse_date(enddatestring)
|
||||
|
||||
startdate = datetime.datetime.combine(startdate,datetime.time())
|
||||
enddate = datetime.datetime.combine(enddate,datetime.time(23,59,59))
|
||||
|
||||
if enddate < startdate:
|
||||
s = enddate
|
||||
enddate = startdate
|
||||
startdate = s
|
||||
|
||||
workouts = Workout.objects.filter(user=r,
|
||||
startdatetime__gte=startdate,
|
||||
startdatetime__lte=enddate).order_by("-date", "-starttime").exclude(id=id)
|
||||
|
||||
query = request.GET.get('q')
|
||||
if query:
|
||||
query_list = query.split()
|
||||
workouts = workouts.filter(
|
||||
reduce(operator.and_,
|
||||
(Q(name__icontains=q) for q in query_list)) |
|
||||
reduce(operator.and_,
|
||||
(Q(notes__icontains=q) for q in query_list))
|
||||
)
|
||||
|
||||
paginator = Paginator(workouts,15) # show 25 workouts per page
|
||||
page = request.GET.get('page')
|
||||
|
||||
try:
|
||||
workouts = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
workouts = paginator.page(1)
|
||||
except EmptyPage:
|
||||
workouts = paginator.page(paginator.num_pages)
|
||||
|
||||
row = Workout.objects.get(id=id)
|
||||
|
||||
return render(request, 'comparison_list.html',
|
||||
@@ -1787,6 +1948,9 @@ def workout_comparison_list(request,id=0,message='',successmessage=''):
|
||||
'first_name':u.first_name,
|
||||
'message': message,
|
||||
'successmessage':successmessage,
|
||||
'dateform':dateform,
|
||||
'startdate':startdate,
|
||||
'enddate':enddate,
|
||||
})
|
||||
except Rower.DoesNotExist:
|
||||
return HttpResponse("User has no rower instance")
|
||||
@@ -2712,11 +2876,14 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
|
||||
|
||||
rowdata = rdata(f1)
|
||||
hascoordinates = 1
|
||||
try:
|
||||
latitude = rowdata.df[' latitude']
|
||||
except KeyError:
|
||||
hascoordinates = 0
|
||||
|
||||
if rowdata != 0:
|
||||
try:
|
||||
latitude = rowdata.df[' latitude']
|
||||
except KeyError,AttributeError:
|
||||
hascoordinates = 0
|
||||
else:
|
||||
hascoordinates = 0
|
||||
|
||||
if hascoordinates:
|
||||
res = googlemap_chart(rowdata.df[' latitude'],
|
||||
rowdata.df[' longitude'],
|
||||
@@ -3932,6 +4099,16 @@ def graphs_view(request):
|
||||
try:
|
||||
r = Rower.objects.get(user=request.user)
|
||||
workouts = Workout.objects.filter(user=r).order_by("-date", "-starttime")
|
||||
query = request.GET.get('q')
|
||||
if query:
|
||||
query_list = query.split()
|
||||
workouts = workouts.filter(
|
||||
reduce(operator.and_,
|
||||
(Q(name__icontains=q) for q in query_list)) |
|
||||
reduce(operator.and_,
|
||||
(Q(notes__icontains=q) for q in query_list))
|
||||
)
|
||||
|
||||
g = GraphImage.objects.filter(workout__in=workouts).order_by("-creationdatetime")
|
||||
if (len(g)<=5):
|
||||
return render(request, 'list_graphs.html',
|
||||
|
||||
Reference in New Issue
Block a user