From 00e38070621ede9969f16283be4c2c465c890f6f Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 16 Dec 2022 19:42:44 +0100 Subject: [PATCH] ftp set stuff --- rowers/middleware.py | 23 ++++++++++++++++++++++- rowers/models.py | 1 + rowers/views/userviews.py | 6 ++++++ rowsandall_app/settings.py | 1 + 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/rowers/middleware.py b/rowers/middleware.py index 5f7d9c43..7c1a0164 100644 --- a/rowers/middleware.py +++ b/rowers/middleware.py @@ -33,7 +33,8 @@ allowed_paths = [ '/rowers/me/gdpr-optin-confirm' '/rowers/exportallworkouts/', '/rowers/exportallworkouts', - '/rowers/survey/' + '/rowers/survey/', + '/rowers/me/prefs/' ] @@ -58,6 +59,26 @@ class SurveyMiddleWare(object): return response +class FTPMiddleWare(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 'ftp' in nexturl: # pragma: no cover + nexturl = '/rowers/me/prefs/' + mustsetftp = not r.ftpset + if mustsetftp: # pragma: no cover + return redirect( + '/rowers/me/prefs/?next=%s' % nexturl + ) + + response = self.get_response(request) + + return response + class GDPRMiddleWare(object): def __init__(self, get_response): diff --git a/rowers/models.py b/rowers/models.py index 51848378..feeffc02 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -919,6 +919,7 @@ class Rower(models.Model): # Privacy Data gdproptin = models.BooleanField(default=False) gdproptindate = models.DateTimeField(blank=True, null=True) + ftpset = models.BooleanField(default=False) surveydone = models.BooleanField(default=False) surveydonedate = models.DateTimeField(blank=True, null=True) diff --git a/rowers/views/userviews.py b/rowers/views/userviews.py index 144d2d33..93aded31 100644 --- a/rowers/views/userviews.py +++ b/rowers/views/userviews.py @@ -575,6 +575,12 @@ def rower_simpleprefs_view(request, userid=0): if form.is_valid(): form.save(commit=True) messages.info(request,'FTP and OTW FTP saved') + if not r.ftpset: + r.ftpset = True + r.save() + nexturl = request.GET.get('next', '/rowers/list-workouts/') + return HttpResponseRedirect(nexturl) + return render(request, 'rower_simplepreferences.html', { diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index ac70ff84..c9405151 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -107,6 +107,7 @@ MIDDLEWARE = [ 'rowers.middleware.GDPRMiddleWare', # 'rowers.middleware.PowerTimeFitnessMetricMiddleWare', 'rowers.middleware.RowerPlanMiddleWare', + 'rowers.middleware.FTPMiddleWare', ] ROOT_URLCONF = 'rowsandall_app.urls'