docs: def process_request(request):
          """Adds a "mobile" attribute to the request which is True or False
             depending on whether the request should be considered to come from a
             small-screen device such as a phone or a PDA"""
  
          if 'HTTP_X_OPERAMINI_FEATURES' in request.META:
              # Then it's running opera mini. 'Nuff said.
              # Reference from:
              # http://dev.opera.com/articles/view/opera-mini-request-headers/
              request.mobile = True
              return None
  
          if 'HTTP_ACCEPT' in request.META:
              s = request.META['HTTP_ACCEPT'].lower()
              if 'application/vnd.wap.xhtml+xml' in s:
                  # Then it's a wap browser
                  request.mobile = True
                  return None
  
          if 'HTTP_USER_AGENT' in request.META:
              # This takes the most processing. Surprisingly enough, when I
              # Experimented on my own machine, this was the most efficient
              # algorithm. Certainly more so than regexes.
              # Also, Caching didn't help much, with real-world caches.
              s = request.META['HTTP_USER_AGENT'].lower()
              for ua in search_strings:
                  if ua in s:
                      # check if we are ignoring this user agent: (IPad)
  
                      if not ignore_user_agent(s):
                          request.mobile = True
                          if MOBI_DETECT_TABLET:
                              request.tablet = _is_tablet(s)
                          return None
  
          # Otherwise it's not a mobile
          request.mobile = False
          request.tablet = False
          return None