rules first attempt
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user