redirect to survey
This commit is contained in:
@@ -31,6 +31,12 @@ formaxlabels = axlabels.copy()
|
|||||||
formaxlabels.pop('None')
|
formaxlabels.pop('None')
|
||||||
parchoices = list(sorted(formaxlabels.items(), key = lambda x:x[1]))
|
parchoices = list(sorted(formaxlabels.items(), key = lambda x:x[1]))
|
||||||
|
|
||||||
|
class SurveyForm(forms.Form):
|
||||||
|
surveydone = forms.ChoiceField(
|
||||||
|
required=True,
|
||||||
|
choices=(('YES','YES'),('NO','NO')),
|
||||||
|
label='Will you take a 2 minute survey to help improve rowsandall?',
|
||||||
|
widget = forms.RadioSelect)
|
||||||
|
|
||||||
class FlexibleDecimalField(forms.DecimalField):
|
class FlexibleDecimalField(forms.DecimalField):
|
||||||
|
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ def getrower(user):
|
|||||||
|
|
||||||
def do_update(user,mode='rower',days=42):
|
def do_update(user,mode='rower',days=42):
|
||||||
r = getrower(user)
|
r = getrower(user)
|
||||||
|
|
||||||
startdate = timezone.now()-datetime.timedelta(days=days)
|
startdate = timezone.now()-datetime.timedelta(days=days)
|
||||||
|
|
||||||
# test if not something already done
|
# test if not something already done
|
||||||
now_date = timezone.now().strftime('%Y-%m-%d')
|
now_date = timezone.now().strftime('%Y-%m-%d')
|
||||||
ms = PowerTimeFitnessMetric.objects.filter(
|
ms = PowerTimeFitnessMetric.objects.filter(
|
||||||
user=user,
|
user=user,
|
||||||
@@ -37,11 +37,11 @@ def do_update(user,mode='rower',days=42):
|
|||||||
else:
|
else:
|
||||||
max_workout_id = max([m.last_workout for m in ms])
|
max_workout_id = max([m.last_workout for m in ms])
|
||||||
last_update_date = ms[0].date.strftime('%Y-%m-%d')
|
last_update_date = ms[0].date.strftime('%Y-%m-%d')
|
||||||
|
|
||||||
#last_update_date = max([m.date.strftime('%Y-%m-%d') for m in ms])
|
#last_update_date = max([m.date.strftime('%Y-%m-%d') for m in ms])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if mode == 'rower':
|
if mode == 'rower':
|
||||||
workouts = Workout.objects.filter(
|
workouts = Workout.objects.filter(
|
||||||
user=r,
|
user=r,
|
||||||
@@ -59,7 +59,7 @@ def do_update(user,mode='rower',days=42):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
max_id = 0
|
max_id = 0
|
||||||
|
|
||||||
|
|
||||||
if last_update_date < now_date and max_workout_id < max_id:
|
if last_update_date < now_date and max_workout_id < max_id:
|
||||||
job = myqueue(queuelow,
|
job = myqueue(queuelow,
|
||||||
handle_updatefitnessmetric,
|
handle_updatefitnessmetric,
|
||||||
@@ -73,7 +73,7 @@ def do_update(user,mode='rower',days=42):
|
|||||||
class PowerTimeFitnessMetricMiddleWare(object):
|
class PowerTimeFitnessMetricMiddleWare(object):
|
||||||
def __init__(self, get_response):
|
def __init__(self, get_response):
|
||||||
self.get_response = get_response
|
self.get_response = get_response
|
||||||
|
|
||||||
def __call__(self, request):
|
def __call__(self, request):
|
||||||
# Code to be executed before the view is called
|
# Code to be executed before the view is called
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
@@ -83,7 +83,7 @@ class PowerTimeFitnessMetricMiddleWare(object):
|
|||||||
response = self.get_response(request)
|
response = self.get_response(request)
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
|
|
||||||
|
|
||||||
@@ -98,8 +98,28 @@ allowed_paths = [
|
|||||||
'/rowers/me/gdpr-optin-confirm'
|
'/rowers/me/gdpr-optin-confirm'
|
||||||
'/rowers/exportallworkouts/',
|
'/rowers/exportallworkouts/',
|
||||||
'/rowers/exportallworkouts',
|
'/rowers/exportallworkouts',
|
||||||
|
'/rowers/survey/'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
class SurveyMiddleWare(object):
|
||||||
|
def __init__(self, get_response):
|
||||||
|
self.get_response = get_response
|
||||||
|
|
||||||
|
def __call__(self, request):
|
||||||
|
if request.user.is_authenticated and request.path not in allowed_paths:
|
||||||
|
r = getrower(request.user)
|
||||||
|
nexturl = request.path
|
||||||
|
if 'survey' in nexturl:
|
||||||
|
nexturl = '/rowers/list-workouts'
|
||||||
|
if not r.surveydone:
|
||||||
|
return redirect(
|
||||||
|
'/rowers/survey/?next=%s' % nexturl
|
||||||
|
)
|
||||||
|
|
||||||
|
response = self.get_response(request)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
class GDPRMiddleWare(object):
|
class GDPRMiddleWare(object):
|
||||||
def __init__(self, get_response):
|
def __init__(self, get_response):
|
||||||
self.get_response = get_response
|
self.get_response = get_response
|
||||||
@@ -137,7 +157,7 @@ class RowerPlanMiddleWare(object):
|
|||||||
r.paidplan = basicplans[0]
|
r.paidplan = basicplans[0]
|
||||||
r.save()
|
r.save()
|
||||||
# remove from Free Coach groups
|
# remove from Free Coach groups
|
||||||
|
|
||||||
# send email
|
# send email
|
||||||
job = myqueue(queue,
|
job = myqueue(queue,
|
||||||
handle_sendemail_expired,
|
handle_sendemail_expired,
|
||||||
|
|||||||
@@ -730,6 +730,8 @@ class Rower(models.Model):
|
|||||||
# Privacy Data
|
# Privacy Data
|
||||||
gdproptin = models.BooleanField(default=False)
|
gdproptin = models.BooleanField(default=False)
|
||||||
gdproptindate = models.DateTimeField(blank=True,null=True)
|
gdproptindate = models.DateTimeField(blank=True,null=True)
|
||||||
|
surveydone = models.BooleanField(default=False)
|
||||||
|
surveydonedate = models.DateTimeField(blank=True,null=True)
|
||||||
|
|
||||||
|
|
||||||
# Heart Rate Zone data
|
# Heart Rate Zone data
|
||||||
|
|||||||
47
rowers/templates/survey.html
Normal file
47
rowers/templates/survey.html
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{% extends "newbase.html" %}
|
||||||
|
{% load staticfiles %}
|
||||||
|
{% load rowerfilters %}
|
||||||
|
|
||||||
|
{% block title %}File loading{% endblock %}
|
||||||
|
|
||||||
|
{% block meta %}
|
||||||
|
<script type='text/javascript'
|
||||||
|
src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'>
|
||||||
|
</script>
|
||||||
|
<script type='text/javascript'
|
||||||
|
src='https://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js'>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
var frm = $("#surveyform")
|
||||||
|
|
||||||
|
frm.submit(function(e) {
|
||||||
|
// e.preventDefault()
|
||||||
|
const formData = new FormData(e.target);
|
||||||
|
console.log(formData.get('surveydone'));
|
||||||
|
if (formData.get('surveydone')=='YES') {
|
||||||
|
var a = window.open('https://wp.me/P8g86e-Bs', "survey");
|
||||||
|
a.focus();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block main %}
|
||||||
|
<ul class="main-content">
|
||||||
|
<li class="grid_4">
|
||||||
|
<form enctype="multipart/form-data" method="post" id="surveyform">
|
||||||
|
{% csrf_token %}
|
||||||
|
<table>
|
||||||
|
{{ form.as_table }}
|
||||||
|
</table>
|
||||||
|
<input type="submit" name="submit" value="SUBMIT">
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block sidebar %}
|
||||||
|
{% include 'menu_profile.html' %}
|
||||||
|
{% endblock %}
|
||||||
48
rowers/templates/survey2.html
Normal file
48
rowers/templates/survey2.html
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{% extends "newbase.html" %}
|
||||||
|
{% load staticfiles %}
|
||||||
|
{% load rowerfilters %}
|
||||||
|
|
||||||
|
{% block title %}Rowsandall {% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block meta %}
|
||||||
|
<script type='text/javascript'
|
||||||
|
src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
var frm = $("#surveyform")
|
||||||
|
|
||||||
|
frm.submit(function(e) {
|
||||||
|
e.preventDefault()
|
||||||
|
const formData = new FormData(e.target);
|
||||||
|
console.log(formData);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block main %}
|
||||||
|
|
||||||
|
<ul class="main-content">
|
||||||
|
<li>
|
||||||
|
<form enctype="multipart/form-data" method="post" id="surveyform">
|
||||||
|
{% csrf_token %}
|
||||||
|
<table>
|
||||||
|
{{ form.as_table }}
|
||||||
|
</table>
|
||||||
|
<input type="submit" name="submit" value="SUBMIT">
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% block sidebar %}
|
||||||
|
{% include 'menu_profile.html' %}
|
||||||
|
{% endblock %}
|
||||||
@@ -449,6 +449,7 @@ urlpatterns = [
|
|||||||
re_path(r'^user-multiflex-data/$',views.multiflex_data,name='multiflex_data'),
|
re_path(r'^user-multiflex-data/$',views.multiflex_data,name='multiflex_data'),
|
||||||
re_path(r'^me/deactivate/$',views.deactivate_user,name='deactivate_user'),
|
re_path(r'^me/deactivate/$',views.deactivate_user,name='deactivate_user'),
|
||||||
re_path(r'^me/delete/$',views.remove_user,name='remove_user'),
|
re_path(r'^me/delete/$',views.remove_user,name='remove_user'),
|
||||||
|
re_path(r'^survey/$',views.survey,name='survey'),
|
||||||
re_path(r'^me/gdpr-optin-confirm/?/$',views.user_gdpr_confirm,name='user_gdpr_confirm'),
|
re_path(r'^me/gdpr-optin-confirm/?/$',views.user_gdpr_confirm,name='user_gdpr_confirm'),
|
||||||
re_path(r'^me/gdpr-optin-confirm/$',views.user_gdpr_confirm,name='user_gdpr_confirm'),
|
re_path(r'^me/gdpr-optin-confirm/$',views.user_gdpr_confirm,name='user_gdpr_confirm'),
|
||||||
re_path(r'^me/gdpr-optin/?/$',views.user_gdpr_optin,name='user_gdpr_optin'),
|
re_path(r'^me/gdpr-optin/?/$',views.user_gdpr_optin,name='user_gdpr_optin'),
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ from rowers.forms import (
|
|||||||
MetricsForm,DisqualificationForm,disqualificationreasons,
|
MetricsForm,DisqualificationForm,disqualificationreasons,
|
||||||
disqualifiers,SearchForm,BillingForm,PlanSelectForm,
|
disqualifiers,SearchForm,BillingForm,PlanSelectForm,
|
||||||
VideoAnalysisCreateForm,WorkoutSingleSelectForm,
|
VideoAnalysisCreateForm,WorkoutSingleSelectForm,
|
||||||
VideoAnalysisMetricsForm,
|
VideoAnalysisMetricsForm,SurveyForm,
|
||||||
)
|
)
|
||||||
|
|
||||||
from django.urls import reverse, reverse_lazy
|
from django.urls import reverse, reverse_lazy
|
||||||
|
|||||||
@@ -5,6 +5,31 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
from rowers.views.statements import *
|
from rowers.views.statements import *
|
||||||
|
|
||||||
|
@login_required()
|
||||||
|
def survey(request):
|
||||||
|
|
||||||
|
r = getrower(request.user)
|
||||||
|
|
||||||
|
surveyform = SurveyForm()
|
||||||
|
|
||||||
|
if request.method == 'POST':
|
||||||
|
form = SurveyForm(request.POST)
|
||||||
|
r.surveydone = True
|
||||||
|
r.surveydonedate = timezone.now()
|
||||||
|
r.save()
|
||||||
|
|
||||||
|
nexturl = request.GET.get('next')
|
||||||
|
return HttpResponseRedirect(nexturl)
|
||||||
|
|
||||||
|
context = {
|
||||||
|
'teams':get_my_teams(request.user),
|
||||||
|
'rower':r,
|
||||||
|
'form':surveyform,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return render(request,'survey.html',context)
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
def start_trial_view(request):
|
def start_trial_view(request):
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ MIDDLEWARE = [
|
|||||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
'tz_detect.middleware.TimezoneMiddleware',
|
'tz_detect.middleware.TimezoneMiddleware',
|
||||||
'rowers.middleware.GDPRMiddleWare',
|
'rowers.middleware.GDPRMiddleWare',
|
||||||
|
'rowers.middleware.SurveyMiddleWare',
|
||||||
'rowers.middleware.PowerTimeFitnessMetricMiddleWare',
|
'rowers.middleware.PowerTimeFitnessMetricMiddleWare',
|
||||||
'rowers.middleware.RowerPlanMiddleWare',
|
'rowers.middleware.RowerPlanMiddleWare',
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -327,6 +327,11 @@
|
|||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% block ad %}
|
{% block ad %}
|
||||||
|
<div class="site-announcement-box">
|
||||||
|
<div class="site-announcement-white">
|
||||||
|
<a href="https://wp.me/P8g86e-Bs">Please take 2 minutes to fill out the survey!</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div id="id_blogs">
|
<div id="id_blogs">
|
||||||
</div>
|
</div>
|
||||||
<a href="https://pryglrowing.com">
|
<a href="https://pryglrowing.com">
|
||||||
|
|||||||
Reference in New Issue
Block a user