Private
Public Access
1
0

rules first attempt

This commit is contained in:
Sander Roosendaal
2020-01-10 08:06:18 +01:00
parent 1f96ff4fa7
commit 79afd29b19
6 changed files with 126 additions and 82 deletions

View File

@@ -23,7 +23,7 @@ queuehigh = django_rq.get_queue('low')
from rowers.models import (
Rower, Workout, Team, TeamInvite,User,TeamRequest, CoachRequest, CoachOffer,
CoachingGroup
CoachingGroup,is_team_manager,is_team_member,is_coach
)
from rowers.tasks import (
@@ -53,14 +53,15 @@ def handle_remove_workouts_team(ws,t):
return 1
def handle_add_workouts_team(ws,t):
for w in ws:
w.team.add(t)
return 1
def update_team(t,name,manager,private,notes,viewing):
if t.manager != manager:
if not is_team_manager(t,manager):
return (0,'You are not the manager of this team')
try:
t.name = name
@@ -82,7 +83,7 @@ def create_team(name,manager,private='open',notes='',viewing='allmembers'):
ts = Team.objects.filter(manager=manager)
if len(ts)>=1:
return (0,'You need to upgrade to the Coach plan to have more than one team')
try:
t = Team(name=name,manager=manager,notes=notes,
private=private,viewing=viewing)
@@ -116,7 +117,7 @@ def remove_team(id):
def add_coach(coach,rower):
# get coaching group
coachgroup = coach.mycoachgroup
if coachgroup is None:
coachgroup = CoachingGroup(name=coach.user.first_name)
@@ -126,7 +127,7 @@ def add_coach(coach,rower):
if get_coach_club_size(coach)<coach.clubsize:
rower.coachinggroups.add(coach.mycoachgroup)
return (1,"Added Coach")
else:
return (0,"Maximum number of athletes reached")
@@ -137,14 +138,14 @@ def add_member(id,rower):
rower.team.add(t)
except ValidationError as e:
return(0,"Couldn't add member: "+str(e.message))
# code to add all workouts
ws = Workout.objects.filter(user=rower)
res = handle_add_workouts_team(ws,t)
# set_teamplanexpires(rower)
return (id,'Member added')
def remove_member(id,rower):
@@ -154,7 +155,7 @@ def remove_member(id,rower):
ws = Workout.objects.filter(user=rower,team=t)
res = handle_remove_workouts_team(ws,t)
# set_teamplanexpires(rower)
return (id,'Member removed')
@@ -166,7 +167,7 @@ def remove_coach(coach,rower):
coachgroup.save()
coach.mycoachgroup = coachgroup
coach.save()
rower.coachinggroups.remove(coachgroup)
return (1,'Coach removed')
@@ -188,7 +189,7 @@ def rower_get_coaches(rower):
pass
return coaches
def coach_getcoachees(coach):
if coach.mycoachgroup and coach.rowerplan in ('coach','freecoach'):
@@ -206,14 +207,14 @@ def coach_remove_athlete(coach,rower):
coachgroup.save()
coach.mycoachgroup = coachgroup
coach.save()
rower.coachinggroups.remove(coachgroup)
return (1,'Coach removed')
def mgr_remove_member(id,manager,rower):
t = Team.objects.get(id=id)
if t.manager == manager:
if is_team_manager(t,manager):
remove_member(id,rower)
send_email_member_dropped(id,rower)
return (id,'Member removed')
@@ -270,7 +271,7 @@ def send_coachrequest_email(rekwest):
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
@@ -282,7 +283,7 @@ def send_coacheerequest_email(rekwest):
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)
@@ -299,11 +300,11 @@ def create_request(team,user):
u = User.objects.get(id=user)
rekwest = TeamRequest(team=team,user=u,code=code)
rekwest.save()
send_request_email(rekwest)
return (rekwest.id,'The request was created')
return (0,'Something went wrong in create_request')
def get_coach_club_size(coach):
@@ -341,11 +342,11 @@ def create_coaching_offer(coach,user):
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:
if not is_team_manager(team,manager):
return (0,'Not the team manager')
if user:
try:
@@ -365,7 +366,7 @@ def create_invite(team,manager,user=None,email=''):
user=None
except Rower.MultipleObjectsReturned:
return (0,'There is more than one user with that email address')
# if count_club_members(team.manager)+count_invites(team.manager) <= r.clubsize:
codes = [i.code for i in TeamInvite.objects.all()]
code = uuid.uuid4().hex[:10].upper()
@@ -376,8 +377,8 @@ def create_invite(team,manager,user=None,email=''):
invite = TeamInvite(team=team,code=code,user=user,email=email)
invite.save()
return (invite.id,'Invitation created')
return (0,'Nothing done')
def revoke_request(user,id):
@@ -402,7 +403,7 @@ def reject_revoke_coach_offer(user,id):
if rekwest.coach.user == user:
rekwest.delete()
return (1,'Request removed')
elif rekwest.user == user:
send_coachoffer_rejected_email(rekwest)
@@ -410,7 +411,7 @@ def reject_revoke_coach_offer(user,id):
return (1,'Request removed')
else:
return (0,'Not permitted')
def reject_revoke_coach_request(user,id):
try:
rekwest = CoachRequest.objects.get(id=id)
@@ -433,26 +434,26 @@ def revoke_invite(manager,id):
except TeamInvite.DoesNotExist:
return (0,'The invitation is invalid')
if invite.team.manager==manager:
if is_team_manager(invite.team,manager):
invite.delete()
return (1,'Invitation revoked')
else:
return (0,'You are not the team manager')
def reject_request(manager,id):
try:
rekwest = TeamRequest.objects.get(id=id)
except TeamRequest.DoesNotExist:
return (0,'The request is invalid')
if rekwest.team.manager==manager:
if is_team_manager(rekwest.team,manager):
send_request_reject_email(rekwest)
rekwest.delete()
return (1,'Request rejected')
else:
return (0,'You are not the manager for this request')
def reject_invitation(user,id):
try:
invite = TeamInvite.objects.get(id=id)
@@ -472,14 +473,14 @@ def send_invite_email(id):
invitation = TeamInvite.objects.get(id=id)
except TeamInvite.DoesNotExist:
return (0,'Invitation doesn not exist')
if invitation.user:
email = invitation.user.email
name = invitation.user.first_name + " " + invitation.user.last_name
else:
email = invitation.email
name = ''
code = invitation.code
teamname = invitation.team.name
manager = invitation.team.manager.first_name+' '+invitation.team.manager.last_name
@@ -514,7 +515,7 @@ def send_email_member_dropped(teamid,rower):
email,name,teamname,manager)
return (1,'Member dropped email sent')
def send_request_accept_email(rekwest):
id = rekwest.id
@@ -527,7 +528,7 @@ def send_request_accept_email(rekwest):
email,name,teamname,manager)
return (1,'Invitation email sent')
def send_request_reject_email(rekwest):
id = rekwest.id
@@ -606,7 +607,7 @@ def send_request_email(rekwest):
def process_request_code(manager,code):
code = code.upper()
try:
rekwest = TeamRequest.objects.get(code=code)
except TeamRequest.DoesNotExist:
@@ -622,10 +623,10 @@ def process_request_code(manager,code):
if not result:
return (result,"The member couldn't be added")
send_request_accept_email(rekwest)
rekwest.delete()
return (result,'The member was added')
@@ -641,7 +642,7 @@ def process_invite_code(user,code):
if nu > invitation.issuedate+timedelta(days=inviteduration):
revoke_invite(invitation.team.manager,invitation.id)
return (0,'The invitation has expired')
t = invitation.team
result, comment = add_member(t.id,r)
if not result:
@@ -698,7 +699,7 @@ def process_coachoffer_code(user,code):
return result
else:
send_coachoffer_accepted_email(rekwest)
rekwest.delete()
return result
@@ -732,7 +733,7 @@ def send_coachrequest_accepted_email(rekwest):
res = myqueue(queuehigh,
handle_sendemail_coachrequest_accepted,
email,coachname,name)
def send_coachoffer_accepted_email(rekwest):
coachname = rekwest.coach.user.first_name + " " + rekwest.coach.user.last_name
@@ -743,5 +744,3 @@ def send_coachoffer_accepted_email(rekwest):
res = myqueue(queuehigh,
handle_sendemail_coachoffer_accepted,
coachemail,coachname,name)