code: def generate_session_token(self, auth_token: str):
      while True:
          session_token = gen_token()
          result = get_by_session_token(session_token)
          if result is None:
              if self.session_token_owners.get(auth_token) is None:
                  self.session_token_owners[auth_token] = set()
              self.session_token_owners[auth_token].add(session_token)
              self.session_tokens[session_token] = (
                  time.time() + SESSION_VALIDITY
              )
              UserSessionTokenIndex.set(session_token, self.key)
              self.save()
              return session_token
  
imports: import time
  from labml_db import Model, Key, Index
  from typing import List, Dict, Optional, Set, Any
  from .None import project
  from ..None import utils
  from ..utils import gen_token
label_desc: Use image node_id 7 for calling the User obj's underlying member method code with example usage: obj.generate_session_token(auth_token) and returns: session_token