| 49 |   |         if (settings.PREPEND_WWW and old_url[0] and | 
          
          
            | 50 |   |                 not old_url[0].startswith('www.')): | 
          
          
            | 51 |   |             new_url[0] = 'www.' + old_url[0] | 
          
          
            | 52 |   |  | 
          
          
            | 53 |   |         # Append a slash if APPEND_SLASH is set and the URL doesn't have a | 
          
          
            | 54 |   |         # trailing slash and there is no pattern for the current path | 
          
          
            | 55 |   |         if settings.APPEND_SLASH and (not old_url[1].endswith('/')): | 
          
          
            | 56 |   |             try: | 
          
          
            | 57 |   |                 urlresolvers.resolve(request.path) | 
          
          
            | 58 |   |             except urlresolvers.Resolver404: | 
          
          
            | 59 |   |                 new_url[1] = new_url[1] + '/' | 
          
          
            | 60 |   |                 if settings.DEBUG and request.method == 'POST': | 
          
          
            | 61 |   |                     raise RuntimeError, ("" | 
          
          
            | 62 |   |                     "You called this URL via POST, but the URL doesn't end " | 
          
          
            | 63 |   |                     "in a slash and you have APPEND_SLASH set. Django can't " | 
          
          
            | 64 |   |                     "redirect to the slash URL while maintaining POST data. " | 
          
          
            | 65 |   |                     "Change your form to point to %s%s (note the trailing " | 
          
          
            | 66 |   |                     "slash), or set APPEND_SLASH=False in your Django " | 
          
          
            | 67 |   |                     "settings.") % (new_url[0], new_url[1]) | 
          
          
            | 68 |   |  | 
          
          
            | 69 |   |         if new_url != old_url: | 
          
          
            | 70 |   |             # Redirect if the target url exists | 
          
          
            | 71 |   |             try: | 
          
          
            | 72 |   |                 urlresolvers.resolve(new_url[1]) | 
          
          
            | 73 |   |             except urlresolvers.Resolver404: | 
          
          
            | 74 |   |                 pass | 
          
          
            | 75 |   |             else: | 
          
          
            | 76 |   |                 if new_url[0]: | 
          
          
            | 77 |   |                     newurl = "%s://%s%s" % ( | 
          
          
            | 78 |   |                         request.is_secure() and 'https' or 'http', | 
          
          
            | 79 |   |                         new_url[0], urlquote(new_url[1])) | 
          
          
            | 80 |   |                 else: | 
          
          
            | 81 |   |                     newurl = urlquote(new_url[1]) | 
          
          
            | 82 |   |                 if request.GET: | 
          
          
            | 83 |   |                     newurl += '?' + request.GET.urlencode() | 
          
          
            | 84 |   |                 return http.HttpResponsePermanentRedirect(newurl) | 
          
          
            | 85 |   |  | 
          
        
        
          
            |   | 85 | def _handle_redirects(request, resolve=True): | 
          
          
            |   | 86 |     host = request.get_host() | 
          
          
            |   | 87 |     old_url = [host, request.path] | 
          
          
            |   | 88 |     new_url = old_url[:] | 
          
          
            |   | 89 |  | 
          
          
            |   | 90 |     if (settings.PREPEND_WWW and old_url[0] and | 
          
          
            |   | 91 |             not old_url[0].startswith('www.')): | 
          
          
            |   | 92 |         new_url[0] = 'www.' + old_url[0] | 
          
          
            |   | 93 |  | 
          
          
            |   | 94 |     # Append a slash if APPEND_SLASH is set and the URL doesn't have a | 
          
          
            |   | 95 |     # trailing slash and there is no pattern for the current path | 
          
          
            |   | 96 |     if settings.APPEND_SLASH and (not old_url[1].endswith('/')): | 
          
          
            |   | 97 |         if resolve: | 
          
          
            |   | 98 |             try: | 
          
          
            |   | 99 |                 urlresolvers.resolve(request.path) | 
          
          
            |   | 100 |             except urlresolvers.Resolver404: | 
          
          
            |   | 101 |                 new_url[1] = new_url[1] + '/' | 
          
          
            |   | 102 |         else: | 
          
          
            |   | 103 |             new_url[1] = new_url[1] + '/' | 
          
          
            |   | 104 |  | 
          
          
            |   | 105 |     if new_url != old_url: | 
          
          
            |   | 106 |         # Redirect if the target url exists | 
          
          
            |   | 107 |         try: | 
          
          
            |   | 108 |             if resolve and new_url[0] == new_url[0] and new_url[1] != old_url[1]: | 
          
          
            |   | 109 |                 urlresolvers.resolve(new_url[1]) | 
          
          
            |   | 110 |         except urlresolvers.Resolver404: | 
          
          
            |   | 111 |             pass | 
          
          
            |   | 112 |         else: | 
          
          
            |   | 113 |             if new_url[0]: | 
          
          
            |   | 114 |                 newurl = "%s://%s%s" % ( | 
          
          
            |   | 115 |                     request.is_secure() and 'https' or 'http', | 
          
          
            |   | 116 |                     new_url[0], urlquote(new_url[1])) | 
          
          
            |   | 117 |             else: | 
          
          
            |   | 118 |                 newurl = urlquote(new_url[1]) | 
          
          
            |   | 119 |             if request.GET: | 
          
          
            |   | 120 |                 newurl += '?' + request.GET.urlencode() | 
          
          
            |   | 121 |             if settings.DEBUG and request.method == 'POST': | 
          
          
            |   | 122 |                 raise RuntimeError, ("" | 
          
          
            |   | 123 |                 "You called this URL via POST, but the URL doesn't end " | 
          
          
            |   | 124 |                 "in a slash and you have APPEND_SLASH set. Django can't " | 
          
          
            |   | 125 |                 "redirect to the slash URL while maintaining POST data. " | 
          
          
            |   | 126 |                 "Change your form to point to %s%s (note the trailing " | 
          
          
            |   | 127 |                 "slash), or set APPEND_SLASH=False in your Django " | 
          
          
            |   | 128 |                 "settings.") % (new_url[0], new_url[1]) | 
          
          
            |   | 129 |             return http.HttpResponsePermanentRedirect(newurl) | 
          
          
            |   | 130 |  |