Ticket #4540: echelon_escape_like2.patch

File echelon_escape_like2.patch, 1.6 KB (added by user1, 7 years ago)

This version uses the method escape_like from sqlalchemy_utils. (note that this will require installing the package python3-sqlalchemy-utils on the server) (reuploaded)

  • source/tools/XpartaMuPP/EcheLOn.py

     
    2727from sleekxmpp.xmlstream.matcher import StanzaPath
    2828
    2929from sqlalchemy import func
     30from sqlalchemy_utils import escape_like
    3031
    3132from LobbyRanking import session as db, Game, Player, PlayerInfo
    3233from ELO import get_rating_adjustment
     
    4546      Retrieves the profile for the specified JID
    4647    """
    4748    stats = {}
    48     player = db.query(Player).filter(Player.jid.ilike(str(JID)))
     49    player = db.query(Player).filter(Player.jid.ilike(escape_like(str(JID)), "*"))
    4950
    5051    if not player.first():
    5152      return
     
    109110               dict.values(gamereport['playerStates']))):
    110111      return None
    111112
    112     players = map(lambda jid: db.query(Player).filter(Player.jid.ilike(str(jid))).first(),
     113    players = map(lambda jid: db.query(Player).filter(Player.jid.ilike(escape_like(str(jid)), "*")).first(),
    113114                  dict.keys(gamereport['playerStates']))
    114115
    115116    winning_jid = list(dict.keys({jid: state for jid, state in
     
    154155    game = Game(map=gamereport['mapName'], duration=int(gamereport['timeElapsed']), teamsLocked=bool(gamereport['teamsLocked']), matchID=gamereport['matchID'])
    155156    game.players.extend(players)
    156157    game.player_info.extend(playerInfos)
    157     game.winner = db.query(Player).filter(Player.jid.ilike(str(winning_jid))).first()
     158    game.winner = db.query(Player).filter(Player.jid.ilike(escape_like(str(winning_jid)), "*")).first()
    158159    db.add(game)
    159160    db.commit()
    160161    return game