def request_to_join_team(team_id):
    # know the team will be found since decorator checks team exists
    team = Team.query.get(team_id)
    join = JoinLeagueRequest(current_user.email, current_user.name, team,
                             current_user.gender)
    DB.session.add(join)
    DB.session.commit()
    return Response(json.dumps(join.json()),
                    status=200,
                    mimetype="application/json")
def create_league_request():
    """Creates a league request for testing purposes."""
    request_info = request.get_json(silent=True)
    team = Team.query.get(request_info.get("team_id"))
    league_request = JoinLeagueRequest(request_info.get("email"),
                                       request_info.get("player_name"), team,
                                       request_info.get('gender'))
    LOGGER.info(f"Creating join league request: {request_info}")
    DB.session.add(league_request)
    DB.session.commit()
    return Response(json.dumps(league_request.json()),
                    200,
                    mimetype='application/json')
Exemplo n.º 3
0
def join_league():
    """A form submission to ask to join the league."""
    # ensure given an email
    email = session.get("oauth_email", None)
    if email is None:
        # it should have been stored after authenicating
        message = "Sorry, the authentication provider did not give an email"
        raise OAuthException(message)
    # double check the player email has not be taken
    player = Player.query.filter(Player.email == email).first()
    if player is not None:
        login_user(player)
        return redirect(url_for("homepage"))
    # double check this is not refresh page issue
    pending_request = JoinLeagueRequest.query.filter(
        func.lower(JoinLeagueRequest.email) == email.lower()).first()
    if pending_request is not None:
        raise HaveLeagueRequestException("Double submit on form")
    # ensure the selected team exists
    team_id = request.form.get("team", None)
    if team_id is None:
        raise TeamDoesNotExist(f"Team does not exist - {team_id}")
    team = Team.query.get(team_id)
    if team is None:
        raise TeamDoesNotExist(f"Team does not exist - {team_id}")

    # save the request
    player_name = request.form.get("name", None)
    gender = "F" if request.form.get("is_female", False) else "M"
    league_request = JoinLeagueRequest(email, player_name, team, gender)
    DB.session.add(league_request)
    DB.session.commit()
    return redirect(url_for("league_request_sent"))
Exemplo n.º 4
0
    def testAcceptJoinLeagueRequestExistingPlayer(self):
        name = str(uuid.uuid1())
        email = name + "@mlsb.ca"
        some_gender = "m"
        player = self.add_player(name, email, gender=some_gender)
        color = str(uuid.uuid1())
        league = self.add_league(str(uuid.uuid1()))
        sponsor = self.add_sponsor(str(uuid.uuid1()))
        team_json = self.add_team(color, sponsor=sponsor, league=league)
        team = Team.query.get(team_json['team_id'])
        league_request = JoinLeagueRequest(email, player, team, some_gender)
        accepted_player = league_request.accept_request()

        # check player is one team now
        self.assertEqual(accepted_player.id, player['player_id'],
                         "Use player account when joining team")
        team = Team.query.get(team_json['team_id'])
        self.assertTrue(
            bool([True for p in team.players if p.id == player['player_id']]),
            "Existing player added was not added to team")
Exemplo n.º 5
0
    def testAcceptJoinLeagueRequestNewPlayer(self):
        player = str(uuid.uuid1())
        email = player + "@mlsb.ca"
        some_gender = "m"
        color = str(uuid.uuid1())
        league = self.add_league(str(uuid.uuid1()))
        sponsor = self.add_sponsor(str(uuid.uuid1()))
        team_json = self.add_team(color, sponsor=sponsor, league=league)
        team = Team.query.get(team_json['team_id'])
        league_request = JoinLeagueRequest(email, player, team, some_gender)
        accepted_player = league_request.accept_request()

        # check player is one team now
        self.assertTrue(accepted_player.id is not None,
                        "Create player account when joining team")
        team = Team.query.get(team_json['team_id'])
        self.assertTrue(
            bool([
                True for p in team.players
                if p.email == email and p.id is not None
            ]), "New player added was not added to team")
Exemplo n.º 6
0
    def testJoinLeagueRequestInit(self):
        """ Test the constructor validates the given data"""
        player = str(uuid.uuid1())
        email = player + "@mlsb.ca"
        some_gender = "m"
        color = str(uuid.uuid1())
        league = self.add_league(str(uuid.uuid1()))
        sponsor = self.add_sponsor(str(uuid.uuid1()))
        no_team = Team(color="Black",
                       sponsor_id=sponsor['sponsor_id'],
                       league_id=league['league_id'])
        team_json = self.add_team(color, sponsor=sponsor, league=league)
        team = Team.query.get(team_json['team_id'])

        # good request and test json method
        league_request = JoinLeagueRequest(email, player, team, some_gender)
        league_request.json()

        # bad stuff
        try:
            JoinLeagueRequest(1, player, team, some_gender)
            self.assertEqual(False, True, "Should raise invalid field")
        except InvalidField:
            pass
        try:
            JoinLeagueRequest(email, 1, team, some_gender)
            self.assertEqual(False, True, "Should raise invalid field")
        except InvalidField:
            pass
        try:
            JoinLeagueRequest(email, player, "wrong team", some_gender)
            self.assertEqual(False, True, "Should raise team does not exist")
        except TeamDoesNotExist:
            pass
        try:
            JoinLeagueRequest(email, player, no_team, some_gender)
            self.assertEqual(False, True, "Should raise team does not exist")
        except TeamDoesNotExist:
            pass
        try:
            JoinLeagueRequest(email, player, team, "XX")
            self.assertEqual(False, True, "Should raise invalid field")
        except InvalidField:
            pass
Exemplo n.º 7
0
 def testAcceptJoinLeagueRequestTwice(self):
     name = str(uuid.uuid1())
     email = name + "@mlsb.ca"
     some_gender = "m"
     player = self.add_player(name, email, gender=some_gender)
     color = str(uuid.uuid1())
     league = self.add_league(str(uuid.uuid1()))
     sponsor = self.add_sponsor(str(uuid.uuid1()))
     team_json = self.add_team(color, sponsor=sponsor, league=league)
     team = Team.query.get(team_json['team_id'])
     league_request = JoinLeagueRequest(email, player, team, some_gender)
     league_request.accept_request()
     try:
         league_request.accept_request()
         self.assertTrue(
             False, "Should not be able to accept request league twice")
     except HaveLeagueRequestException:
         pass