def record_match_validations(req, args): bad = None dt = None player_2 = None valid_games = None try: bad = basic_validation(args, record_match_args) if bad: raise Exception() dt = datetime_valid(args['date'], args['month'], args['year']) bad = "invalid date" if not dt: raise Exception() bad = must_be_int(args, record_match_games_full) if bad: raise Exception() bad = paired_games(args, record_match_pairs) if bad: raise Exception() bad = "invalid player" player_2 = req.db.User.find_one(args['other_player_id']) if player_2 is None: raise Exception() valid_games = [] for i, game in enumerate(record_match_all_games): if i % 2 == 0: score1 = args.get(record_match_all_games[i]) score2 = args.get(record_match_all_games[i+1]) if (score1 is not None) and (score2 is not None): valid_games.append((score1, score2)) games_1_won = sum([1 if (game[0] > game[1]) else 0 for game in valid_games]) games_2_won = sum([1 if (game[1] > game[0]) else 0 for game in valid_games]) win_count = games_1_won if (games_1_won > games_2_won) else games_2_won bad = 'no outright winner' if games_1_won == games_2_won: raise Exception() bad = 'even number of won games' if win_count % 2 == 0: raise Exception() bad = None except Exception as e: #raise e pass return bad, dt, player_2, valid_games
def get(self): args = sanitised_params(self.request.arguments) bad = basic_validation(args, respond_challenge_args) if bad: self.write(bad_response(bad)) return else: state = args['state'] challenge_id = ObjectId(args['challenge_id']) challenge = self.db.Challenge.find_one(challenge_id) if not challenge: self.write(bad_response('invalid challenge')) return if state == 'accept': comment = args.get('comment') sender_id = ObjectId(args.get('sender_id')) valid = (challenge['recipient_id'] == self.current_user['_id']) and (challenge['sender_id'] == sender_id) if not valid: self.write(bad_response('invalid challenge')) return challenge['state'] = ChallengeState.Accepted if comment is not None: challenge['comments'].append(comment) self.db.Challenge.update(challenge['_id'], challenge) self.write(good_response()) elif state == 'decline': valid = challenge['recipient_id'] == self.current_user['_id'] if not valid: self.write(bad_response('invalid challenge')) return self.db.Challenge.delete(challenge_id) self.write(good_response()) elif state == 'close': valid = challenge['sender_id'] == self.current_user['_id'] if not valid: self.write(bad_response('invalid challenge')) return self.db.Challenge.delete(challenge_id) self.write(good_response())
def get(self): args = sanitised_params(self.request.arguments) bad = basic_validation(args, make_comment_args) if bad: self.write(bad_response(bad)) else: comment = self.db.Comment.get_default() comment['sender_id'] = self.current_user['_id'] comment['body'] = args['comment'] self.db.Comment.insert(comment) comment = tidy_comment(comment, { self.current_user['_id']: tidy_user(self.current_user) }) self.write(good_response(comment))
def get(self): args = sanitised_params(self.request.arguments) bad = basic_validation(args, send_challenge_args) if bad: self.write(bad_response(bad)) return else: recipient_id = ObjectId(args['user_id']) recipient = self.db.User.find_one(recipient_id) if not recipient: self.write(bad_response('invalid recipient')) return comment = args.get('comment') c = self.db.Challenge.get_default() c['sender_id'] = self.current_user['_id'] c['recipient_id'] = recipient_id if comment is not None: c['comments'].append(comment) c = self.db.Challenge.insert(c) self.write(good_response())