From e81cf728b7dd8e555b985483ef7f11742f3cb534 Mon Sep 17 00:00:00 2001
From: Nicolas Delaby <nicolas@nexedi.com>
Date: Mon, 29 Jun 2009 12:06:05 +0000
Subject: [PATCH] 2009-06-29 nicolas * Check that user doesn't already exists

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@27812 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../erp5_web/WebSite_createWebSiteAccount.xml | 59 +++++++++++--------
 bt5/erp5_web/bt/change_log                    |  3 +
 bt5/erp5_web/bt/revision                      |  2 +-
 3 files changed, 39 insertions(+), 25 deletions(-)

diff --git a/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSite_createWebSiteAccount.xml b/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSite_createWebSiteAccount.xml
index 7c41570c01..2a3fd79228 100644
--- a/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSite_createWebSiteAccount.xml
+++ b/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSite_createWebSiteAccount.xml
@@ -67,6 +67,9 @@
     - you need to adjust group, function and site to your needs\n
 """\n
 from Products.Formulator.Errors import ValidationError, FormValidationError\n
+portal = context.getPortalObject()\n
+translateString = context.Base_translateString\n
+website = context.getWebSiteValue()\n
 \n
 # Call Base_edit\n
 result, result_type = context.Base_edit(form_id, silent_mode=1, field_prefix=\'your_\')\n
@@ -77,18 +80,25 @@ if result_type != \'edit\':\n
 kw, encapsulated_editor_list = result\n
 \n
 # Set default values\n
-person_group = kw.get(\'group\', \'\')\n
-person_function = kw.get(\'function\', \'\')\n
-person_site = kw.get(\'site\', \'\')\n
-person_role = kw.get(\'role\', \'\')\n
+person_group = kw.get(\'group\', None)\n
+person_function = kw.get(\'function\', None)\n
+person_site = kw.get(\'site\', None)\n
+person_role = kw.get(\'role\', None)\n
 kw.setdefault(\'reference\', kw[\'default_email_text\'])\n
 if \'password_confirm\' in kw:\n
   del kw[\'password_confirm\']\n
 \n
+#Check that user doesn\'t already exists\n
+person_list = portal.acl_users.erp5_users.getUserByLogin(kw[\'reference\'])\n
+if person_list:\n
+  msg = translateString("This account already exists. Please provide another email address.")\n
+  kw[\'portal_status_message\'] = msg\n
+  context.REQUEST.form.update(kw)\n
+  return getattr(website, form_id)()\n
+\n
 # create Person account\n
-person_module = context.getPortalObject().person_module\n
-person = person_module.newContent(portal_type = \'Person\', \n
-                                  **kw)\n
+person_module = portal.getDefaultModule(portal_type=\'Person\')\n
+person = person_module.newContent(portal_type=\'Person\', **kw)\n
 person.validate()\n
 # do not immediate reindex object\n
 # this means that when creating an account the new one will *NOT*\n
@@ -97,24 +107,21 @@ person.validate()\n
 #person.immediateReindexObject()\n
 \n
 # Create default career\n
-career = person.newContent(portal_type = \'Career\',\n
-                           id = \'default_career\',\n
-                           group = person_group,\n
-                           function = person_function,\n
-                           role = person_role)\n
+career = person.newContent(portal_type=\'Career\',\n
+                           id=\'default_career\',\n
+                           group=person_group,\n
+                           function=person_function,\n
+                           role=person_role)\n
 # Create assignment\n
-assignment = person.newContent(portal_type = \'Assignment\',\n
-                               group = person_group,\n
-                               function = person_function,\n
-                               site = person_site)\n
+assignment = person.newContent(portal_type=\'Assignment\',\n
+                               group=person_group,\n
+                               function=person_function,\n
+                               site=person_site)\n
 assignment.open()\n
 \n
-translateString = context.Base_translateString\n
 msg = translateString("Your account was successfully created.")\n
-website = context.getWebSiteValue()\n
-return website.Base_redirect(\'view\', \n
-                             keep_items = dict(portal_status_message = msg,\n
-                                               editable_mode = 0))\n
+return website.Base_redirect(form_id, keep_items=dict(portal_status_message=msg,\n
+                             editable_mode=0))\n
 
 
 ]]></string> </value>
@@ -167,25 +174,29 @@ return website.Base_redirect(\'view\', \n
                             <string>FormValidationError</string>
                             <string>_getattr_</string>
                             <string>context</string>
+                            <string>portal</string>
+                            <string>translateString</string>
+                            <string>website</string>
                             <string>_getiter_</string>
                             <string>result</string>
                             <string>result_type</string>
                             <string>kw</string>
                             <string>encapsulated_editor_list</string>
+                            <string>None</string>
                             <string>person_group</string>
                             <string>person_function</string>
                             <string>person_site</string>
                             <string>person_role</string>
                             <string>_getitem_</string>
                             <string>_write_</string>
+                            <string>person_list</string>
+                            <string>msg</string>
+                            <string>getattr</string>
                             <string>person_module</string>
                             <string>_apply_</string>
                             <string>person</string>
                             <string>career</string>
                             <string>assignment</string>
-                            <string>translateString</string>
-                            <string>msg</string>
-                            <string>website</string>
                             <string>dict</string>
                           </tuple>
                         </value>
diff --git a/bt5/erp5_web/bt/change_log b/bt5/erp5_web/bt/change_log
index 182afeadcd..3ecd4f64b5 100644
--- a/bt5/erp5_web/bt/change_log
+++ b/bt5/erp5_web/bt/change_log
@@ -1,3 +1,6 @@
+2009-06-29 nicolas
+* Check that user doesn't already exists
+
 2009-05-15 yusei
 * Add a template field for Editor Field to Base_viewWebFieldLibrary.
 
diff --git a/bt5/erp5_web/bt/revision b/bt5/erp5_web/bt/revision
index d062eec37b..cb22560331 100644
--- a/bt5/erp5_web/bt/revision
+++ b/bt5/erp5_web/bt/revision
@@ -1 +1 @@
-823
\ No newline at end of file
+827
\ No newline at end of file
-- 
2.30.9