Michael Hall has proposed merging lp:~mhall119/loco-directory/fixes-639772 into
lp:loco-directory.
Requested reviews:
loco-directory-dev (loco-directory-dev)
Related bugs:
#639772 New user name after LP login
https://bugs.launchpad.net/bugs/639772
Adds an API for setting open ids from launchpad, as well as a new
update-openids management command that will do this for all users in the system.
--
https://code.launchpad.net/~mhall119/loco-directory/fixes-639772/+merge/44311
Your team loco-directory-dev is requested to review the proposed merge of
lp:~mhall119/loco-directory/fixes-639772 into lp:loco-directory.
=== modified file 'loco_directory/common/launchpad.py'
--- loco_directory/common/launchpad.py 2010-08-24 15:24:40 +0000
+++ loco_directory/common/launchpad.py 2010-12-21 04:06:49 +0000
@@ -96,3 +96,37 @@
except:
pass
return timezone
+
+
+def get_permanent_openid_from_username(username):
+ import urllib
+ from openid.consumer.discover import OpenIDServiceEndpoint
+ url = "https://launchpad.net/~%s" % username
+ f = urllib.urlopen(url)
+ html = f.read()
+ services = OpenIDServiceEndpoint().fromHTML(url, html)
+ if services is not None and len(services) > 0:
+ return services[0]
+ else:
+ return None
+ # ... or use this line if you want the Ubuntu SSO OpenID:
+ # return services[0].local_id.replace('launchpad.net', 'ubuntu.com')
+
+def set_user_openid(user, force=False):
+ from django_openid_auth.models import UserOpenID
+ openids = UserOpenID.objects.filter(user=user)
+ if len(openids) == 0 or force:
+ if len(openids) == 0:
+ openid_assoc = UserOpenID(user=user)
+ else :
+ openid_assoc = openids[0]
+ openid = get_permanent_openid_from_username(user.username)
+ if openid is not None:
+ if force:
+ UserOpenID.objects.filter(claimed_id=openid.local_id).delete()
+ openid_assoc.claimed_id = openid.local_id
+ openid_assoc.display_id = openid.local_id
+ openid_assoc.save()
+ return True
+ return False
+
=== modified file 'loco_directory/teams/management/commands/lpupdate.py'
--- loco_directory/teams/management/commands/lpupdate.py 2010-09-30 11:56:43 +0000
+++ loco_directory/teams/management/commands/lpupdate.py 2010-12-21 04:06:49 +0000
@@ -5,7 +5,7 @@
from common import launchpad
from teams import models
from django.contrib.auth.models import Group
-from userprofiles.models import create_profile
+from userprofiles.models import UserProfile, create_profile
from datetime import datetime
import sys
@@ -24,8 +24,11 @@
ld_admin_set = set(ld_admin_names.keys())
lp_admin_set = set(lp_admin_names.keys())
for admin_name in ld_admin_set.difference(lp_admin_set):
- admin = ld_team.admin_profiles.get(user__username=admin_name)
- admin.delete()
+ try:
+ admin = ld_team.admin_profiles.get(user__username=admin_name)
+ admin.delete()
+ except UserProfile.DoesNotExist:
+ pass
for admin_name in lp_admin_set.difference(ld_admin_set):
admin = create_profile(admin_name)
admin.realname = lp_admin_names[admin_name]
=== added file 'loco_directory/teams/management/commands/update-openids.py'
--- loco_directory/teams/management/commands/update-openids.py 1970-01-01 00:00:00 +0000
+++ loco_directory/teams/management/commands/update-openids.py 2010-12-21 04:06:49 +0000
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+
+from django.core.management.base import NoArgsCommand
+
+from common import launchpad
+from django.contrib.auth.models import User
+
+class Command(NoArgsCommand):
+ help = "Set openid identity urls from launchpad"
+
+ def handle_noargs(self, **options):
+ for user in User.objects.all():
+ launchpad.set_user_openid(user, force=True)
=== modified file 'loco_directory/userprofiles/models.py'
--- loco_directory/userprofiles/models.py 2010-11-27 04:12:57 +0000
+++ loco_directory/userprofiles/models.py 2010-12-21 04:06:49 +0000
@@ -71,6 +71,8 @@
user, created = auth_models.User.objects.get_or_create(username=username)
if created:
user.save()
+ from common import launchpad
+ launchpad.set_user_openid(user)
profile, created = UserProfile.objects.get_or_create(user=user)
if created:
# set real name as username for now,
_______________________________________________
Mailing list: https://launchpad.net/~loco-directory-dev
Post to : [email protected]
Unsubscribe : https://launchpad.net/~loco-directory-dev
More help : https://help.launchpad.net/ListHelp