Private
Public Access
1
0

Team create, delete, leave, create invite

This commit is contained in:
Sander Roosendaal
2017-02-09 17:50:32 +01:00
parent f459cea2bd
commit 40e18fee21
10 changed files with 473 additions and 60 deletions

View File

@@ -31,6 +31,7 @@ from rowers.models import Workout, User, Rower, WorkoutForm,FavoriteChart
from rowers.models import (
RowerPowerForm,RowerForm,GraphImage,AdvancedWorkoutForm,
RowerPowerZonesForm,AccountRowerForm,UserForm,StrokeData,
Team,TeamForm,TeamInviteForm
)
from rowers.models import FavoriteForm,BaseFavoriteFormSet,SiteAnnouncement
from django.forms.formsets import formset_factory
@@ -57,6 +58,7 @@ from rest_framework.parsers import JSONParser
from rowers.rows import handle_uploaded_file
from rowers.tasks import handle_makeplot,handle_otwsetpower,handle_sendemailtcx,handle_sendemailcsv
from rowers.tasks import handle_sendemail_unrecognized
from scipy.signal import savgol_filter
from django.shortcuts import render_to_response
from Cookie import SimpleCookie
@@ -198,6 +200,12 @@ def splitstdata(lijst):
from utils import geo_distance,serialize_list,deserialize_list
# Check if a user is a Coach member
def iscoachmember(user):
r = Rower.objects.get(user=user)
result = user.is_authenticated() and (r.rowerplan=='coach')
return result
# Check if a user is a Pro member
def ispromember(user):
r = Rower.objects.get(user=user)
@@ -5278,13 +5286,76 @@ def strokedatajson(request,id):
return HttpResponseNotAllowed("Method not supported")
# Teams related views
import teams
@login_required()
def team_view(request,id=0):
try:
t = Team.objects.get(id=id)
except Team.DoesNotExist:
return HttpResponse("Team doesn't exist")
if request.method == 'POST' and request.user == t.manager:
inviteform = TeamInviteForm(request.POST)
if inviteform.is_valid():
cd = inviteform.cleaned_data
newmember = cd['user']
email = cd['email']
inviteid,message = teams.create_invite(t,t.manager,
user=newmember,
email=email)
if inviteid:
teams.send_invite_email(inviteid)
elif request.user == t.manager:
inviteform = TeamInviteForm()
inviteform.fields['user'].queryset = User.objects.filter(rower__isnull=False)
else:
inviteform = ''
members = Rower.objects.filter(team=t).order_by('user__last_name','user__first_name')
return render(request, 'team.html',
{
'team':t,
'members':members,
'inviteform':inviteform,
})
@login_required()
def team_leaveconfirm_view(request,id=0):
try:
t = Team.objects.get(id=id)
except Team.DoesNotExist:
return HttpResponse("Team doesn't exist")
return render(request,'teamleaveconfirm.html',
{
'team':t
})
@login_required()
def team_leave_view(request,id=0):
r = Rower.objects.get(user=request.user)
teams.remove_member(id,r)
url = reverse(rower_teams_view)
response = HttpResponseRedirect(url)
return response
@login_required()
def rower_teams_view(request):
def rower_teams_view(request):
r = Rower.objects.get(user=request.user)
teams = Team.objects.filter(rower=r)
myteams = Team.objects.filter(manager=request.user)
return render(request, 'teams.html',
{
{
'teams':teams,
'myteams':myteams,
})
@@ -5292,3 +5363,58 @@ def rower_invitations_view(request,code=None):
def rower_invitations_view(request,code=None):
return render(request, 'invitations.html',
{
})
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
def team_create_view(request):
if request.method == 'POST':
teamcreateform = TeamForm(request.POST)
if teamcreateform.is_valid():
cd = teamcreateform.cleaned_data
name = cd['name']
notes = cd['notes']
manager = request.user
private = cd['private']
res,message=teams.create_team(name,manager,private,notes)
url = reverse(rower_teams_view)
response = HttpResponseRedirect(url)
return response
else:
teamcreateform = TeamForm()
return render(request,'teamcreate.html',
{
'form':teamcreateform,
})
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
def team_deleteconfirm_view(request,id):
r = Rower.objects.get(user=request.user)
try:
t = Team.objects.get(id=id)
except Team.DoesNotExist:
return HttpResponse("This team doesn't exist")
if t.manager != request.user:
return HttpResponse("You are not allowed to delete this team")
return render(request,'teamdeleteconfirm.html',
{
'team':t
})
@user_passes_test(iscoachmember,login_url="/",redirect_field_name=None)
def team_delete_view(request,id):
r = Rower.objects.get(user=request.user)
try:
t = Team.objects.get(id=id)
except Team.DoesNotExist:
return HttpResponse("This team doesn't exist")
if t.manager != request.user:
return HttpResponse("You are not allowed to delete this team")
teams.remove_team(t.id)
url = reverse(rower_teams_view)
response = HttpResponseRedirect(url)