docs: def doProcess(self):
          """Handle the redirect from the OpenID server.
          """
          oidconsumer = self.getConsumer()
  
          # Ask the library to check the response that the server sent
          # us.  Status is a code indicating the response type. info is
          # either None or a string containing more information about
          # the return type.
          url = 'http://'+self.headers.get('Host')+self.path
          info = oidconsumer.complete(self.query, url)
  
          sreg_resp = None
          pape_resp = None
          css_class = 'error'
          display_identifier = info.getDisplayIdentifier()
  
          if info.status == consumer.FAILURE and display_identifier:
              # In the case of failure, if info is non-None, it is the
              # URL that we were verifying. We include it in the error
              # message to help the user figure out what happened.
              fmt = "Verification of %s failed: %s"
              message = fmt % (cgi.escape(display_identifier),
                               info.message)
          elif info.status == consumer.SUCCESS:
              # Success means that the transaction completed without
              # error. If info is None, it means that the user cancelled
              # the verification.
              css_class = 'alert'
  
              # This is a successful verification attempt. If this
              # was a real application, we would do our login,
              # comment posting, etc. here.
              fmt = "You have successfully verified %s as your identity."
              message = fmt % (cgi.escape(display_identifier),)
              sreg_resp = sreg.SRegResponse.fromSuccessResponse(info)
              pape_resp = pape.Response.fromSuccessResponse(info)
              if info.endpoint.canonicalID:
                  # You should authorize i-name users by their canonicalID,
                  # rather than their more human-friendly identifiers.  That
                  # way their account with you is not compromised if their
                  # i-name registration expires and is bought by someone else.
                  message += ("  This is an i-name, and its persistent ID is %s"
                              % (cgi.escape(info.endpoint.canonicalID),))
          elif info.status == consumer.CANCEL:
              # cancelled
              message = 'Verification cancelled'
          elif info.status == consumer.SETUP_NEEDED:
              if info.setup_url:
                  message = '<a href=%s>Setup needed</a>' % (
                      quoteattr(info.setup_url),)
              else:
                  # This means auth didn't succeed, but you're welcome to try
                  # non-immediate mode.
                  message = 'Setup needed'
          else:
              # Either we don't understand the code or there is no
              # openid_url included with the error. Give a generic
              # failure message. The library should supply debug
              # information in a log.
              message = 'Verification failed.'
  
          self.render(message, css_class, display_identifier,
                      sreg_data=sreg_resp, pape_data=pape_resp)