switched to template based class
This commit is contained in:
@@ -1844,53 +1844,6 @@ def agegrouprecordview(request, sex='male', weightcategory='hwt',
|
||||
'the_div': div,
|
||||
})
|
||||
|
||||
@user_passes_test(ispromember, login_url="/rowers/paidplans",
|
||||
message="This functionality requires a Pro plan or higher."
|
||||
" If you are already a Pro user, please log in to access this functionality",
|
||||
redirect_field_name=None)
|
||||
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||
def forcecurveanalysis_view(request, userid=0):
|
||||
r = getrequestrower(request, userid=userid)
|
||||
|
||||
analyses = ForceCurveAnalysis.objects.filter(rower=r).order_by("-date","-id")
|
||||
selected = []
|
||||
|
||||
div = ""
|
||||
script = ""
|
||||
|
||||
|
||||
if request.method == 'POST':
|
||||
form = ForceCurveMultipleCompareForm(request.POST)
|
||||
|
||||
if form.is_valid():
|
||||
cd = form.cleaned_data
|
||||
selected = cd['analyses']
|
||||
request.session['analyses'] = [a.id for a in selected]
|
||||
# now should redirect to analysis
|
||||
|
||||
script, div = forcecurve_multi_interactive_chart(selected)
|
||||
|
||||
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url': '/rowers/analysis',
|
||||
'name': 'Analysis'
|
||||
},
|
||||
{
|
||||
'url': reverse('instrokeanalysis_view'),
|
||||
'name': 'In-Stroke Analysis',
|
||||
},
|
||||
]
|
||||
|
||||
return render(request, 'forcecurve_analysis.html',
|
||||
{
|
||||
'breadcrumbs': breadcrumbs,
|
||||
'analyses': analyses,
|
||||
'rower': r,
|
||||
'the_script': script,
|
||||
'the_div': div,
|
||||
'selected': selected,
|
||||
})
|
||||
|
||||
#instroke analysis delete view
|
||||
class ForceCurveAnalysisDelete(DeleteView):
|
||||
@@ -1947,51 +1900,103 @@ class ForceCurveAnalysisDelete(DeleteView):
|
||||
|
||||
return obj
|
||||
|
||||
@user_passes_test(ispromember, login_url="/rowers/paidplans",
|
||||
message="This functionality requires a Pro plan or higher."
|
||||
" If you are already a Pro user, please log in to access this functionality",
|
||||
redirect_field_name=None)
|
||||
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||
def instrokeanalysis_view(request, userid=0):
|
||||
r = getrequestrower(request, userid=userid)
|
||||
|
||||
analyses = InStrokeAnalysis.objects.filter(rower=r).order_by("-date","-id")
|
||||
class SavedAnalysisView(UserPassesTestMixin, View):
|
||||
form_class = InStrokeMultipleCompareForm
|
||||
initial = {}
|
||||
selected = []
|
||||
|
||||
div = ""
|
||||
script = ""
|
||||
url = '/rowers/analysis/instrokeanalysis/'
|
||||
name = 'In-Stroke Analysis'
|
||||
breadcrumbs = []
|
||||
|
||||
analysis_class = InStrokeAnalysis
|
||||
template_name = 'instroke_analysis.html'
|
||||
r = None
|
||||
analyses = None
|
||||
chart = instroke_multi_interactive_chart
|
||||
|
||||
|
||||
if request.method == 'POST':
|
||||
form = InStrokeMultipleCompareForm(request.POST)
|
||||
def handle_no_permission(self):
|
||||
if self.request.user.is_anonymous:
|
||||
url = reverse('login')+'?next='+self.request.path
|
||||
return HttpResponseRedirect(url)
|
||||
messages.error(self.request, "This functionality requires a Pro plan or higher."
|
||||
" If you are already a Pro user, please log in to access this functionality")
|
||||
return HttpResponseRedirect("/rowers/paidplans")
|
||||
|
||||
|
||||
def test_func(self):
|
||||
return ispromember(self.request.user)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.userid = kwargs.get('userid',0)
|
||||
self.form_class = kwargs.get('form_class',self.form_class)
|
||||
self.initial = kwargs.get('initial', self.initial)
|
||||
self.selected = kwargs.get('selected', self.selected)
|
||||
self.name = kwargs.get('name', self.name)
|
||||
self.url = kwargs.get('url', self.url)
|
||||
self.analysis_class = kwargs.get('analysis_class', self.analysis_class)
|
||||
self.template_name = kwargs.get('template_name', self.template_name)
|
||||
self.chart = kwargs.get('chart', self.chart)
|
||||
|
||||
|
||||
self.breadcrumbs = breadcrumbs = [
|
||||
{
|
||||
'url': '/rowers/analysis',
|
||||
'name': 'Analysis'
|
||||
},
|
||||
{
|
||||
'url': self.url,
|
||||
'name': self.name,
|
||||
},
|
||||
]
|
||||
|
||||
def setup(self, request, *args, **kwargs):
|
||||
super(SavedAnalysisView, self).setup(request, *args, **kwargs)
|
||||
|
||||
|
||||
self.r = getrequestrower(request, userid=self.userid)
|
||||
if self.r is not None and not is_coach_user(self.request.user, self.r.user):
|
||||
raise PermissionDenied("You are not allowed to see analyses for this user")
|
||||
self.analyses = self.analysis_class.objects.filter(rower=self.r).order_by("-date","-id")
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
return render(request, self.template_name,
|
||||
{
|
||||
'breadcrumbs': self.breadcrumbs,
|
||||
'analyses': self.analyses,
|
||||
'rower': self.r,
|
||||
'the_script': self.script,
|
||||
'the_div': self.div,
|
||||
'selected': self.selected,
|
||||
})
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
form = self.form_class(request.POST)
|
||||
|
||||
if form.is_valid():
|
||||
cd = form.cleaned_data
|
||||
selected = cd['analyses']
|
||||
request.session['analyses'] = [a.id for a in selected]
|
||||
self.selected = cd['analyses']
|
||||
|
||||
request.session['analyses'] = [a.id for a in self.selected]
|
||||
# now should redirect to analysis
|
||||
script, div = instroke_multi_interactive_chart(selected)
|
||||
self.script, self.div = self.chart(self.selected)
|
||||
else:
|
||||
print(form.errors)
|
||||
|
||||
return render(request, self.template_name,
|
||||
{
|
||||
'breadcrumbs': self.breadcrumbs,
|
||||
'analyses': self.analyses,
|
||||
'rower': self.r,
|
||||
'the_script': self.script,
|
||||
'the_div': self.div,
|
||||
'selected': self.selected,
|
||||
})
|
||||
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url': '/rowers/analysis',
|
||||
'name': 'Analysis'
|
||||
},
|
||||
{
|
||||
'url': reverse('instrokeanalysis_view'),
|
||||
'name': 'In-Stroke Analysis',
|
||||
},
|
||||
]
|
||||
|
||||
return render(request, 'instroke_analysis.html',
|
||||
{
|
||||
'breadcrumbs': breadcrumbs,
|
||||
'analyses': analyses,
|
||||
'rower': r,
|
||||
'the_script': script,
|
||||
'the_div': div,
|
||||
'selected': selected,
|
||||
})
|
||||
|
||||
#instroke analysis delete view
|
||||
class InStrokeAnalysisDelete(DeleteView):
|
||||
|
||||
Reference in New Issue
Block a user