Private
Public Access
1
0

not sure if this works

This commit is contained in:
Sander Roosendaal
2019-02-16 17:15:25 +01:00
parent 74cc925e59
commit ccdf24f671
16 changed files with 599 additions and 17 deletions

View File

@@ -17,7 +17,7 @@ queuelow = django_rq.get_queue('low')
queuehigh = django_rq.get_queue('low')
from rowers.models import (
Rower, Workout, Team, TeamInvite,User,TeamRequest
Rower, Workout, Team, TeamInvite,User,TeamRequest, CoachRequest, CoachOffer
)
from rowers.tasks import (
@@ -26,6 +26,7 @@ from rowers.tasks import (
handle_sendemail_member_dropped,handle_sendemail_request_accept,
handle_sendemail_request_reject,handle_sendemail_invite_reject,
handle_sendemail_invite_accept,handle_sendemail_team_removed,
handle_sendemail_coachrequest,handle_sendemail_coacheerequest,
)
from rowers.models import ValidationError
@@ -102,8 +103,17 @@ def remove_team(id):
return (1,'Updated rower team expiry')
def add_coach(manager,rower):
rower.coaches.add(m)
def add_coach(coach,rower):
# get coaching group
try:
coachgroup = coach.mycoachgroup
except CoachingGroup.DoesNotExist:
coachgroup = CoachingGroup()
coachgroup.save()
coach.mycoachgroup = coachgroup
coach.save()
rower.coachinggroups.add(coach)
return (1,"Added Coach")
@@ -134,6 +144,44 @@ def remove_member(id,rower):
# set_teamplanexpires(rower)
return (id,'Member removed')
def remove_coach(coach,rower):
try:
coachgroup = coach.mycoachgroup
except CoachingGroup.DoesNotExist:
coachgroup = CoachingGroup()
coachgroup.save()
coach.mycoachgroup = coachgroup
coach.save()
rower.coachinggroups.remove(coachgroup)
return (1,'Coach removed')
def rower_get_coaches(rower):
coaches = []
for group in rower.coachinggroups:
coach = Rower.objects.get(mycoachgroup=group)
coaches.append(coach)
return coaches
def coach_getcoachees(coach):
return Rower.objects.filter(coachinggroups__in=[coach.mycoachgroup])
def coach_remove_athlete(coach,rower):
try:
coachgroup = coach.mycoachgroup
except CoachingGroup.DoesNotExist:
coachgroup = CoachingGroup()
coachgroup.save()
coach.mycoachgroup = coachgroup
coach.save()
rower.coachingrgroups.remove(coachgroup)
return (1,'Coach removed')
def mgr_remove_member(id,manager,rower):
t = Team.objects.get(id=id)
if t.manager == manager:
@@ -161,6 +209,51 @@ def count_club_members(manager):
# Medium level functionality
# request by user to be coached by coach
def create_coaching_request(coach,user):
if coach in rower_get_coaches(user.rower):
return (0,'Already coached by that coach')
codes = [i.code for i in CoachRequest.objects.all()]
code = uuid.uuid4().hex[:10].upper()
while code in codes:
code = uuid.uuid4().hex[:10].upper()
if coach.rowerplan == 'coach':
rekwest = CoachRequest(coach=coach,user=user,code=code)
rekwest.save()
send_coachrequest_email(rekwest)
return (rekwest.id,'The request was created')
else:
return (0,'That person is not a coach')
def send_coachrequest_email(rekwest):
name = rekwest.user.first_name + " " + rekwest.user.last_name
email = rekwest.user.email
code = rekwest.code
coachname = rekwest.coach.user.first_name + " " + rekwest.coach.user.last_name
res = myqueue(queuehigh,
handle_sendemail_coachrequest,
email,name,code,coachname)
def send_coacheerequest_email(rekwest):
name = rekwest.user.first_name + " " + rekwest.user.last_name
email = rekwest.user.email
code = rekwest.code
coachname = rekwest.coach.user.first_name + " " + rekwest.coach.user.last_name
res = myqueue(queuehigh,
handle_sendemail_coacheerequest,
email,name,code,coachname)
def create_request(team,user):
r2 = Rower.objects.get(user=user)
r = Rower.objects.get(user=team.manager)
@@ -183,7 +276,33 @@ def create_request(team,user):
return (rekwest.id,'The request was created')
return (0,'Something went wrong in create_request')
# request by coach to coach user
def create_coaching_offer(coach,user):
r = user.rower
if coach in rower_get_coaches(user.rower):
return (0,'You are already coaching this person.')
codes = [i.code for i in CoachOffer.objects.all()]
code = uuid.uuid4().hex[:10].upper()
while code in codes:
code = uuid.uuid4().hex[:10].upper()
if coach.rowerplan == 'coach':
rekwest = CoachOffer(coach=coach,user=user,code=code)
rekwest.save()
send_coacheerequest_email(rekwest)
return (rekwest.id,'The request was created')
else:
return (0,'You are not a coach')
def create_invite(team,manager,user=None,email=''):
r = Rower.objects.get(user=manager)
if team.manager != manager:
@@ -235,6 +354,36 @@ def revoke_request(user,id):
else:
return (0,'You are not the requestor')
def reject_revoke_coach_offer(user,id):
try:
rekwest = CoachOffer.objects.get(id=id)
except CoachOffer.DoesNotExist:
return (0,'The request is invalid')
if rekwest.coach.user == user:
rekwest.delete()
return (1,'Request removed')
elif rekwest.user == user:
rekwest.delete()
return (1,'Request removed')
else:
return (0,'Not permitted')
def reject_revoke_coach_request(user,id):
try:
rekwest = CoachRequest.objects.get(id=id)
except CoachRequest.DoesNotExist:
return (0,'The request is invalid')
if rekwest.coach.user == user:
rekwest.delete()
return (1,'Request rejected')
elif rekwest.user == user:
rekwest.delete()
return (1,'Request rejected')
else:
return (0,'Not permitted')
def revoke_invite(manager,id):
try:
invite = TeamInvite.objects.get(id=id)
@@ -458,3 +607,43 @@ def remove_expired_invites():
revoke_invite(i.team.manager,i.id)
return (1,'Expired invitations deleted')
def process_coachrequest_code(coach,code):
code = code.upper()
try:
rekwest = CoachRequest.objects.get(code=code)
except CoachRequest.DoesNotExist:
return (0,'The request has been revoked or is invalid')
if rekwest.coach != coach:
return (0,'The request is invalid')
result = add_coach(coach,rekwest.user.rower)
if not result:
return (result,"Something went wrong")
rekwest.delete()
return result
def process_coachoffer_code(user,code):
code = code.upper()
try:
rekwest = CoachOffer.objects.get(code=code)
except CoachOffer.DoesNotExist:
return (0,'The request has been revoked or is invalid')
if rekwest.user != user:
return (0,'The request is invalid')
result = add_coach(rekwest.coach,rekwest.user.rower)
if not result:
return (result,"Something went wrong")
rekwest.delete()
return result