diff rhodecode/model/user.py @ 1731:31e6eb2fb4b2 beta

implements #222 registration feedback - a notification message is created for admins - email template with registartion
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 26 Nov 2011 21:13:33 +0200
parents da8ee2ef7f6d
children 48d4fcf04a29
line wrap: on
line diff
--- a/rhodecode/model/user.py	Sat Nov 26 19:26:24 2011 +0200
+++ b/rhodecode/model/user.py	Sat Nov 26 21:13:33 2011 +0200
@@ -26,6 +26,7 @@
 import logging
 import traceback
 
+from pylons import url
 from pylons.i18n.translation import _
 
 from rhodecode.lib import safe_unicode
@@ -33,7 +34,8 @@
 
 from rhodecode.model import BaseModel
 from rhodecode.model.db import User, UserRepoToPerm, Repository, Permission, \
-    UserToPerm, UsersGroupRepoToPerm, UsersGroupToPerm, UsersGroupMember
+    UserToPerm, UsersGroupRepoToPerm, UsersGroupToPerm, UsersGroupMember, \
+    Notification
 from rhodecode.lib.exceptions import DefaultUserException, \
     UserOwnsReposException
 
@@ -43,6 +45,7 @@
 
 log = logging.getLogger(__name__)
 
+
 PERM_WEIGHTS = {'repository.none': 0,
                 'repository.read': 1,
                 'repository.write': 3,
@@ -211,7 +214,8 @@
         return None
 
     def create_registration(self, form_data):
-        from rhodecode.lib.celerylib import tasks, run_task
+        from rhodecode.model.notification import NotificationModel
+
         try:
             new_user = User()
             for k, v in form_data.items():
@@ -219,18 +223,26 @@
                     setattr(new_user, k, v)
 
             self.sa.add(new_user)
-            self.sa.commit()
+            self.sa.flush()
+
+            # notification to admins
+            subject = _('new user registration')
             body = ('New user registration\n'
-                    'username: %s\n'
-                    'email: %s\n')
-            body = body % (form_data['username'], form_data['email'])
+                    '---------------------\n'
+                    '- Username: %s\n'
+                    '- Full Name: %s\n'
+                    '- Email: %s\n')
+            body = body % (new_user.username, new_user.full_name,
+                           new_user.email)
+            edit_url = url('edit_user', id=new_user.user_id, qualified=True)
+            kw = {'registered_user_url':edit_url}
+            NotificationModel().create(created_by=new_user, subject=subject,
+                                       body=body, recipients=None,
+                                       type_=Notification.TYPE_REGISTRATION,
+                                       email_kwargs=kw)
 
-            run_task(tasks.send_email, None,
-                     _('[RhodeCode] New User registration'),
-                     body)
         except:
             log.error(traceback.format_exc())
-            self.sa.rollback()
             raise
 
     def update(self, user_id, form_data):