class Realm(object): implements(portal.IRealm) def __init__(self, DSage): self.DSage = DSage def requestAvatar(self, avatarId, mind, *interfaces): if not pb.IPerspective in interfaces: raise NotImplementedError, "No supported avatar interface." else: if avatarId == 'admin': avatar = AdminPerspective(self.DSage) else: avatar = UserPerspective(self.DSage) avatar.attached(mind) return pb.IPerspective, avatar, lambda a=avatar:a.detached(mind)