Exemplo n.º 1
0
    def post(self, request, *args, **kwargs):

        if request.POST.get('create', None):
            team = models.Team()
            team.user = request.user
            team.save()
            return HttpResponseRedirect(reverse('teams'))
        if request.POST.get('leave', None):
            team = getattr(request.user, 'team', None)
            if team:
                team.delete()
            return HttpResponseRedirect(reverse('teams'))
        else:
            form = forms.JoinTeamForm(request.POST, request.FILES)
            if form.is_valid():
                team = form.save(commit=False)
                team.user = request.user
                team.save()

                messages.success(request, 'Team joined successfully!')

                return HttpResponseRedirect(reverse('teams'))
            else:
                c = self.get_context_data()
                c.update({'form': form})
                return render(request, self.template_name, c)
Exemplo n.º 2
0
 def get_context_data(self, **kwargs):
     c = super(HackerTeam, self).get_context_data(**kwargs)
     team = getattr(self.request.user, 'team', None)
     app = getattr(self.request.user, 'application', None)
     teammates = []
     if team:
         teammates = models.Team.objects.filter(team_code=team.team_code) \
             .values('user__name', 'user__email', 'user__application')
         teammates = list(
             map(
                 lambda x: {
                     'name': x['user__name'],
                     'email': x['user__email'],
                     'app': x['user__application']
                 }, teammates))
     instance = models.Team()
     instance.team_code = ''
     form = forms.JoinTeamForm(instance=instance)
     c.update({
         'team': team,
         'teammates': teammates,
         'app': app,
         'form': form
     })
     return c
Exemplo n.º 3
0
def register(request):
    register_form = team_forms.RegisterForm(request.POST or None)
    team_form = team_forms.JoinTeamForm(request.POST or None)

    if register_form.is_valid() and team_form.is_valid():
        register_form.save()

        player = Player.objects.get(
            username=register_form.cleaned_data['username'])
        player.slug = slugify(player.username)

        request.user = player
        join_team(request, player)

        return HttpResponseRedirect(reverse('login'))

    joined_fields = list(register_form.visible_fields())
    joined_fields.extend(team_form.visible_fields())

    context = {
        'register_form': register_form,
        'team_form': team_form,
        'joined_fields': joined_fields,
    }

    return render(request, 'registration/register.html', context)
Exemplo n.º 4
0
def show_register_form():

    register_form = team_forms.RegisterForm()
    team_form     = team_forms.JoinTeamForm()

    joined_fields = list(register_form.visible_fields())
    joined_fields.extend(team_form.visible_fields())

    context = {
        'register_form': register_form,
        'team_form'    : team_form,
        'joined_fields': joined_fields,
    }

    return context
Exemplo n.º 5
0
def join_team(request, player=None):
    form = team_forms.JoinTeamForm(request.POST or None, player=request.user)

    if form.is_valid():
        if player is None:
            player = request.user

        team_name = form.cleaned_data['team_name']
        team_password = form.cleaned_data['team_password']
        previous_team = player.team

        team = Team.objects.filter(name=team_name).first()

        if team is None:
            team = Team(name=team_name,
                        slug=slugify(team_name),
                        password=make_password(team_password))
        if len(team.player_set.all()) == 0:
            team.password = make_password(team_password)
            player.standing = Player.CAPTAIN
        else:
            player.standing = Player.PLAYER

        player.save()
        team.save()

        # Assign player to new team
        team.player_set.add(player)

        # Remove player's old team if no one is left
        if previous_team and len(previous_team.player_set.all()) == 0:
            previous_team.delete()

        return HttpResponseRedirect(reverse('team', args=[team.slug]))

    return render(request, 'registration/join_team.html', {'form': form})
Exemplo n.º 6
0
def show_join_team_form():
    return {'form': team_forms.JoinTeamForm()}