def thread_detail_view(request, pk, slug): thread = get_object_or_404(Thread, pk=pk) player = Player.user_to_player(request.user, thread.game) if not thread.visible_to_player(player): raise PermissionDenied('You cannot see this thread!') if request.method == 'POST': form = PostCreateForm(request.POST, player=player, thread=thread) if form.is_valid(): form.save(commit=True) return HttpResponseRedirect( reverse( 'thread_detail', kwargs={ 'pk': int(pk), 'slug': slug }, )) else: form = PostCreateForm(player=player, thread=thread) return render( request, 'forum/thread-detail.html', { 'form': form, 'thread': thread, 'player': player, 'posts': Post.objects.filter(thread=thread).order_by('created') }, )
def thread_detail_view(request, pk, slug): thread = get_object_or_404(Thread, pk=pk) player = Player.user_to_player(request.user, thread.game) if not thread.visible_to_player(player): raise PermissionDenied('You cannot see this thread!') if request.method == 'POST': form = PostCreateForm(request.POST, player=player, thread=thread) if form.is_valid(): form.save(commit=True) return HttpResponseRedirect( reverse( 'thread_detail', kwargs = {'pk': int(pk), 'slug': slug}, ) ) else: form = PostCreateForm(player=player, thread=thread) return render( request, 'forum/thread-detail.html', { 'form': form, 'thread': thread, 'player': player, 'posts': Post.objects.filter(thread=thread).order_by('created') }, )
def save(self, commit=False): def grab(s): return self.cleaned_data[s] game = Game.nearest_game() player = Player.user_to_player(self.user, game) self.thread = Thread( game=game, team=grab('team'), title=grab('title'), slug=slugify(grab('title')), ) self.thread.save() post = Post( author=player, thread=self.thread, body=grab('post_body'), created=settings.NOW(), ) if commit: post.save() return self.thread
def set_player(self, request): if self.player: return try: self.player = Player.user_to_player(request.user, self.get_game()) except Player.DoesNotExist: raise PermissionDenied("You are not registered for this game!")
def player(self): if self._player: return self._player try: self._player = Player.user_to_player(self.request.user, self.game) except Player.DoesNotExist: raise PermissionDenied("You are not registered for this game!") return self._player
def check_team(u): try: player = Player.user_to_player(u) except Player.DoesNotExist: raise PermissionDenied("You are not registered for this game!") if player.team != team: team_name = "human" if team == 'H' else "zombie" raise PermissionDenied("You must be a {} to view this page.".format(team_name)) return True
def check_team(u): try: player = Player.user_to_player(u) except Player.DoesNotExist: raise PermissionDenied("You are not registered for this game!") if player.team != team: team_name = "human" if team == 'H' else "zombie" raise PermissionDenied( "You must be a {} to view this page.".format(team_name)) return True
def visible_to_user(self, user): if not user: return False if user.is_staff: return True try: player = Player.user_to_player(user, self.game) except Player.DoesNotExist: return False return self.visible_to_player(player)
def filter_forums(self, user, qs): """Players should not be able to see the other team's forums.""" if not user.is_authenticated(): raise PermissionDenied("You are not logged in!") try: vb_team = settings.VERBOSE_TEAMS[Player.user_to_player(user).team] except Player.DoesNotExist: raise PermissionDenied("You are not in this game!") # Display the forums for our team or both teams. both_or_ours = Q(name=vb_team) | Q(name=settings.VERBOSE_TEAMS['B']) return super(ForumPermissionHandler, self).filter_forums(user, qs).filter(both_or_ours)
def legal_teams(user): if not user: return False if user.is_staff: return settings.VERBOSE_TEAMS.items() try: player = Player.user_to_player(user) except Player.DoesNotExist: return [] return ( (player.team, settings.VERBOSE_TEAMS[player.team]), ('B', settings.VERBOSE_TEAMS['B']), )
def legal_teams(user): if not user: return False if user.is_staff: return settings.VERBOSE_TEAMS.items() + Player.objects.values('clan') try: player = Player.user_to_player(user) except Player.DoesNotExist: return [] return ( (player.team, settings.VERBOSE_TEAMS[player.team]), (player.clan, player.clan), ('B', settings.VERBOSE_TEAMS['B']), )
def may_view_forum(self, user, forum): """Players should not be able to access the other team's forums.""" # Check if the forum allows both teams. if forum.name == settings.VERBOSE_TEAMS['B']: return super(ForumPermissionHandler, self).may_view_forum(user, forum) # Compare the forum's name to the player's team. try: team = Player.user_to_player(user).team except Player.DoesNotExist: return False vb_team = settings.VERBOSE_TEAMS[team] if forum.name != vb_team: return False return super(ForumPermissionHandler, self).may_view_forum(user, forum)
def as_player(user): try: return Player.user_to_player(user) except Player.DoesNotExist: return ""
def inject_current_player(request): try: player = Player.user_to_player(request.user) except (Player.DoesNotExist, Game.DoesNotExist): player = None return {'player': player}
def as_player(user): try: return Player.user_to_player(user) except: return ""