From fcc74d0625035d34fc8b13212defce313131809d Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 3 Dec 2018 21:28:51 +0100 Subject: [PATCH 1/3] additional grid element on race page --- rowers/templates/virtualevent.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rowers/templates/virtualevent.html b/rowers/templates/virtualevent.html index 430aa7e7..b9fe9935 100644 --- a/rowers/templates/virtualevent.html +++ b/rowers/templates/virtualevent.html @@ -128,6 +128,8 @@ data-text="@rowsandall #rowingdata Participate in Indoor Rowing virtual race '{{

+ +
  • {% if request.user.is_anonymous %}

    From 6f4ba95337ba697d3f40f4e0764b716cb456e248 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 7 Dec 2018 08:56:38 +0100 Subject: [PATCH 2/3] prevent users to use 0 as planned session value --- rowers/models.py | 11 +++++++++++ rowers/plannedsessions.py | 7 +++++-- rowers/views.py | 3 +++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/rowers/models.py b/rowers/models.py index 09a61c8b..0d06135a 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -1764,6 +1764,9 @@ class PlannedSession(models.Model): return stri def save(self, *args, **kwargs): + if self.sessionvalue <= 0: + self.sessionvalue = 1 + # sort units if self.sessionmode == 'distance': if self.sessionunit not in ['m','km']: @@ -2005,6 +2008,14 @@ class IndoorVirtualRaceForm(ModelForm): cd = self.cleaned_data timezone_str = cd['timezone'] + value = cd['sessionvalue'] + if value <= 0: + raise forms.ValidationError('The Value must be a positive, non-zero value') + + unit = cd['sessionunit'] + if unit == 'm' and value < 100: + raise forms.ValidationError('Minimum distance is 100m') + start_time = cd['start_time'] if start_time is None: raise forms.ValidationError( diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index c152305c..7babb4f7 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -327,7 +327,10 @@ def is_session_complete_ws(ws,ps): if not completiondate and score>=cratiomin*value: completiondate = w.date - ratio = score/float(value) + try: + ratio = score/float(value) + except ZeroDivisionError: + ratio = 0 verdict = 'better than nothing' @@ -581,7 +584,7 @@ def get_sessions(r,startdate=date.today(), startdate__lte=enddate, enddate__gte=startdate, ).order_by("preferreddate","startdate","enddate").exclude( - sessiontype='race') + sessiontype='race').exclude(sessiontype='indoorrace') return sps diff --git a/rowers/views.py b/rowers/views.py index 9030caba..b00e6e38 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -15583,6 +15583,9 @@ def plannedsession_edit_view(request,id=0,userid=0): if ps.manager != request.user: raise PermissionDenied("You are not allowed to edit this planned session") + + if ps.sessiontype in ['race','indoorrace']: + raise PermissionDenied("You are not allowed to edit this planned session because it is a race") if ps.team.all() or len(ps.rower.all())>1: url = reverse(plannedsession_teamedit_view, From f87a3a46242807a7fd96600435fc72152ef9939b Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 7 Dec 2018 09:20:44 +0100 Subject: [PATCH 3/3] setting logout on browser close --- rowsandall_app/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index ab69eeca..93bfb4a4 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -306,6 +306,7 @@ RQ_QUEUES = { #SESSION_ENGINE = "django.contrib.sessions.backends.cached_db" SESSION_ENGINE = "django.contrib.sessions.backends.cache" SESSION_SAVE_EVERY_REQUEST = True +SESSION_EXPIRE_AT_BROWSER_CLOSE = True # admin stuff for error reporting SERVER_EMAIL='admin@rowsandall.com'