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)
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
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)
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
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})
def show_join_team_form(): return {'form': team_forms.JoinTeamForm()}