2015-09-30 13:33:05 -07:00
|
|
|
import uuid
|
|
|
|
|
2015-09-22 07:29:29 -07:00
|
|
|
from annoying.decorators import render_to
|
2015-10-18 12:46:21 -07:00
|
|
|
from django.contrib.auth.decorators import login_required
|
2015-09-22 07:29:29 -07:00
|
|
|
from django.contrib.auth.models import User
|
2015-10-15 19:37:54 -07:00
|
|
|
from django.http import Http404, HttpResponseRedirect, HttpResponseBadRequest
|
2015-09-30 13:33:05 -07:00
|
|
|
from django.shortcuts import get_object_or_404
|
2015-09-22 07:29:29 -07:00
|
|
|
from teams.models import Team
|
|
|
|
|
|
|
|
|
2019-01-23 15:52:55 -08:00
|
|
|
@render_to("teams/for-teams.html")
|
2015-09-22 07:29:29 -07:00
|
|
|
def for_teams(request):
|
|
|
|
if request.user.is_authenticated():
|
|
|
|
profile = request.user.profile
|
|
|
|
profile.teams_beta_seen = True
|
|
|
|
profile.save()
|
|
|
|
return {}
|
|
|
|
|
|
|
|
|
2015-10-25 19:36:19 -07:00
|
|
|
@login_required
|
2019-01-23 15:52:55 -08:00
|
|
|
@render_to("teams/for-teams-complete.html")
|
2015-10-25 19:36:19 -07:00
|
|
|
def for_teams_complete(request):
|
2019-01-23 15:52:55 -08:00
|
|
|
if request.method == "POST" and request.user.is_authenticated():
|
2015-10-25 19:36:19 -07:00
|
|
|
|
2019-01-23 15:52:55 -08:00
|
|
|
team = Team(
|
|
|
|
name=request.POST["team-name"],
|
|
|
|
email=request.POST["email"],
|
|
|
|
owner=request.user,
|
|
|
|
)
|
2015-10-25 19:36:19 -07:00
|
|
|
team.save()
|
|
|
|
|
2019-01-23 15:52:55 -08:00
|
|
|
user = User.objects.create_user(team.slug, team.email, str(uuid.uuid4()))
|
2015-10-25 19:36:19 -07:00
|
|
|
|
|
|
|
team.user = user
|
|
|
|
team.save()
|
|
|
|
|
2019-01-23 15:52:55 -08:00
|
|
|
return {"team": team}
|
2015-10-25 19:36:19 -07:00
|
|
|
else:
|
|
|
|
return HttpResponseBadRequest()
|
|
|
|
|
|
|
|
|
2015-10-18 12:46:21 -07:00
|
|
|
@login_required
|
2019-01-23 15:52:55 -08:00
|
|
|
@render_to("teams/team-members.html")
|
2015-09-30 13:33:05 -07:00
|
|
|
def team_members(request, username):
|
2015-10-18 18:07:01 -07:00
|
|
|
team = get_object_or_404(Team, slug=username, disabled=False)
|
2015-10-18 12:46:21 -07:00
|
|
|
if not team.user_is_member(request.user):
|
|
|
|
raise Http404
|
2019-01-23 15:52:55 -08:00
|
|
|
return {"team": team}
|
2015-09-30 13:33:05 -07:00
|
|
|
|
|
|
|
|
2015-10-18 12:46:21 -07:00
|
|
|
@login_required
|
2015-10-17 11:46:37 -07:00
|
|
|
def add_team_member(request, username, member):
|
2015-10-18 18:07:01 -07:00
|
|
|
team = get_object_or_404(Team, slug=username, disabled=False)
|
2015-10-17 11:46:37 -07:00
|
|
|
user = get_object_or_404(User, username=member)
|
|
|
|
|
2019-01-23 15:52:55 -08:00
|
|
|
if team.owner != request.user:
|
2015-10-17 11:46:37 -07:00
|
|
|
raise Http404
|
|
|
|
|
2019-01-23 15:52:55 -08:00
|
|
|
if (team.members.all().count() + 1) > team.member_limit:
|
|
|
|
return HttpResponseRedirect("/" + team.slug + "/members/?limit-reached")
|
2015-10-18 12:55:32 -07:00
|
|
|
else:
|
|
|
|
team.members.add(user)
|
2019-01-23 15:52:55 -08:00
|
|
|
return HttpResponseRedirect("/" + team.slug + "/members/")
|
2015-10-17 11:58:43 -07:00
|
|
|
|
|
|
|
|
2015-10-18 12:46:21 -07:00
|
|
|
@login_required
|
2015-10-17 11:58:43 -07:00
|
|
|
def remove_team_member(request, username, member):
|
2015-10-18 18:07:01 -07:00
|
|
|
team = get_object_or_404(Team, slug=username, disabled=False)
|
2015-10-17 11:58:43 -07:00
|
|
|
user = get_object_or_404(User, username=member)
|
|
|
|
|
2019-01-23 15:52:55 -08:00
|
|
|
if team.owner != request.user:
|
2015-10-17 11:58:43 -07:00
|
|
|
raise Http404
|
|
|
|
|
|
|
|
team.members.remove(user)
|
2015-10-17 11:46:37 -07:00
|
|
|
|
2019-01-23 15:52:55 -08:00
|
|
|
return HttpResponseRedirect("/" + team.slug + "/members/")
|