From ba7c746ac24a3e1409a1b40b23ee828b9d222447 Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Thu, 4 Jun 2020 09:36:16 +0200
Subject: [PATCH 1/3] temp filke
---
rowers/tests/testdata/.~lock.boatcoach.csv# | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 rowers/tests/testdata/.~lock.boatcoach.csv#
diff --git a/rowers/tests/testdata/.~lock.boatcoach.csv# b/rowers/tests/testdata/.~lock.boatcoach.csv#
deleted file mode 100644
index bf9f5f8b..00000000
--- a/rowers/tests/testdata/.~lock.boatcoach.csv#
+++ /dev/null
@@ -1 +0,0 @@
-,sander,sander-pc,04.06.2020 09:09,file:///home/sander/.config/libreoffice/4;
\ No newline at end of file
From a21da7472eabf200966135201c392902b3cbe118 Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Thu, 4 Jun 2020 20:55:31 +0200
Subject: [PATCH 2/3] removing try / except TP
---
rowers/tpstuff.py | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/rowers/tpstuff.py b/rowers/tpstuff.py
index fc74ac9e..86cd1340 100644
--- a/rowers/tpstuff.py
+++ b/rowers/tpstuff.py
@@ -67,14 +67,11 @@ def get_token(code):
'Content-Type': 'application/x-www-form-urlencoded',
}
- try:
- response = requests.post(
- "https://oauth.trainingpeaks.com/oauth/token",
- data=post_data
- )
- except:
- return 0,0,0
-
+ response = requests.post(
+ "https://oauth.trainingpeaks.com/oauth/token",
+ data=post_data
+ )
+
try:
token_json = response.json()
From 14e4b089fa2e9cba30d0db2301c45a5e7d39b0aa Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Thu, 4 Jun 2020 21:27:25 +0200
Subject: [PATCH 3/3] adding opt in to social media
---
rowers/models.py | 9 +++--
rowers/tasks.py | 32 +++++++++++++++++
rowers/templates/raceoptoutsocialmedia.html | 24 +++++++++++++
rowers/templates/virtualeventregister.html | 7 +++-
rowers/views/racesviews.py | 40 +++++++++++++++++++--
rowers/views/statements.py | 1 +
6 files changed, 107 insertions(+), 6 deletions(-)
create mode 100644 rowers/templates/raceoptoutsocialmedia.html
diff --git a/rowers/models.py b/rowers/models.py
index c7cbf391..430ffffc 100644
--- a/rowers/models.py
+++ b/rowers/models.py
@@ -2973,6 +2973,9 @@ class VirtualRaceResult(models.Model):
entrycategory = models.ForeignKey(CourseStandard,null=True,on_delete=models.SET_NULL,
verbose_name='Group')
+ acceptsocialmedia = models.BooleanField(default=True,
+ verbose_name = 'I agree with sharing my name in challenge related social media posts (unchecking this does not prevent you from participation)')
+
def __str__(self):
rr = Rower.objects.get(id=self.userid)
name = '{u1} {u2}'.format(
@@ -3048,6 +3051,8 @@ class IndoorVirtualRaceResult(models.Model):
verbose_name = 'Receive challenge notifications by email')
entrycategory = models.ForeignKey(CourseStandard,null=True,on_delete=models.SET_NULL,
verbose_name='Group')
+ acceptsocialmedia = models.BooleanField(default=True,
+ verbose_name = 'I agree with sharing my name in challenge related social media posts (unchecking this does not prevent you from participation)')
def __str__(self):
rr = Rower.objects.get(id=self.userid)
@@ -3097,7 +3102,7 @@ class IndoorVirtualRaceResultForm(ModelForm):
class Meta:
model = IndoorVirtualRaceResult
fields = ['teamname','weightcategory','boatclass','age','adaptiveclass',
- 'entrycategory'
+ 'entrycategory','acceptsocialmedia'
]
@@ -3115,7 +3120,7 @@ class VirtualRaceResultForm(ModelForm):
model = VirtualRaceResult
fields = ['teamname','weightcategory','boatclass','boattype',
'age','adaptiveclass',
- 'entrycategory'
+ 'entrycategory','acceptsocialmedia'
]
diff --git a/rowers/tasks.py b/rowers/tasks.py
index f2408632..b91faff1 100644
--- a/rowers/tasks.py
+++ b/rowers/tasks.py
@@ -1116,6 +1116,38 @@ def handle_sendemail_raceregistration(
return 1
+@app.task
+def handle_sendemail_optout(
+ useremail, username, registeredname, racename, raceid, **kwargs):
+
+ if 'debug' in kwargs:
+ debug = kwargs['debug']
+ else:
+ debug = True
+
+ subject = "{name} has opted out from social media posts around challenge {n}".format(
+ n = racename,
+ name = registeredname
+ )
+
+ from_email = 'Rowsandall '
+
+ d = {
+ 'username':username,
+ 'registeredname':registeredname,
+ 'siteurl':siteurl,
+ 'racename':racename,
+ 'raceid':raceid,
+ }
+
+ res = send_template_email(from_email,[useremail],
+ subject,
+ 'raceoptoutsocialmedia.html',
+ d,**kwargs)
+
+ return 1
+
+
@app.task
def handle_sendemail_racesubmission(
useremail, username, registeredname, racename, raceid, **kwargs):
diff --git a/rowers/templates/raceoptoutsocialmedia.html b/rowers/templates/raceoptoutsocialmedia.html
new file mode 100644
index 00000000..b3c1a17b
--- /dev/null
+++ b/rowers/templates/raceoptoutsocialmedia.html
@@ -0,0 +1,24 @@
+{% extends "emailbase.html" %}
+{% block body %}
+
Dear {{ username }},
+
+
+ {{ registeredname }} has opted out from Social Media posts regarding the
+ virtual challenge {{ racename }}
+
+
+
+
+ If you are making any posts to Social Media about the event, you have to
+ do this without mentioning their name.
+
+
+
+ As the organizer of the virtual challenge it is your responsibility to
+ respect this. Rowsandall.com is not responsible for any damage caused.
+
+
+
+ Best Regards, the Rowsandall Team
+
+{% endblock %}
diff --git a/rowers/templates/virtualeventregister.html b/rowers/templates/virtualeventregister.html
index 6a925ac7..d5c2ee00 100644
--- a/rowers/templates/virtualeventregister.html
+++ b/rowers/templates/virtualeventregister.html
@@ -35,6 +35,11 @@
as a Male crew. Check the "Mixed gender" check box to register as a
mixed gender crew (except for 1x where this check box does nothing).
+
+ The challenge organizer may want to publish about the challenge on social media and
+ use your name in the results. If you do not want your name to appear on social media,
+ you can let this know by unchecking the check box in the form.
+
{% if race.coursestandards %}
This race uses standard times and limits the race groups to those where
standard times exist. The "Group" form choice will overrule other selections you
@@ -52,7 +57,7 @@
{% csrf_token %}
-
+
diff --git a/rowers/views/racesviews.py b/rowers/views/racesviews.py
index e2b06a4d..09a3cb0e 100644
--- a/rowers/views/racesviews.py
+++ b/rowers/views/racesviews.py
@@ -1518,6 +1518,7 @@ def virtualevent_addboat_view(request,id=0):
adaptiveclass = cd['adaptiveclass']
age = cd['age']
mix = cd['mix']
+ acceptsocialmedia = cd['acceptsocialmedia']
sex = r.sex
if mix:
@@ -1612,12 +1613,22 @@ def virtualevent_addboat_view(request,id=0):
entrycategory=coursestandard,
sex=sex,
age=age,
+ acceptsocialmedia=acceptsocialmedia,
)
record.save()
add_rower_race(r,race)
+ # send email about opt out
+ if not acceptsocialmedia:
+ job = myqueue(
+ queue,
+ handle_sendemail_optout,
+ race.manager.email,race.manager.first_name,
+ r.user.first_name+' '+r.user.last_name,
+ race.name,race.id,
+ )
messages.info(
@@ -1767,6 +1778,7 @@ def virtualevent_register_view(request,id=0):
adaptiveclass = cd['adaptiveclass']
age = cd['age']
mix = cd['mix']
+ acceptsocialmedia = cd['acceptsocialmedia']
sex = r.sex
if mix:
@@ -1829,13 +1841,23 @@ def virtualevent_register_view(request,id=0):
coursecompleted=False,
sex=sex,
age=age,
- entrycategory=coursestandard,
- referencespeed=referencespeed,
+ entrycategory=coursestandard,
+ referencespeed=referencespeed,
+ acceptsocialmedia = acceptsocialmedia,
)
record.save()
add_rower_race(r,race)
+ # send email about opt out
+ if not acceptsocialmedia:
+ job = myqueue(
+ queue,
+ handle_sendemail_optout,
+ race.manager.email,race.manager.first_name,
+ r.user.first_name+' '+r.user.last_name,
+ race.name,race.id,
+ )
# remove followers
myfollows = VirtualRaceFollower.objects.filter(user=r.user,race=race)
@@ -2028,6 +2050,7 @@ def indoorvirtualevent_register_view(request,id=0):
adaptiveclass = cd['adaptiveclass']
age = cd['age']
boatclass = cd['boatclass']
+ acceptsocialmedia = cd['acceptsocialmedia']
sex = r.sex
@@ -2086,13 +2109,24 @@ def indoorvirtualevent_register_view(request,id=0):
sex=sex,
age=age,
entrycategory=coursestandard,
- referencespeed=referencespeed
+ referencespeed=referencespeed,
+ acceptsocialmedia=acceptsocialmedia,
)
record.save()
add_rower_race(r,race)
+ # send email about opt out
+ if not acceptsocialmedia:
+ job = myqueue(
+ queue,
+ handle_sendemail_optout,
+ race.manager.email,race.manager.first_name,
+ r.user.first_name+' '+r.user.last_name,
+ race.name,race.id,
+ )
+
# remove followers
myfollows = VirtualRaceFollower.objects.filter(user=r.user,race=race)
for f in myfollows:
diff --git a/rowers/views/statements.py b/rowers/views/statements.py
index 2bd13221..24c3290d 100644
--- a/rowers/views/statements.py
+++ b/rowers/views/statements.py
@@ -211,6 +211,7 @@ from rowers.tasks import (
handle_sendemail_userdeleted,
handle_sendemail_raceregistration,
handle_sendemail_racesubmission,
+ handle_sendemail_optout,
handle_sendemail_ical,
)