docs: def ReadApprovalRequests(self,
                             requestor_username,
                             approval_type,
                             subject_id=None,
                             include_expired=False,
                             cursor=None):
      """Reads approval requests of a given type for a given user."""
  
      query = """
          SELECT
              ar.approval_id,
              UNIX_TIMESTAMP(ar.timestamp),
              ar.approval_request,
              u.username,
              UNIX_TIMESTAMP(ag.timestamp)
          FROM approval_request ar
          LEFT JOIN approval_grant AS ag USING (username_hash, approval_id)
          LEFT JOIN grr_users u ON u.username_hash = ag.grantor_username_hash
          WHERE ar.username_hash = %s AND ar.approval_type = %s
          """
  
      args = [mysql_utils.Hash(requestor_username), int(approval_type)]
  
      if subject_id:
        query += " AND ar.subject_id = %s"
        args.append(subject_id)
  
      query += " ORDER BY ar.approval_id"
  
      ret = []
      now = rdfvalue.RDFDatetime.Now()
      cursor.execute(query, args)
      for approval_request in _ResponseToApprovalsWithGrants(cursor.fetchall()):
        if include_expired or approval_request.expiration_time >= now:
          ret.append(approval_request)
      return ret