def submit(self, request): ''' Submits this form to create the given game. ''' members = GameMember.filterByGame(self.cleaned_data['game_id']) them = None me = None for m in members: if str(m.user_id) == request.user.pk: me = m if str(m.user_id) == self.cleaned_data['user_id']: them = m if them and me: break if them: raise GameMemberAlreadyExists() if not me: raise PermissionDenied() member = GameMember.fromMap(self.cleaned_data) member.save() return GameMemberSerializer(member).data
def submit(self, request): try: game = Game.getByID(self.cleaned_data['game_id']) if game.current_round_id: raise GameAlreadyStarted() except CassaNotFoundException: raise GameNotFound() if not GamePermissions.has_object_permission(request, game): raise PermissionDenied() # select randomly from the game members game_members = GameMember.filterByGame(game.game_id) selector = random.choice(game_members) now = datetime.datetime.now() round = Round(selector_id=selector.user_id, phrase_card_id=PhraseCard.getRandom(self.cleaned_data['deck_id']).phrase_card_id, game_id=game.game_id, date_created=now, last_modified=now) round.save() game.deck = self.cleaned_data['deck_id'] game.current_round_id = round.round_id game.save() return RoundSerializer(round).data
def has_object_permission(request, obj): try: members = set([str(mem.user_id) for mem in GameMember.filterByGame(obj.game_id)]) return request.user.pk in members except CassaNotFoundException: # Instance must have an attribute named `owner`. return False
def submit(self, request): try: game_memberships = GameMember.filterByUser(request.user.pk) games = [Game.getByID(mem.game_id) for mem in game_memberships] except CassaNotFoundException: raise GameNotFound() return GameSerializer(games, many=True).data
def submit(self, request): try: members = GameMember.filterByGame(self.cleaned_data['game_id']) member_ids = set([str(m.user_id) for m in members]) if request.user.pk not in member_ids: raise PermissionDenied() except CassaNotFoundException: raise GameNotFound() return GameMemberSerializer(members, many=True).data
def submit(self, request): try: game = Game.getByID(self.cleaned_data['game_id']) except CassaNotFoundException: raise GameNotFound() if not GamePermissions.has_object_permission(request, game): raise PermissionDenied() if not game.current_round_id: raise NoCurrentRound() try: round = Round.getByID(game.current_round_id) except CassaNotFoundException: raise RoundNotFound() if request.user.pk != str(round.selector_id): raise NotTheSelector() try: nomination = Nomination.getByID(self.cleaned_data['selection_id']) except CassaNotFoundException: raise InvalidNominationCard() round.selection_id = self.cleaned_data['selection_id'] round.save() game_members = GameMember.filterByGame(game.game_id) # finds the game state that should be updated member = None for m in game_members: if str(m.user_id) == str(nomination.nominator_id): member = m break member.score += 10 member.save() # creates a new round, saves it and the game now = datetime.datetime.now() selector = random.choice(game_members) new_round = Round(selector_id=selector.user_id, phrase_card_id=PhraseCard.getRandom(game.deck).phrase_card_id, game_id=game.game_id, date_created=now, last_modified=now) new_round.save() game.current_round_id = new_round.round_id game.save() return RoundSerializer(new_round).data
def submit(self, request): ''' Submits this form to create the given game. ''' game_members = self.cleaned_data['game_members'] del self.cleaned_data['game_members'] self.cleaned_data['leader_id'] = UUID(request.user.pk) game = Game.fromMap(self.cleaned_data) game.save() members_added = {} for mem in game_members: try: mem = str(UUID(mem)) UserClient(request.auth).get(mem) # user exists so let's add him/her now = datetime.datetime.now() member = GameMember(game_member_id=str(uuid.uuid1()), game_id=UUID(game.game_id), user_id=UUID(mem), status=1, date_created=now, last_modified=now) member.save() members_added[member.game_member_id] = now except ValueError, UserClientError: continue
def submit(self, request): try: # get the game member by the group and user combination members = GameMember.filterByGame(self.cleaned_data['game_id']) member = None for m in members: if str(m.user_id) == request.user.pk: member = m break if not member: raise GameMemberNotFound() member.status = self.cleaned_data['status'] member.save() except CassaNotFoundException: raise GameMemberNotFound() return GameMemberSerializer(member).data
def submit(self, request): requests = [gm for gm in GameMember.filterByUser(request.user.pk) if gm.status == 1] return GameMemberSerializer(requests, many=True).data