diff --git a/framework/servlet_helpers.py b/framework/servlet_helpers.py
index 89fe587..fddec26 100644
--- a/framework/servlet_helpers.py
+++ b/framework/servlet_helpers.py
@@ -12,7 +12,7 @@
 import calendar
 import datetime
 import logging
-import urllib
+from six.moves import urllib
 import time
 
 from framework import framework_constants
@@ -175,7 +175,7 @@
       perm, mr.auth.effective_ids, project, permissions.GetRestrictions(art))
 
 
-def ComputeIssueEntryURL(mr, config):
+def ComputeIssueEntryURL(mr):
   """Compute the URL to use for the "New issue" subtab.
 
   Args:
@@ -187,13 +187,12 @@
     case. Otherewise it will be a fully qualified URL that includes some
     query string parameters.
   """
-  # TODO: remove the custom_issue_entry_url since its no longer
-  if not config.custom_issue_entry_url:
+  isMember = framework_bizobj.UserIsInProject(mr.project, mr.auth.effective_ids)
+  if mr.project_name == 'chromium' and not isMember:
+    return '/p/chromium/issues/wizard'
+  else:
     return '/p/%s/issues/entry' % (mr.project_name)
 
-  return '/p/chromium/issues/wizard'
-
-
 def IssueListURL(mr, config, query_string=None):
   """Make an issue list URL for non-members or members."""
   url = '/p/%s%s' % (mr.project_name, urls.ISSUE_LIST)
@@ -201,7 +200,7 @@
     url += '?' + query_string
   elif framework_bizobj.UserIsInProject(mr.project, mr.auth.effective_ids):
     if config and config.member_default_query:
-      url += '?q=' + urllib.quote_plus(config.member_default_query)
+      url += '?q=' + urllib.parse.quote_plus(config.member_default_query)
   return url
 
 
@@ -212,22 +211,25 @@
 
 def SafeCreateLoginURL(mr, continue_url=None):
   """Make a login URL w/ a detailed continue URL, otherwise use a short one."""
-  continue_url = continue_url or mr.current_page_url
+  current_page_url = mr.current_page_url_encoded
+  if settings.local_mode:
+    current_page_url = mr.current_page_url
+  continue_url = continue_url or current_page_url
   try:
-    url = users.create_login_url(continue_url)
+    # Check the URL length
+    generated_login_url = users.create_login_url(continue_url)
   except users.RedirectTooLongError:
     if mr.project_name:
-      url = users.create_login_url('/p/%s' % mr.project_name)
+      continue_url = '/p/%s' % mr.project_name
     else:
-      url = users.create_login_url('/')
-
-  # Give the user a choice of existing accounts in their session
-  # or the option to add an account, even if they are currently
-  # signed in to exactly one account.
-  if mr.auth.user_id:
-    # Notice: this makes assuptions about the output of users.create_login_url,
-    # which can change at any time. See https://crbug.com/monorail/3352.
-    url = url.replace('/ServiceLogin', '/AccountChooser', 1)
+      continue_url = '/'
+  if settings.local_mode:
+    return generated_login_url
+  # URL to allow user to choose an account when >1 account is logged in.
+  redirect_url = (
+      'https://accounts.google.com/AccountChooser?continue='
+      'https://uc.appengine.google.com/_ah/conflogin%3Fcontinue%3D{}')
+  url = redirect_url.format(continue_url)
   return url
 
 
