diff --git a/project/redirects.py b/project/redirects.py
index 7813a56..8c8b818 100644
--- a/project/redirects.py
+++ b/project/redirects.py
@@ -13,8 +13,9 @@
 from __future__ import division
 from __future__ import absolute_import
 
-import httplib
+from six.moves import http_client
 
+from framework import flaskservlet
 from framework import framework_helpers
 from framework import servlet
 from framework import urls
@@ -26,14 +27,24 @@
   def get(self, **kwargs):
     """Construct a 302 pointing at project.docs_url, or at adminIntro."""
     if not self.mr.project:
-      self.response.status = httplib.NOT_FOUND
+      # TODO(crbug.com/monorail/10936): status in Flask is status_code
+      # self.response.status_code = http_client.NOT_FOUND
+      self.response.status = http_client.NOT_FOUND
       return
     docs_url = self.mr.project.docs_url
     if not docs_url:
       docs_url = framework_helpers.FormatAbsoluteURL(
           self.mr, urls.ADMIN_INTRO, include_project=True)
     self.response.location = docs_url
-    self.response.status = httplib.MOVED_PERMANENTLY
+    # TODO(crbug.com/monorail/10936): status in Flask is status_code
+    # self.response.status_code = http_client.MOVED_PERMANENTLY
+    self.response.status = http_client.MOVED_PERMANENTLY
+
+  # def GetWikiListRedirect(self, **kwargs):
+  #   return self.handler(**kwargs)
+
+  # def GetWikiRedirect(self, **kwargs):
+  #   return self.handler(**kwargs)
 
 
 class SourceRedirect(servlet.Servlet):
@@ -42,11 +53,18 @@
   def get(self, **kwargs):
     """Construct a 302 pointing at project.source_url, or at adminIntro."""
     if not self.mr.project:
-      self.response.status = httplib.NOT_FOUND
+      # TODO(crbug.com/monorail/10936): status in Flask is status_code
+      # self.response.status_code = http_client.NOT_FOUND
+      self.response.status = http_client.NOT_FOUND
       return
     source_url = self.mr.project.source_url
     if not source_url:
       source_url = framework_helpers.FormatAbsoluteURL(
           self.mr, urls.ADMIN_INTRO, include_project=True)
     self.response.location = source_url
-    self.response.status = httplib.MOVED_PERMANENTLY
+    # TODO(crbug.com/monorail/10936): status in Flask is status_code
+    # self.response.status_code = http_client.MOVED_PERMANENTLY
+    self.response.status = http_client.MOVED_PERMANENTLY
+
+  # def GetSourceRedirect(self, **kwargs):
+  #   return self.handler(**kwargs)
