docs: def _get_workflow_with_uuid_or_name(uuid_or_name, user_uuid):
      """Get Workflow from database with uuid or name.
  
      :param uuid_or_name: String representing a valid UUIDv4 or valid
          Workflow name. Valid name contains only ASCII alphanumerics.
  
          Name might be in format 'reana.workflow.123' with arbitrary
          number of dot-delimited substrings, where last substring specifies
          the run number of the workflow this workflow name refers to.
  
          If name does not contain a valid run number, but it is a valid name,
          workflow with latest run number of all the workflows with this name
          is returned.
      :type uuid_or_name: String
  
      :rtype: reana-db.models.Workflow
      """
      from reana_db.models import Workflow
      # Check existence
      if not uuid_or_name:
          raise ValueError('No Workflow was specified.')
  
      # Check validity
      try:
          uuid_or_name.encode('ascii')
      except UnicodeEncodeError:
          # `workflow_name` contains something else than just ASCII.
          raise ValueError('Workflow name {} is not valid.'.format(uuid_or_name))
  
      # Check if UUIDv4
      try:
          # is_uuid = UUID(uuid_or_name, version=4)
          is_uuid = UUID('{' + uuid_or_name + '}', version=4)
      except (TypeError, ValueError):
          is_uuid = None
  
      if is_uuid:
          # `uuid_or_name` is an UUIDv4.
          # Search with it since it is expected to be unique.
          return _get_workflow_by_uuid(uuid_or_name)
  
      else:
          # `uuid_or_name` is not and UUIDv4. Expect it is a name.
  
          # Expect name might be in format 'reana.workflow.123' with arbitrary
          # number of dot-delimited substring, where last substring specifies
          # the run_number of the workflow this workflow name refers to.
  
          # Possible candidates for names are e.g. :
          # 'workflow_name' -> ValueError
          # 'workflow.name' -> True, True
          # 'workflow.name.123' -> True, True
          # '123.' -> True, False
          # '' -> ValueError
          # '.123' -> False, True
          # '..' -> False, False
          # '123.12' -> True, True
          # '123.12.' -> True, False
  
          # Try to split the dot-separated string.
          try:
              workflow_name, run_number = uuid_or_name.rsplit('.', maxsplit=1)
          except ValueError:
              # Couldn't split. Probably not a dot-separated string.
              #  -> Search with `uuid_or_name`
              return _get_workflow_by_name(uuid_or_name, user_uuid)
  
          # Check if `run_number` was specified
          if not run_number:
              # No `run_number` specified.
              # -> Search by `workflow_name`
              return _get_workflow_by_name(workflow_name, user_uuid)
  
          # `run_number` was specified.
          # Check `run_number` is valid.
          if not run_number.isdigit():
              # `uuid_or_name` was split, so it is a dot-separated string
              # but it didn't contain a valid `run_number`.
              # Assume that this dot-separated string is the name of
              # the workflow and search with it.
              return _get_workflow_by_name(uuid_or_name, user_uuid)
  
          # `run_number` is valid.
          # Search by `run_number` since it is a primary key.
          workflow = Workflow.query.filter(
              Workflow.name == workflow_name,
              Workflow.run_number == run_number,
              Workflow.owner_id == user_uuid).\
              one_or_none()
          if not workflow:
              raise ValueError(
                  'REANA_WORKON is set to {0}, but '
                  'that workflow does not exist. '
                  'Please set your REANA_WORKON environment '
                  'variable appropriately.'.
                  format(workflow_name, run_number))
  
          return workflow