From ee7a83a76b5d226491a6e3b3e55c0981f37917fd Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 20 Feb 2019 20:10:39 +0100 Subject: [PATCH 1/5] error fixes plus new coachoffer attribute --- rowers/models.py | 8 +++++++- rowers/teams.py | 13 +++++++++---- rowers/templates/coachofferacceptedemail.html | 2 +- rowers/templates/coachofferrejectedemail.html | 2 +- .../templates/coachrequestacceptedemail.html | 2 +- .../templates/coachrequestrejectedemail.html | 2 +- rowers/tests/testdata/testdata.csv.gz | Bin 12525 -> 12525 bytes rowers/views/userviews.py | 5 +++++ 8 files changed, 25 insertions(+), 9 deletions(-) diff --git a/rowers/models.py b/rowers/models.py index 500c5ad9..97cad63b 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -706,6 +706,7 @@ class Rower(models.Model): clubsize = models.IntegerField(default=0) protrialexpires = models.DateField(default=datetime.date(1970,1,1)) plantrialexpires = models.DateField(default=datetime.date(1970,1,1)) + offercoaching = models.BooleanField(default=False, verbose_name='Offer Remote Coaching') # Privacy Data @@ -3186,7 +3187,8 @@ class AccountRowerForm(ModelForm): 'getemailnotifications', 'getimportantemails', 'defaulttimezone','showfavoritechartnotes', - 'defaultlandingpage'] + 'defaultlandingpage', + 'offercoaching'] widgets = { 'birthdate': SelectDateWidget( @@ -3194,6 +3196,10 @@ class AccountRowerForm(ModelForm): timezone.now().year-100,timezone.now().year-10)), } + def __init__(self, *args, **kwargs): + super(AccountRowerForm, self).__init__(*args, **kwargs) + if self.instance.rowerplan != 'coach': + self.fields.pop('offercoaching') def clean_email(self): email = self.cleaned_data.get('email') diff --git a/rowers/teams.py b/rowers/teams.py index 78e51d0a..7f0e01a6 100644 --- a/rowers/teams.py +++ b/rowers/teams.py @@ -1,3 +1,4 @@ + # All the Team related methods # Python @@ -28,6 +29,10 @@ from rowers.tasks import ( handle_sendemail_request_reject,handle_sendemail_invite_reject, handle_sendemail_invite_accept,handle_sendemail_team_removed, handle_sendemail_coachrequest,handle_sendemail_coacheerequest, + handle_sendemail_coachoffer_rejected, + handle_sendemail_coachoffer_accepted, + handle_sendemail_coachrequest_rejected, + handle_sendemail_coachrequest_accepted, ) from rowers.models import ValidationError @@ -657,7 +662,7 @@ def send_coachoffer_rejected_email(rekwest): coachname = rekwest.coach.user.first_name + " " + rekwest.coach.user.last_name coachemail = rekwest.coach.user.email - name = rekwest.user.first_name + " " + rekwst.user.last_name + name = rekwest.user.first_name + " " + rekwest.user.last_name res = myqueue(queuehigh, handle_sendemail_coachoffer_rejected, @@ -667,7 +672,7 @@ def send_coachrequest_rejected_email(rekwest): coachname = rekwest.coach.user.first_name + " " + rekwest.coach.user.last_name email = rekwest.user.email - name = rekwest.user.first_name + " " + rekwst.user.last_name + name = rekwest.user.first_name + " " + rekwest.user.last_name res = myqueue(queuehigh, handle_sendemail_coachrequest_rejected, @@ -677,7 +682,7 @@ def send_coachrequest_accepted_email(rekwest): coachname = rekwest.coach.user.first_name + " " + rekwest.coach.user.last_name email = rekwest.user.email - name = rekwest.user.first_name + " " + rekwst.user.last_name + name = rekwest.user.first_name + " " + rekwest.user.last_name res = myqueue(queuehigh, handle_sendemail_coachrequest_accepted, @@ -688,7 +693,7 @@ def send_coachoffer_accepted_email(rekwest): coachname = rekwest.coach.user.first_name + " " + rekwest.coach.user.last_name coachemail = rekwest.coach.user.email - name = rekwest.user.first_name + " " + rekwst.user.last_name + name = rekwest.user.first_name + " " + rekwest.user.last_name res = myqueue(queuehigh, handle_sendemail_coachoffer_accepted, diff --git a/rowers/templates/coachofferacceptedemail.html b/rowers/templates/coachofferacceptedemail.html index 33f7e77a..dbba5cf9 100644 --- a/rowers/templates/coachofferacceptedemail.html +++ b/rowers/templates/coachofferacceptedemail.html @@ -1,7 +1,7 @@ {% extends "emailbase.html" %} {% block body %} -

Dear {{ coachname }},

+

Dear {{ coach }},

{{ name }} has accepted your coaching offer on diff --git a/rowers/templates/coachofferrejectedemail.html b/rowers/templates/coachofferrejectedemail.html index b40d5cd6..786af88d 100644 --- a/rowers/templates/coachofferrejectedemail.html +++ b/rowers/templates/coachofferrejectedemail.html @@ -1,7 +1,7 @@ {% extends "emailbase.html" %} {% block body %} -

Dear {{ coachname }},

+

Dear {{ coach }},

{{ name }} has rejected your offer to become his coach on diff --git a/rowers/templates/coachrequestacceptedemail.html b/rowers/templates/coachrequestacceptedemail.html index 7c19fd04..7a4b8ecc 100644 --- a/rowers/templates/coachrequestacceptedemail.html +++ b/rowers/templates/coachrequestacceptedemail.html @@ -4,7 +4,7 @@

Dear {{ name }},

- {{ coachname }} has accepted your coaching request on + {{ coach }} has accepted your coaching request on rowsandall.com

diff --git a/rowers/templates/coachrequestrejectedemail.html b/rowers/templates/coachrequestrejectedemail.html index bdc1b3e2..bf871307 100644 --- a/rowers/templates/coachrequestrejectedemail.html +++ b/rowers/templates/coachrequestrejectedemail.html @@ -4,7 +4,7 @@

Dear {{ name }},

- {{ coachname }} has rejected your coaching request on + {{ coach }} has rejected your coaching request on rowsandall.com

diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index 530c56cf709e5534284f0cfbadac8e5d8aa8a250..5ba2851fe5d3a6d8bf42ab52726878b5b4523f33 100644 GIT binary patch delta 16 XcmaEx_%@MUzMF%Cby4m{_GbnFIQ9lW delta 16 XcmaEx_%@MUzMF%?KPhJ;`!fRoId=w0 diff --git a/rowers/views/userviews.py b/rowers/views/userviews.py index 45bf65b4..06540e41 100644 --- a/rowers/views/userviews.py +++ b/rowers/views/userviews.py @@ -190,6 +190,10 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""): last_name = ucd['last_name'] email = ucd['email'] sex = cd['sex'] + try: + offercoaching = cd['offercoaching'] + except KeyError: + offercoaching = False adaptiveclass = cd['adaptiveclass'] defaultlandingpage = cd['defaultlandingpage'] weightcategory = cd['weightcategory'] @@ -217,6 +221,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""): r.adaptiveclass = adaptiveclass r.getemailnotifications = getemailnotifications r.getimportantemails = getimportantemails + r.offercoaching = offercoaching r.defaultlandingpage = defaultlandingpage r.showfavoritechartnotes = showfavoritechartnotes r.sex = sex From 1052c61589c81cb302ae07b006106b0b091d16e3 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 20 Feb 2019 20:15:44 +0100 Subject: [PATCH 2/5] offercoaching form works --- rowers/models.py | 17 ----------------- rowers/tests/testdata/testdata.csv.gz | Bin 12525 -> 12525 bytes rowers/views/userviews.py | 2 +- 3 files changed, 1 insertion(+), 18 deletions(-) diff --git a/rowers/models.py b/rowers/models.py index 97cad63b..93dcfa58 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -3201,23 +3201,6 @@ class AccountRowerForm(ModelForm): if self.instance.rowerplan != 'coach': self.fields.pop('offercoaching') - def clean_email(self): - email = self.cleaned_data.get('email') - - try: - validate_email(email) - except ValidationError: - raise forms.ValidationError( - 'Please enter a valid email address') - - try: - match = User.objects.get(email__iexact=email) - if self.instance.user == match: - return email - except User.DoesNotExist: - return email - - raise forms.ValidationError('This email address is not allowed') diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index 5ba2851fe5d3a6d8bf42ab52726878b5b4523f33..f63def677ff45f1d5f50840b33c527433dbdb765 100644 GIT binary patch delta 15 WcmaEx_%@MEzMF$XX!%CA=LP^XD+S~L delta 15 WcmaEx_%@MEzMF%Cb Date: Wed, 20 Feb 2019 20:39:21 +0100 Subject: [PATCH 3/5] team invite form --- rowers/views/teamviews.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/rowers/views/teamviews.py b/rowers/views/teamviews.py index 2c393f85..224a2ef7 100644 --- a/rowers/views/teamviews.py +++ b/rowers/views/teamviews.py @@ -16,10 +16,16 @@ def team_view(request,id=0,userid=0): except Team.DoesNotExist: raise Http404("Team doesn't exist") + q = User.objects.filter(rower__isnull=False,rower__team__in=myteams).distinct().exclude(rower__team__name=t.name) + mygroups = [request.user.rower.mycoachgroup] + q2 = User.objects.filter(rower__isnull=False,rower__coachinggroups__in=mygroups).distinct().exclude(rower__team__name=t.name) + + q = q | q2 if request.method == 'POST' and request.user == t.manager: inviteform = TeamInviteForm(request.POST) - inviteform.fields['user'].queryset = User.objects.filter(rower__isnull=False,rower__team__in=myteams).distinct().exclude(rower__team__name=t.name) + + inviteform.fields['user'].queryset = q if inviteform.is_valid(): cd = inviteform.cleaned_data newmember = cd['user'] @@ -37,7 +43,7 @@ def team_view(request,id=0,userid=0): elif request.user == t.manager: inviteform = TeamInviteForm() - inviteform.fields['user'].queryset = User.objects.filter(rower__isnull=False,rower__team__in=myteams).distinct().exclude(rower__team__name=t.name) + inviteform.fields['user'].queryset = q else: inviteform = '' @@ -186,9 +192,13 @@ def rower_teams_view(request,message='',successmessage=''): invitedcoaches = [rekwest.coach for rekwest in mycoachrequests] coaches = teams.rower_get_coaches(r) - print coaches,'aap' potentialcoaches = [t.manager for t in memberteams if t.manager not in coaches and t.manager.rower.rowerplan == 'coach'] + offercoaches = [ + r.user for r in Rower.objects.filter( + offercoaching=True,rowerplan='coach').exclude(user=request.user) + ] + potentialcoaches = list(set(potentialcoaches+offercoaches)) potentialcoaches = [c for c in potentialcoaches if c.rower not in invitedcoaches+coaches] From 8219dab1afc1885a0c70ba06ac42e367e9e0cff1 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 20 Feb 2019 20:49:00 +0100 Subject: [PATCH 4/5] tested --- rowers/tests/testdata/testdata.csv.gz | Bin 12525 -> 12525 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index f63def677ff45f1d5f50840b33c527433dbdb765..b25fbde1ec06acd366ce027a6629823520518922 100644 GIT binary patch delta 15 WcmaEx_%@MEzMF$%$-0ef&kX=Jx(0m! delta 15 WcmaEx_%@MEzMF$XX!%CA=LP^XD+S~L From 916c09776240c925c79e2070cd46314e3df15dbf Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 20 Feb 2019 20:54:39 +0100 Subject: [PATCH 5/5] tested --- rowers/tests/testdata/testdata.csv.gz | Bin 12525 -> 12525 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index b25fbde1ec06acd366ce027a6629823520518922..4856af8bcf5a1ca994cd4c0e872bd14395cd928f 100644 GIT binary patch delta 15 WcmaEx_%@MEzMF$Xal=No=LP^XvIYDA delta 15 WcmaEx_%@MEzMF$%$-0ef&kX=Jx(0m!