From 9af801106a772fc04ac68e2cc0ae804823609922 Mon Sep 17 00:00:00 2001
From: Gabriel Monnerat <gabriel@tiolive.com>
Date: Wed, 2 Mar 2011 23:50:29 +0000
Subject: [PATCH] - Add new input to email - Add script to create new user in
 UNG - refactor javascript code to send POST to ERPSite_createUNGUser

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@43920 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../Base_updateCalendarEventList.xml          |  5 +-
 .../ERPSite_createUNGUser.xml                 | 91 +++++++++++++++++++
 .../WebSection_loginDialog.xml                | 19 ++--
 .../erp5_web_ung_theme/ung_js/ung.js.xml      |  9 ++
 .../TestTemplateItem/testUNG.py               | 24 ++++-
 bt5/erp5_web_ung_theme/bt/revision            |  2 +-
 6 files changed, 135 insertions(+), 15 deletions(-)
 create mode 100644 bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ERPSite_createUNGUser.xml

diff --git a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/Base_updateCalendarEventList.xml b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/Base_updateCalendarEventList.xml
index 82dc5cbcf6..58c960bddb 100644
--- a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/Base_updateCalendarEventList.xml
+++ b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/Base_updateCalendarEventList.xml
@@ -55,7 +55,7 @@
   XXX - This script should be splitted, because have many different\n
   features(i.e add, remove and update events)\n
 """\n
-from Products.ERP5Type.JSONEncoder import encodeInJson as dumps\n
+from json import dumps\n
 from DateTime import DateTime\n
 import random\n
 \n
@@ -64,6 +64,9 @@ def convertToERP5DateTime(date):\n
   month, day, year = date.split("/")\n
   return DateTime("%s/%s/%s %s" % (month, day, year, hour))\n
 \n
+if context.portal_membership.isAnonymousUser():\n
+  return dumps(dict(events=[]))\n
+\n
 portal = context.getPortalObject()\n
 form = context.REQUEST.form\n
 portal_type_list = ["Acknowledgement",\n
diff --git a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ERPSite_createUNGUser.xml b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ERPSite_createUNGUser.xml
new file mode 100644
index 0000000000..37bfdca3d7
--- /dev/null
+++ b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ERPSite_createUNGUser.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>import json\n
+\n
+form = context.REQUEST.form\n
+portal = context.getPortalObject()\n
+\n
+person = portal.person_module.newContent(portal_type="Person")\n
+person.edit(first_name=form.get("firstname"),\n
+            last_name=form.get("lastname"),\n
+            password=form.get("password"))\n
+\n
+assignment = person.newContent(portal_type=\'Assignment\')\n
+assignment.setFunction("function/ung_user")\n
+assignment.open()\n
+\n
+person.validate()\n
+\n
+return json.dumps(True)\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>_proxy_roles</string> </key>
+            <value>
+              <tuple>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>ERPSite_createUNGUser</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/WebSection_loginDialog.xml b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/WebSection_loginDialog.xml
index a4e604e7ef..b0c94a2f2f 100644
--- a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/WebSection_loginDialog.xml
+++ b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/WebSection_loginDialog.xml
@@ -78,14 +78,17 @@
     <tbody>\n
       <tr>\n
         <td>\n
-          <table width="100%">\n
-            <tr><td>First name:</td><td><input type="text" name="firstname"/></td></tr>\n
-            <tr><td>Last name:</td><td><input type="text" name="lastname"/></td></tr>\n
-            <tr><td>Login name:</td><td><input type="text" name="login"/></td></tr>\n
-            <tr><td>Password:</td><td><input type="password" name="password"/></td></tr>\n
-            <tr><td>Confirm Password:</td><td><input type="password" name="confirm"/></td></tr>\n
-            <td align="center" colspan="2"><input type="submit" name="logged_in:method" class="submit" value="Create Account"></td>\n
-          </table>\n
+          <form id="create-user" method="post">\n
+            <table width="100%">\n
+              <tr><td>First name:</td><td><input type="text" name="firstname"/></td></tr>\n
+              <tr><td>Last name:</td><td><input type="text" name="lastname"/></td></tr>\n
+              <tr><td>Email:</td><td><input type="text" name="email"/></td></tr>\n
+              <tr><td>Login name:</td><td><input type="text" name="login"/></td></tr>\n
+              <tr><td>Password:</td><td><input type="password" name="password"/></td></tr>\n
+              <tr><td>Confirm Password:</td><td><input type="password" name="confirm"/></td></tr>\n
+              <td align="center" colspan="2"><input type="submit" name="logged_in:method" class="submit" value="Create Account"></td>\n
+            </table>\n
+          </form>\n
         </td>\n
       </tr>\n
     </tbody>\n
diff --git a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ung_js/ung.js.xml b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ung_js/ung.js.xml
index d4c2a11eb1..6277ae07eb 100644
--- a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ung_js/ung.js.xml
+++ b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ung_js/ung.js.xml
@@ -112,6 +112,15 @@ function displayLoginForm(){\n
     $("td#new-account-form").click(function(event){\n
       $("table#field_table, table#new-account-table").hide();\n
       $("table#create-new-user").show();\n
+      $("form#create-user").submit(function(event){\n
+        event.preventDefault();\n
+        $.ajax({\n
+          type: \'post\',\n
+          url: \'ERPSite_createUNGUser\',\n
+          data: $("form#create-user").serializeArray(),\n
+          dataType: "json",\n
+        });\n
+      });\n
     });\n
   });\n
 }\n
diff --git a/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py b/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py
index 8a8cb23480..06d9ef6b41 100644
--- a/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py
+++ b/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py
@@ -161,14 +161,15 @@ class TestUNG(ERP5TypeTestCase):
     self.login("ung_new_user")
     self.portal.WebSection_userFollowUpWebPage("new.Web-Page")
     self.stepTic()
-    self.assertEquals(["person_module/1"], web_page.getFollowUpList())
-    self.stepTic()
+    self.login("ERP5TypeTestCase")
+    self.assertEquals("ung_new_user", web_page.getFollowUpValue().getReference())
     self.login("ung_new_user2")
     self.portal.WebSection_userFollowUpWebPage("new.Web-Page")
     self.stepTic()
-    followup_list = web_page.getFollowUpList()
-    self.assertEquals(["person_module/1", "person_module/2"],
-                      sorted(followup_list))
+    self.login("ERP5TypeTestCase")
+    reference_list = [user.getReference() for user in web_page.getFollowUpValueList()]
+    self.assertEquals(["ung_new_user", "ung_new_user2"],
+                      sorted(reference_list))
 
   def testWebSection_getGadgetPathList(self):
     """Validate the gadget list"""
@@ -270,3 +271,16 @@ class TestUNG(ERP5TypeTestCase):
     self.stepTic()
     web_message = self.portal.portal_catalog.getResultValue(portal_type="Web Message")
     self.assertEquals(web_message, None)
+  
+  def testERPSite_createUNGUser(self):
+    """Test if script creates an user correctly"""
+    form_dict = dict(firstname="UNG",
+                     lastname="User",
+                     password="ung_password")
+    self.portal.REQUEST.form.update(form_dict)
+    self.portal.ERPSite_createUNGUser()
+    self.stepTic()
+    person = self.portal.portal_catalog.getResultValue(portal_type="Person",
+                                                       first_name="UNG")
+    self.assertEquals(person.getLastName(), "User")
+    self.assertEquals(person.getValidationState(), "validated")
\ No newline at end of file
diff --git a/bt5/erp5_web_ung_theme/bt/revision b/bt5/erp5_web_ung_theme/bt/revision
index 4acc65d012..d36f9fbea4 100644
--- a/bt5/erp5_web_ung_theme/bt/revision
+++ b/bt5/erp5_web_ung_theme/bt/revision
@@ -1 +1 @@
-266
\ No newline at end of file
+267
\ No newline at end of file
-- 
2.30.9