Don't fail on creating new oauth accounts with no first/last name
authorMagnus Hagander <magnus@hagander.net>
Mon, 4 Sep 2017 10:31:08 +0000 (12:31 +0200)
committerMagnus Hagander <magnus@hagander.net>
Mon, 4 Sep 2017 10:32:11 +0000 (12:32 +0200)
If no first or last name is given, fall back to the method of using the
email address to suggest only.

In passing, split out the references to the session in own variables to
make the code a lot easier to read.

pgweb/account/views.py

index 45c725726577bfaa3edab9549a6e05370a8ab10f..d470898302190e0f3edcf7bdd136415bf8b73828 100644 (file)
@@ -371,13 +371,19 @@ def signup_oauth(request):
        else:
                # Generate possible new username
                suggested_username = request.session['oauth_email'].replace('@', '.')[:30]
-               for u in itertools.chain([
-                               u"{0}{1}".format(request.session['oauth_firstname'].lower(), request.session['oauth_lastname'][0].lower()),
-                               u"{0}{1}".format(request.session['oauth_firstname'][0].lower(), request.session['oauth_lastname'].lower()),
-               ], (u"{0}{1}{2}".format(request.session['oauth_firstname'].lower(), request.session['oauth_lastname'][0].lower(), n) for n in xrange(100))):
-                       if not User.objects.filter(username=u[:30]).exists():
-                               suggested_username = u[:30]
-                               break
+
+               # Auto generation requires firstnamea and lastname to be specified
+               f = request.session['oauth_firstname'].lower()
+               l = request.session['oauth_lastname'].lower()
+               if f and l:
+                       for u in itertools.chain([
+                                       u"{0}{1}".format(f, l[0]),
+                                       u"{0}{1}".format(f[0], l),
+                       ], (u"{0}{1}{2}".format(f, l[0], n) for n in xrange(100))):
+                               if not User.objects.filter(username=u[:30]).exists():
+                                       suggested_username = u[:30]
+                                       break
+
                form = SignupOauthForm(initial={
                        'username': suggested_username,
                        'email': request.session['oauth_email'],