Private
Public Access
1
0
Files
rowsandall/rowers/teams.py
2017-02-08 18:49:48 +01:00

96 lines
2.5 KiB
Python

# All the Team related methods
# Python
from django.utils import timezone
from datetime import datetime
from datetime import timedelta
import time
from django.db import IntegrityError
import uuid
from rowers.models import (
Rower, Workout, Team, TeamInvite,User
)
# Low level functions - to be called by higher level methods
def create_team(name,manager,notes=''):
# needs some error testing
try:
t = Team(name=name,manager=manager,notes=notes)
t.save()
r = Rower.objects.get(user=manager)
r.team.add(t)
except IntegrityError:
return (0,'Team name duplication')
return (t.id,'Team created')
def remove_team(id):
t = Team.objects.get(id=id)
return t.delete()
def add_member(id,rower):
t= Team.objects.get(id=id)
rower.team.add(t)
return (1,'Member added')
def remove_member(id,rower):
t = Team.objects.get(id=id)
rower.team.remove(t)
return (1,'Member removed')
def mgr_remove_member(id,manager,rower):
t = Team.objects.get(id=id)
if t.manager == manager:
rower.team.remove(t)
return (1,'Member added')
else:
return (0,'You are not the team manager')
return 0
def count_members(id):
t = Team.objects.get(id=id)
return Rower.objects.filter(team=t).count()
def count_club_members(manager):
ts = Team.objects.filter(manager=manager)
return Rower.objects.filter(team__in=ts).distinct().count()
def get_club_members(manager):
ts = Team.objects.filter(manager=manager)
return Rower.objects.filter(team__in=ts).distinct()
def get_team_members(id):
t = Team.objects.get(id=id)
return Rower.objects.filter(team=t)
# Medium level functionality
def create_invite(team,manager,user=None):
if team.manager != manager:
return (0,'Not the team manager')
if user:
try:
r2 = Rower.objects.get(user=user)
except Rower.DoesNotExist:
return (0,'Rower does not exist')
if r2 in Rower.objects.filter(team=team):
return (0,'Already member of that team')
if count_club_members(team.manager) < r.clubsize:
codes = [i.code for i in TeamInvite.objects.all()]
code = uuid.uuid4().hex[:10].upper()
# prevent duplicates
while code in codes:
code = uuid.uuid4().hex[:10].upper()
invite = TeamInvite(team=team,code=code,user=user)
invite.save()
return code
else:
return (0,'You are at your club size limit')
return (0,'Nothing done')