]> git.ozlabs.org Git - patchwork/commitdiff
models: use User.post_save signal to create UserProfile objects
authorJeremy Kerr <jk@ozlabs.org>
Thu, 10 Mar 2011 10:06:50 +0000 (18:06 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Wed, 30 Mar 2011 03:35:24 +0000 (11:35 +0800)
Rather than relying on the registration app's callback mechanism to
create the UserProfile object, use the post_save signal on auth.User.

This means that the UserProfile will be created regardless of how the
User was created.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
apps/patchwork/bin/setup.py [deleted file]
apps/patchwork/models.py
apps/patchwork/tests/utils.py
apps/patchwork/utils.py
apps/urls.py

diff --git a/apps/patchwork/bin/setup.py b/apps/patchwork/bin/setup.py
deleted file mode 100755 (executable)
index 7d55815..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env python
-#
-# Patchwork - automated patch tracking system
-# Copyright (C) 2008 Jeremy Kerr <jk@ozlabs.org>
-#
-# This file is part of the Patchwork package.
-#
-# Patchwork is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# Patchwork is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Patchwork; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-from patchwork.models import UserProfile
-from django.contrib.auth.models import User
-
-# give each existing user a userprofile
-for user in User.objects.all():
-    p = UserProfile(user = user)
-    p.save()
index 676f2192de5fe8a2f8a2aeafee0945ea5d5501e7..6ad4e1ad3ff993c22a84e10ddb23ec1fe1b50047 100644 (file)
@@ -130,6 +130,14 @@ class UserProfile(models.Model):
     def __unicode__(self):
         return self.name()
 
+def _user_created_callback(sender, created, instance, **kwargs):
+    if not created:
+        return
+    profile = UserProfile(user = instance)
+    profile.save()
+
+models.signals.post_save.connect(_user_created_callback, sender = User)
+
 class State(models.Model):
     name = models.CharField(max_length = 100)
     ordering = models.IntegerField(unique = True)
index 35c4beb140e6df7d8a8dba2c5772957c33cbf4aa..f1c95e8a8d274054bdcc927dc2c8ed2e18259a14 100644 (file)
@@ -19,7 +19,7 @@
 
 import os
 import codecs
-from patchwork.models import Project, Person, UserProfile
+from patchwork.models import Project, Person
 from django.contrib.auth.models import User
 
 from email import message_from_file
@@ -66,9 +66,6 @@ def create_user():
     user = User.objects.create_user(userid, email, userid)
     user.save()
 
-    profile = UserProfile(user = user)
-    profile.save()
-
     return user
 
 def create_maintainer(project):
index 53cf40ba7487b11e7e2d117606533db281d51d4f..5df6404dafeb594c37bc2a815b39c8d5b53d2d1f 100644 (file)
@@ -182,8 +182,3 @@ def set_patches(user, project, action, data, patches, context):
         context.add_message(str)
 
     return (errors, form)
-
-def userprofile_register_callback(user):
-    profile = UserProfile(user = user)
-    profile.save()
-
index 5c4ac570717eef79f1b850395b2ea7c6bddae94e..14f05451cefdf893d7ed5f141555abd84c8f239f 100644 (file)
@@ -23,7 +23,6 @@ from patchwork.admin import admin_site
 
 from registration.views import register
 from patchwork.forms import RegistrationForm
-from patchwork.utils import userprofile_register_callback
 
 urlpatterns = patterns('',
     # Example:
@@ -31,9 +30,7 @@ urlpatterns = patterns('',
 
     # override the default registration form
     url(r'^accounts/register/$',
-        register,
-        {'form_class': RegistrationForm,
-         'profile_callback': userprofile_register_callback},
+        register, {'form_class': RegistrationForm},
         name='registration_register'),
 
     (r'^accounts/', include('registration.urls')),