def setUp(self):
        self.tag_name_alt = TAGS[1]
        self.all_tags = TAGS
        self.test_user_id = TEST_USER_ID
        engine, Session = startup()
        self.session = Session()
        self.test_game_id = TEST_GAME_ID
        self.test_game_ids = self.create_replay_names()

        test_user = self.session.query(Player).filter(Player.platformid == self.test_user_id).first()
        if test_user is None:
            test_user = Player(platformid=self.test_user_id)
            self.session.add(test_user)

        for i in range(len(self.test_game_ids)):
            tag_name = self.all_tags[i]
            tag = self.session.query(Tag).filter(Tag.owner == self.test_user_id, Tag.name == tag_name).first()
            if tag is None:
                tag = Tag(owner=self.test_user_id, name=tag_name)
                self.session.add(tag)

        for game_id in self.test_game_ids:
            game = self.session.query(Game).filter(Game.hash == game_id).first()
            if game is None:
                game = Game(hash=game_id)
                self.session.add(game)

        self.session.commit()

        # add some spice to the games :>
        for i in range(len(self.test_game_ids)):
            game_id = self.test_game_ids[i]
            for j in range(len(self.test_game_ids) - i):
                TagWrapper.add_tag_to_game(self.session, game_id, self.test_user_id, self.all_tags[j])
 def test_add_tag_to_replay_success(self):
     TagWrapper.add_tag_to_game(self.session, self.test_game_id, self.test_user_id, self.tag_name)
     tag = self.session.query(Tag).filter(Tag.owner == self.test_user_id, Tag.name == self.tag_name).first()
     game = self.session.query(Game).filter(Game.hash == self.test_game_id).first()
     self.assertIsNotNone(tag)
     self.assertIsNotNone(game)
     self.assertIn(tag, game.tags)
示例#3
0
def apply_tags_to_game(query_params: Dict[str, any] = None,
                       game_id=None,
                       session=None):
    if query_params is None:
        return None
    if 'tags' not in query_params and 'private_tag_keys' not in query_params:
        return None
    tags = query_params['tags'] if 'tags' in query_params else []
    private_ids = query_params[
        'private_tag_keys'] if 'private_tag_keys' in query_params else []
    if len(tags) > 0:
        player_id = query_params['player_id']
        if session.query(Player).filter(
                Player.platformid == player_id).first() is None:
            log_error(PlayerNotFound())
        else:
            for tag in tags:
                created_tag = Tag.create(tag,
                                         session=session,
                                         player_id=player_id)
                TagWrapper.add_tag_to_game(session, game_id,
                                           created_tag.db_tag)

    for private_id in private_ids:
        tag_id, private_key = Tag.decode_tag(private_id)
        tag = TagWrapper.get_tag_by_id(session, tag_id)
        if tag.private_id is not None and tag.private_id == private_key:
            TagWrapper.add_tag_to_game(session, game_id, tag)
 def test_remove_tag_from_replay_success(self):
     # a bit dirty to do it like this...
     TagWrapper.add_tag_to_game(self.session, self.test_game_id, self.test_user_id, self.tag_name)
     TagWrapper.remove_tag_from_game(self.session, self.test_game_id, self.test_user_id, self.tag_name)
     tag = self.session.query(Tag).filter(Tag.owner == self.test_user_id, Tag.name == self.tag_name).first()
     game = self.session.query(Game).filter(Game.hash == self.test_game_id).first()
     self.assertIsNotNone(tag)
     self.assertIsNotNone(game)
     self.assertNotIn(tag, game.tags)
示例#5
0
def initialize_database_tags(initialize_database_small_replays):
    from backend.blueprints.spa_api.service_layers.replay.json_tag import JsonTag
    from backend.database.wrapper.tag_wrapper import TagWrapper

    session = initialize_database_small_replays.get_session()
    replay_ids = initialize_database_small_replays.get_ids()

    tags = [
        ("tag1", 0, 5, "private_id1"),  # grabs the first 5 replays in the list
        ("tag2", 2, 2,
         None),  # starts at the 2nd replay and then gets the next 2
        ("tag3", -5, 4, "private_id2"),  # grabs the last 4 replays in the list
        ("tag4", -6, 4,
         None),  # starts 6 back from the end and grabs 4 replays
    ]

    tagged_games = {}
    for tag in tags:
        tagged_games[tag[0]] = []

        created_tag = JsonTag.create(tag[0],
                                     session=session,
                                     player_id=default_player_id(),
                                     private_id=tag[3])
        game_ids = replay_ids[tag[1]:tag[1] + tag[2]]
        for game_id in game_ids:
            tagged_games[tag[0]].append(game_id)
            TagWrapper.add_tag_to_game(session, game_id, created_tag.db_tag)

    class wrapper:
        def get_session(self):
            return session

        def get_protos(self):
            return initialize_database_small_replays.get_protos()

        def get_ids(self):
            return replay_ids

        def get_tags(self):
            return tags

        def get_tagged_games(self):
            return tagged_games

    return wrapper()
示例#6
0
 def add_tag_to_game(name: str, replay_id: str, session=None) -> None:
     try:
         TagWrapper.add_tag_to_game(session, replay_id, g.user.platformid,
                                    name)
     except DBTagNotFound:
         raise TagNotFound()
 def test_add_tag_to_replay_tag_not_found(self):
     with self.assertRaises(DBTagNotFound):
         TagWrapper.add_tag_to_game(self.session, self.test_game_id, self.test_user_id, TAGS[1])