diff --git a/rowers/models.py b/rowers/models.py index 500c5ad9..93dcfa58 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,24 +3196,11 @@ 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') - - 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/teams.py b/rowers/teams.py index 1f6c0881..76a9127b 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 @@ -660,7 +665,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, @@ -670,7 +675,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, @@ -680,7 +685,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, @@ -691,7 +696,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 530c56cf..4856af8b 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ 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] diff --git a/rowers/views/userviews.py b/rowers/views/userviews.py index 45bf65b4..c80e7ab8 100644 --- a/rowers/views/userviews.py +++ b/rowers/views/userviews.py @@ -178,7 +178,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""): if request.method == 'POST': - accountform = AccountRowerForm(request.POST) + accountform = AccountRowerForm(request.POST, instance=r) userform = UserForm(request.POST,instance=r.user) if accountform.is_valid() and userform.is_valid(): @@ -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