Private
Public Access
1
0

redirect to survey

This commit is contained in:
Sander Roosendaal
2020-01-08 22:27:49 +01:00
parent c03f3600b4
commit cfc61e8621
10 changed files with 164 additions and 9 deletions

View File

@@ -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):

View File

@@ -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,

View File

@@ -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

View 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 %}

View 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 %}

View File

@@ -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'),

View File

@@ -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

View File

@@ -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)

View File

@@ -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',
] ]

View File

@@ -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">