def lookupUser(self, name): """ Looks for the given user first in the local store and failing that in the database. If found in the databse, checks the session for validity - if the session is valid the user must be connected to some other node, so a ShardedUser with a ProxyIRCDDUser for mind is returned. If the session is not valid, fail with NoSuchUser. :param name: the name of the user to look for. """ assert isinstance(name, unicode) name = name.lower() local_user = self.users.get(name) if local_user: return defer.succeed(local_user) remote_user = self.ctx.db.lookupUser(name) user_session = self.ctx.db.lookupUserSession(name) # User exists and session is active, so he must be # connected to some remote if remote_user and user_session and user_session["active"]: return defer.succeed( ShardedUser(self.ctx, name, ProxyIRCDDUser(self.ctx, name))) return defer.fail(failure.Failure(ewords.NoSuchUser(name)))
def lookupUser(self, name): name = name.lower() try: user = self.users[name] except KeyError: return defer.fail(failure.Failure(ewords.NoSuchUser(name))) else: return defer.succeed(user)
def lookupUser(self, name): print "LOOKUPUSER", name assert isinstance(name, unicode) users = {} for g in self.groups.values(): users.update(g.users) if name in users: return defer.succeed(users[name]) if self.so.lookupuser(name): return defer.succeed(SoUser(name)) else: return defer.fail(failure.Failure(ewords.NoSuchUser(name)))