Commit 730b7c62 by Jason Bau

Merge pull request #1081 from edx/jbau/shib-bugfixes

Jbau/shib bugfixes
parents b4ce6946 b48e3a96
...@@ -514,8 +514,16 @@ class ShibUtilFnTest(TestCase): ...@@ -514,8 +514,16 @@ class ShibUtilFnTest(TestCase):
""" """
def test__flatten_to_ascii(self): def test__flatten_to_ascii(self):
DIACRITIC = u"àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸåÅçÇ" # pylint: disable=C0103 DIACRITIC = u"àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸåÅçÇ" # pylint: disable=C0103
STR_DIACRI = "àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸåÅçÇ" # pylint: disable=C0103
FLATTENED = u"aeiouAEIOUaeiouyAEIOUYaeiouAEIOUanoANOaeiouyAEIOUYaAcC" # pylint: disable=C0103 FLATTENED = u"aeiouAEIOUaeiouyAEIOUYaeiouAEIOUanoANOaeiouyAEIOUYaAcC" # pylint: disable=C0103
self.assertEqual(_flatten_to_ascii(u'jas\xf6n'), u'jason') # umlaut self.assertEqual(_flatten_to_ascii(u'jas\xf6n'), u'jason') # umlaut
self.assertEqual(_flatten_to_ascii(u'Jason\u5305'), u'Jason') # mandarin, so it just gets dropped self.assertEqual(_flatten_to_ascii(u'Jason\u5305'), u'Jason') # mandarin, so it just gets dropped
self.assertEqual(_flatten_to_ascii(u'abc'), u'abc') # pass through self.assertEqual(_flatten_to_ascii(u'abc'), u'abc') # pass through
self.assertEqual(_flatten_to_ascii(DIACRITIC), FLATTENED)
unicode_test = _flatten_to_ascii(DIACRITIC)
self.assertEqual(unicode_test, FLATTENED)
self.assertIsInstance(unicode_test, unicode)
str_test = _flatten_to_ascii(STR_DIACRI)
self.assertEqual(str_test, FLATTENED)
self.assertIsInstance(str_test, str)
...@@ -34,7 +34,6 @@ try: ...@@ -34,7 +34,6 @@ try:
except ImportError: except ImportError:
from django.contrib.csrf.middleware import csrf_exempt from django.contrib.csrf.middleware import csrf_exempt
from django_future.csrf import ensure_csrf_cookie from django_future.csrf import ensure_csrf_cookie
from util.cache import cache_if_anonymous
import django_openid_auth.views as openid_views import django_openid_auth.views as openid_views
from django_openid_auth import auth as openid_auth from django_openid_auth import auth as openid_auth
...@@ -137,8 +136,6 @@ def _external_login_or_signup(request, ...@@ -137,8 +136,6 @@ def _external_login_or_signup(request,
fullname, fullname,
retfun=None): retfun=None):
"""Generic external auth login or signup""" """Generic external auth login or signup"""
logout(request)
# see if we have a map from this external_id to an edX username # see if we have a map from this external_id to an edX username
try: try:
eamap = ExternalAuthMap.objects.get(external_id=external_id, eamap = ExternalAuthMap.objects.get(external_id=external_id,
...@@ -233,13 +230,15 @@ def _flatten_to_ascii(txt): ...@@ -233,13 +230,15 @@ def _flatten_to_ascii(txt):
""" """
Flattens possibly unicode txt to ascii (django username limitation) Flattens possibly unicode txt to ascii (django username limitation)
@param name: @param name:
@return: @return: the flattened txt (in the same type as was originally passed in)
""" """
return unicodedata.normalize('NFKD', txt).encode('ASCII', 'ignore') if isinstance(txt, str):
txt = txt.decode('utf-8')
return unicodedata.normalize('NFKD', txt).encode('ASCII', 'ignore')
else:
return unicode(unicodedata.normalize('NFKD', txt).encode('ASCII', 'ignore'))
@ensure_csrf_cookie @ensure_csrf_cookie
@cache_if_anonymous
def _signup(request, eamap): def _signup(request, eamap):
""" """
Present form to complete for signup via external authentication. Present form to complete for signup via external authentication.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment