def _get_user_cards(user_id, page): cards = Card.get_all(*list( UserCard.filter({ 'user_id': user_id }).filter(r.row['count'] > 0).get_field('card_id').run())) total_pages = ((copy(cards).count().run() - 1) // CARDS_PER_PAGE) + 1 cards = cards.skip(CARDS_PER_PAGE * (page - 1)) cards = cards.limit(CARDS_PER_PAGE).run() cards = list(cards) return cards, page, str(total_pages)
def new_round(self, winner): """ Starts a new round. - Store previous round as Pickled dictionary - Fill every player's hand - Discard and play a new black card - Find a new judge and increment his judge count """ if winner: self.previous_round = { 'judge': { 'name': self.judge.user.name, 'email': self.judge.user.email }, 'winner': { 'name': winner.user.name, 'email': winner.user.email }, 'black_card': { 'id': self.black_card.id, 'text': self.black_card.text, 'answers': self.black_card.answers }, 'table': [{ 'name': player.user.name, 'email': player.user.email, 'picture': player.user.picture, 'cards': [{ 'id': card.id, 'text': card.text } for card in player.get_played()] } for player in self.players if player.hand and player != self.judge] } self.winner = None if any(player.score == self.max_points for player in self.players): self.end() return white_cards = Card.get_all(black=False) # fill every player's hand and remove their played card for player in self.players: player.played = [] while len(player.hand) < 10: white_card = choice(white_cards) while white_card in set(self.used_cards): white_card = choice(white_cards) player.hand.append(white_card) self.used_cards.append(white_card) # play a new black card and choose a new judge black_cards = Card.get_all(black=True) self.black_card = choice(black_cards) while self.black_card in set(self.used_cards): self.black_card = choice(black_cards) self.used_cards.append(self.black_card) self.judge = min(self.players, key=lambda player: player.judged) self.judge.played = [self.black_card.id] self.judge.judged += 1