code: def build_return_url(self):
          '''
          If the Tool Consumer sent a return URL, add any set messages to the
          URL.
          '''
          if not self.launch_presentation_return_url:
              return None
  
          lti_message_fields = ['lti_errormsg', 'lti_errorlog',
                                'lti_msg', 'lti_log']
  
          messages = dict([(key, getattr(self, key))
                           for key in lti_message_fields
                           if getattr(self, key, None)])
  
          # Disassemble original return URL and reassemble with our options added
          original = urlsplit(self.launch_presentation_return_url)
  
          combined = messages.copy()
          combined.update(dict(parse_qsl(original.query)))
  
          combined_query = urlencode(combined)
  
          return urlunsplit((
              original.scheme,
              original.netloc,
              original.path,
              combined_query,
              original.fragment
          )f build_return_url(self):
          '''
          If the Tool Consumer sent a return URL, add any set messages to the
          URL.
          '''
          if not self.launch_presentation_return_url:
              return None
  
          lti_message_fields = ['lti_errormsg', 'lti_errorlog',
                                'lti_msg', 'lti_log']
  
          messages = dict([(key, getattr(self, key))
                           for key in lti_message_fields
                           if getattr(self, key, None)])
  
          # Disassemble original return URL and reassemble with our options added
          original = urlsplit(self.launch_presentation_return_url)
  
          combined = messages.copy()
          combined.update(dict(parse_qsl(original.query)))
  
          combined_query = urlencode(combined)
  
          return urlunsplit((
              original.scheme,
              original.netloc,
              original.path,
              combined_query,
              original.fragment
          ))
docs: If the Tool Consumer sent a return URL, add any set messages to the
          URL.