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

Reply via email to