views.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:drapo 作者: andgein 项目源码 文件源码
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
    })
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号