Merge lp:~ronnie.vd.c/loco-team-portal/userprofile_creation into lp:loco-team-portal

Proposed by Ronnie
Status: Merged
Merge reported by: Adnane Belmadiaf
Merged at revision: not available
Proposed branch: lp:~ronnie.vd.c/loco-team-portal/userprofile_creation
Merge into: lp:loco-team-portal
Diff against target: 124 lines (+39/-30)
3 files modified
loco_directory/events/views.py (+2/-6)
loco_directory/userprofiles/management/commands/update-profiles.py (+3/-16)
loco_directory/userprofiles/models.py (+34/-8)
To merge this branch: bzr merge lp:~ronnie.vd.c/loco-team-portal/userprofile_creation
Reviewer Review Type Date Requested Status
Adnane Belmadiaf Needs Fixing
Review via email: mp+107603@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Adnane Belmadiaf (daker) wrote :

1- Move create_userprofile to signals.py
2- Added tests http://paste.ubuntu.com/1012174/
3- pylint pls :) our code is rated 5/10 .

review: Needs Fixing
Revision history for this message
Adnane Belmadiaf (daker) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'loco_directory/events/views.py'
2--- loco_directory/events/views.py 2012-02-15 15:56:28 +0000
3+++ loco_directory/events/views.py 2012-05-28 10:45:22 +0000
4@@ -301,9 +301,7 @@
5 if team_event_object.is_attending(request.user):
6 attendee_object = team_event_object.attendee_set.get(attendee_profile__user=request.user)
7 else:
8- from userprofiles.models import create_profile
9- profile = create_profile(request.user.username)
10- attendee_object = Attendee(team_event=team_event_object, attendee_profile=profile)
11+ attendee_object = Attendee(team_event=team_event_object, attendee_profile=request.user.get_profile())
12
13 if request.method == 'POST':
14 form = AttendeeRegistrationForm(instance=attendee_object, data=request.POST)
15@@ -338,9 +336,7 @@
16 if form.is_valid():
17 team_event_comment = form.save(commit=False)
18 team_event_comment.team_event = team_event_object
19- from userprofiles.models import create_profile
20- profile = create_profile(request.user.username)
21- team_event_comment.commenter_profile = profile
22+ team_event_comment.commenter_profile = request.user.get_profile()
23 team_event_comment.save()
24 request.user.message_set.create(message=_('Comment saved.'))
25 return redirect( team_event_object )
26
27=== modified file 'loco_directory/userprofiles/management/commands/update-profiles.py'
28--- loco_directory/userprofiles/management/commands/update-profiles.py 2010-12-28 21:41:10 +0000
29+++ loco_directory/userprofiles/management/commands/update-profiles.py 2012-05-28 10:45:22 +0000
30@@ -5,7 +5,7 @@
31
32 from common import launchpad
33 from django.contrib.auth.models import User, Group
34-from userprofiles.models import UserProfile, create_profile
35+from userprofiles.models import UserProfile, create_userprofile
36
37 from datetime import datetime
38 import sys
39@@ -22,18 +22,5 @@
40 ld_users = User.objects.all()
41
42 for ld_user in ld_users:
43- if not ld_user.username in USER_BLACKLIST:
44- profile, created = UserProfile.objects.get_or_create(user=ld_user)
45- try:
46- lp_user = lp.people[ld_user.username]
47- profile.tz = lp_user.time_zone or "UTC"
48- profile.realname = lp_user.display_name or user.username
49- if lp_user.logo_link.startswith("https://") :
50- profile.mugshot = lp_user.logo_link
51- else:
52- profile.mugshot = "https://launchpad.net/@@/person-logo"
53- profile.save()
54- except Exception, e:
55- print "Error updating %s" % ld_user
56- print e
57- pass
58+ create_userprofile(sender=User, instance=ld_user, lp=lp, USER_BLACKLIST=USER_BLACKLIST, need_update=True)
59+
60
61=== modified file 'loco_directory/userprofiles/models.py'
62--- loco_directory/userprofiles/models.py 2011-03-04 18:16:03 +0000
63+++ loco_directory/userprofiles/models.py 2012-05-28 10:45:22 +0000
64@@ -1,9 +1,14 @@
65+import pytz
66+import logging
67+log = logging.getLogger(__name__)
68+
69 from django.db import models
70+from django.db.models.signals import post_save
71 from django.utils.translation import ugettext_lazy as _
72 from django.contrib.auth import models as auth_models
73+
74 # Create your models here.
75
76-import pytz
77
78 class UserProfile(models.Model):
79 " Store profile information about a user "
80@@ -68,16 +73,37 @@
81 auth_models.User.profile = property(_getUserProfile)
82 auth_models.AnonymousUser.profile = property(_getAnonProfile)
83
84+def create_userprofile(sender, instance, lp=None, USER_BLACKLIST=(u"root", u"admin"), need_update=False, **kwargs):
85+ profile, created = UserProfile.objects.get_or_create(user=instance)
86+ if instance.username in USER_BLACKLIST:
87+ log.error('%s tried to create a userprofile, but exists in USER_BLACKLIST' % instance)
88+ return profile
89+
90+ if need_update or created:
91+ from common import launchpad
92+ if not lp:
93+ lp = launchpad.lp_login()
94+ if lp:
95+ try:
96+ lp_user = lp.people[instance.username]
97+ profile.tz = lp_user.time_zone or "UTC"
98+ profile.realname = lp_user.display_name or user.username
99+ if lp_user.logo_link.startswith("https://") :
100+ profile.mugshot = lp_user.logo_link
101+ else:
102+ profile.mugshot = "https://launchpad.net/@@/person-logo"
103+ profile.save()
104+ except Exception, e:
105+ log.error("Error updating %s" % instance)
106+ log.error(e)
107+ return profile
108+
109+post_save.connect(create_userprofile, sender=auth_models.User)
110+
111 def create_profile(username):
112 user, created = auth_models.User.objects.get_or_create(username=username)
113 if created:
114 user.save()
115 from common import launchpad
116 launchpad.set_user_openid(user, force=True)
117- profile, created = UserProfile.objects.get_or_create(user=user)
118- if created:
119- # set real name as username for now,
120- # we get the name later on via cronjob
121- profile.realname = username
122- profile.save()
123- return profile
124+ return user.get_profile()

Subscribers

People subscribed via source and target branches