From a68e5710108677920f488e847e2579ee4177ec98 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 15 Sep 2022 11:10:31 +0200 Subject: [PATCH 1/3] fix #640 double email when registered participant is also a follower --- rowers/tests/test_races.py | 13 +++++++++++++ rowers/views/racesviews.py | 17 ++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/rowers/tests/test_races.py b/rowers/tests/test_races.py index 5e1ad403..2da85163 100644 --- a/rowers/tests/test_races.py +++ b/rowers/tests/test_races.py @@ -69,6 +69,15 @@ class ChallengesTest(TestCase): gdproptindate=timezone.now(), rowerplan='basic') + self.u3 = UserFactory() + self.follower = Rower.objects.create(user=self.u3, + birthdate=datetime.datetime.now()-datetime.timedelta(days=28*365), + gdproptin=True,surveydone=True, + gdproptindate=timezone.now(), + rowerplan='basic') + + + self.c = Client() self.user_workouts = WorkoutFactory.create_batch(5, user=self.r) self.factory = RequestFactory() @@ -160,6 +169,10 @@ class ChallengesTest(TestCase): ) self.SpeedOrder.save() + flw = VirtualRaceFollower.objects.create(race=self.SpeedOrder, + user=self.u3, + emailaddress='bla@bla.com') + self.result = VirtualRaceResult( userid = self.u2.id, username = self.u2.username, diff --git a/rowers/views/racesviews.py b/rowers/views/racesviews.py index 8bf4efd1..3ced8b20 100644 --- a/rowers/views/racesviews.py +++ b/rowers/views/racesviews.py @@ -1873,6 +1873,8 @@ def virtualevent_addboat_view(request, id=0): otherrecords = resultobj.objects.filter( race=race).exclude(userid=r.id) + registereduserids = [otherrecord.userid for otherrecord in otherrecords] + for otherrecord in otherrecords: try: otheruser = Rower.objects.get(id=otherrecord.userid) @@ -1892,19 +1894,20 @@ def virtualevent_addboat_view(request, id=0): followers = VirtualRaceFollower.objects.filter(race=race) - for follower in followers: # pragma: no cover + for follower in followers: othername = '' if follower.user: othername = follower.user.first_name+' '+follower.user.last_name registeredname = r.user.first_name+' '+r.user.last_name email = follower.emailaddress - _ = myqueue( - queue, - handle_sendemail_raceregistration, - email, othername, - registeredname, race.name, race.id, - ) + if follower.user.id not in registereduserids: + _ = myqueue( + queue, + handle_sendemail_raceregistration, + email, othername, + registeredname, race.name, race.id, + ) url = reverse('virtualevent_view', kwargs={ From 6beae2ca376c4db99debeb4552baf27b546b89b6 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 15 Sep 2022 12:11:06 +0200 Subject: [PATCH 2/3] adding athlete names to analysis --- rowers/interactiveplots.py | 16 +++++++++++++ rowers/templates/statsdiv.html | 10 +++----- rowers/templates/user_analysis_select.html | 2 +- rowers/urls.py | 2 ++ rowers/views/analysisviews.py | 28 ++++++++++++++++++++++ 5 files changed, 50 insertions(+), 8 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index faad59d2..063ff6f0 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -365,6 +365,9 @@ def interactive_boxchart(datadf, fieldname, extratitle='', plot.y_range = yrange1 plot.sizing_mode = 'stretch_both' + if extratitle: + plot.title.text = extratitle + plot.xaxis.axis_label = 'Date' plot.yaxis.axis_label = axlabels[fieldname] @@ -1970,6 +1973,7 @@ def performance_chart(user, startdate=None, enddate=None, kfitness=42, kfatigue= def interactive_histoall(theworkouts, histoparam, includereststrokes, spmmin=0, spmmax=55, + extratitle='', workmin=0, workmax=1500): TOOLS = 'save,pan,box_zoom,wheel_zoom,reset,tap,hover,crosshair' @@ -2013,6 +2017,10 @@ def interactive_histoall(theworkouts, histoparam, includereststrokes, toolbar_location="above" ) + if extratitle: + plot.title.text = extratitle + + # add watermark watermarkurl = "/static/img/logo7.png" watermarkrange = Range1d(start=0, end=1) @@ -4470,6 +4478,9 @@ def interactive_multiflex(datadf, xparam, yparam, groupby, extratitle='', gr=groupname, ) + if extratitle is not None: + title = title+' '+extratitle + if xparam == 'cumdist': # pragma: no cover res = make_cumvalues(datadf[xparam]) datadf[xparam] = res[0] @@ -4659,6 +4670,7 @@ def interactive_cum_flex_chart2(theworkouts, promember=0, yparam1='power', yparam2='spm', workstrokesonly=False, + extratitle='', trendline=False): # datadf = dataprep.smalldataprep(theworkouts,xparam,yparam1,yparam2) @@ -4789,6 +4801,10 @@ def interactive_cum_flex_chart2(theworkouts, promember=0, plot.extra_x_ranges = {"watermark": watermarkrange} plot.sizing_mode = 'stretch_both' + if extratitle: + plot.title.text = extratitle + + plot.image_url([watermarkurl], watermarkx, watermarky, watermarkw, watermarkh, global_alpha=watermarkalpha, diff --git a/rowers/templates/statsdiv.html b/rowers/templates/statsdiv.html index a4072f22..767c99b4 100644 --- a/rowers/templates/statsdiv.html +++ b/rowers/templates/statsdiv.html @@ -1,6 +1,6 @@ {% if stats %} -

Statistics

+

Statistics {{ extratitle }}

@@ -28,7 +28,7 @@ {% endfor %} -
+ {% endif %} @@ -67,10 +67,6 @@ {% endfor %} - + {% endif %} - - - - diff --git a/rowers/templates/user_analysis_select.html b/rowers/templates/user_analysis_select.html index 19e18d75..bd6f982a 100644 --- a/rowers/templates/user_analysis_select.html +++ b/rowers/templates/user_analysis_select.html @@ -528,7 +528,7 @@