Example #1
0
 def test_redirect(self, request):
     result = False
     old_url = base_url() + self.old
     new_path = self.overwrite if self.overwrite else self.new
     new_url = base_url() + new_path
     try:
         resp = requests.get(old_url)
     except ConnectionError:
         messages.add_message(
             request, messages.ERROR, ugettext(u"Can't connect to url: %(old_url)s") % {"old_url": old_url}
         )
         result = None
     except RequestException as e:
         messages.add_message(request, messages.ERROR, "%s: %s" % (e, self.old))
         result = None
     else:
         # successfull request, test for history
         if resp.status_code == 200:
             try:
                 # first history entry should be the redirect
                 redir = resp.history[0]
                 if redir.status_code == 301:
                     location = redir.headers.get("Location")
                     # location of redirect has to match
                     # Django 1.9 will send back relative urls
                     # if run via dev server
                     # Both absolute and relative urls should
                     # be accounted for
                     # https://en.wikipedia.org/wiki/HTTP_location
                     if location == new_url or location == new_path:
                         result = True
             except IndexError:
                 pass
     self.last_test_result = result
     self.last_test_date = now()
     self.save()
     return result
Example #2
0
 def manual_test(self, obj):
     link = base_url() + obj.old
     return format_html('<a class="button" href="%s" target="_blank">Link</a>' % link)