From dd150ef3bbd273e7aeb8140a8f1a38e28bbcb8b3 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 16 Feb 2014 23:37:30 +0100 Subject: [PATCH] Added 'exact' keyword to player_search, allowing for fuzzy matching of player names. Resolves #422. --- src/players/manager.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/players/manager.py b/src/players/manager.py index 8e07829034..d7526c2943 100644 --- a/src/players/manager.py +++ b/src/players/manager.py @@ -103,19 +103,24 @@ class PlayerManager(TypedObjectManager, UserManager): return None @returns_typeclass_list - def player_search(self, ostring): + def player_search(self, ostring, exact=True): """ Searches for a particular player by name or database id. - ostring = a string or database id. + ostring - a string or database id. + exact - allow for a partial match """ dbref = self.dbref(ostring) if dbref or dbref == 0: + # bref search is always exact matches = self.filter(id=dbref) if matches: return matches - return self.filter(username__iexact=ostring) + if exact: + return self.filter(username__iexact=ostring) + else: + return self.filter(username__icontains=ostring) def swap_character(self, player, new_character, delete_old_character=False): """