def join(request, invite_hash=None):
if request.method == 'POST' and 'invite_hash' in request.POST:
invite_hash = request.POST['invite_hash']
team = models.Team.objects.filter(invite_hash=invite_hash).first()
error_message = None
if team is None:
error_message = 'Team not found. Return back and try one more time'
if request.method == 'POST' and team is not None:
if team.members.count() > settings.DRAPO_TEAM_SIZE_LIMIT:
messages.error('You can\'t join the team because it\'s very big (%d members)' % team.members.count())
else:
with transaction.atomic():
if request.user in team.members.all():
messages.warning(request, 'You are already in team ' + team.name)
if 'next' in request.POST and '//' not in request.POST['next']:
return redirect(request.POST['next'])
return redirect(urlresolvers.reverse('teams:team', args=[team.id]))
if settings.DRAPO_USER_CAN_BE_ONLY_IN_ONE_TEAM and \
models.Team.objects.filter(members=request.user).exists() and \
not request.user.is_staff:
messages.error(request,
'You can\'t join team %s while you are a member of another team' % team.name)
if 'next' in request.POST and '//' not in request.POST['next']:
return redirect(request.POST['next'])
return redirect(urlresolvers.reverse('teams:team', args=[team.id]))
team.members.add(request.user)
team.save()
messages.success(request, 'You joined team ' + team.name + '!')
if 'next' in request.POST and '//' not in request.POST['next']:
return redirect(request.POST['next'])
return redirect(urlresolvers.reverse('teams:team', args=[team.id]))
elif request.method == 'GET':
if team is None:
return HttpResponseNotFound()
return render(request, 'teams/join.html', {
'error_message': error_message,
'team': team
})
评论列表
文章目录