Commit 894e23fd authored by Jérome Perrin's avatar Jérome Perrin

Revert commits pushed by mistake

Revert "fix undefined variables"

This reverts commit 77a53809.

Revert "Listbox: calculate a mapping uid -> object once"

This reverts commit 84029c01.

Revert "fix list method returning duplicate uids"

This reverts commit 386b0e6b.

Revert "test for dialog listbox with editable fields"

This reverts commit e046d8f5.
parent 77a53809
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<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_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test Editable Objects</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test Editable Objects</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/ListBoxDialogModeZuite_reset</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects?num:int=1</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/0/Foo_viewEditableListboxDialog</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//tr[@class=\'listbox-data-line-0 DataA\']/td[3]/input</td>\n
<td>1</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//tr[@class=\'listbox-data-line-1 DataB\']/td[3]/input</td>\n
<td>2</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//tr[@class=\'listbox-data-line-2 DataA\']/td[3]/input</td>\n
<td>3</td>\n
</tr>\n
\n
<tr>\n
<td>clickAndWait</td>\n
<td>Base_callDialogMethod:method</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Editable listbox OK</td>\n
<td></td>\n
</tr>\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testEditableObjects</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?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>def assertEquals(a, b):\n
assert a == b, \'%s != %s\' % (a, b)\n
\n
assertEquals(len(listbox), 3)\n
\n
assertEquals(listbox[0], dict(listbox_key=\'0\', quantity=1.))\n
assertEquals(listbox[1], dict(listbox_key=\'1\', quantity=2.))\n
assertEquals(listbox[2], dict(listbox_key=\'2\', quantity=3.))\n
\n
return "Editable listbox OK"\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>listbox, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Foo_checkEditableListbox</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?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>from Products.PythonScripts.standard import Object\n
\n
def makeObject(uid):\n
def getUid():\n
return uid\n
return Object(uid=uid, getUid=getUid)\n
\n
object_list = []\n
for i in range(3):\n
object_list.append(makeObject(\'new_%s\' % i))\n
\n
return object_list\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Foo_getTempObjectList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5Form" module="Products.ERP5Form.Form"/>
</pickle>
<pickle>
<dictionary>
<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/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>Foo_checkEditableListbox</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list>
<string>listbox</string>
</list>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list>
<string>listbox_quantity</string>
</list>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Foo_viewEditableListboxDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Dialog with Temp Objects</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="FloatField" module="Products.Formulator.StandardFields"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_quantity</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>not_float</string> </key>
<value> <string>You did not enter a floating point number.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_style</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>precision</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_style</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>precision</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_style</string> </key>
<value> <string>-1234.5</string> </value>
</item>
<item>
<key> <string>precision</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>listbox_quantity</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
711 709
\ No newline at end of file \ No newline at end of file
...@@ -2771,7 +2771,7 @@ class ListBoxValidator(Validator.Validator): ...@@ -2771,7 +2771,7 @@ class ListBoxValidator(Validator.Validator):
selected_uid_set = set(REQUEST.get('uids', ())) selected_uid_set = set(REQUEST.get('uids', ()))
#LOG('ListBox.validate: REQUEST',0,REQUEST) #LOG('ListBox.validate: REQUEST',0,REQUEST)
errors = [] errors = []
object_dict = None object_list = None
# We have two things to do in the case of temp objects, # We have two things to do in the case of temp objects,
# the first thing is to create a list with new temp objects # the first thing is to create a list with new temp objects
# then try to validate some data, and then create again # then try to validate some data, and then create again
...@@ -2780,25 +2780,19 @@ class ListBoxValidator(Validator.Validator): ...@@ -2780,25 +2780,19 @@ class ListBoxValidator(Validator.Validator):
listbox = {} listbox = {}
for uid in listbox_uids: for uid in listbox_uids:
if uid[:4] == 'new_': if uid[:4] == 'new_':
if object_dict is None: if object_list is None:
object_dict = {}
list_method = field.get_value('list_method') list_method = field.get_value('list_method')
list_method = getattr(here, list_method.method_name) list_method = getattr(here, list_method.method_name)
for obj in list_method(REQUEST=REQUEST, **params): #LOG('ListBoxValidator', 0, 'call %s' % repr(list_method))
o_uid = obj.getUid() object_list = list_method(REQUEST=REQUEST, **params)
assert o_uid not in object_dict,\
"List method returned duplicate uid %s %s" % (
o_uid, object_dict)
object_dict[o_uid] = obj
row_key = uid[4:] row_key = uid[4:]
try: for o in object_list:
o = object_dict[uid] if o.getUid() == uid:
except KeyError: break
else:
# First case: dialog input to create new objects # First case: dialog input to create new objects
o = newTempBase(portal, row_key) # Arghhh - XXX acquisition problem - use portal root o = newTempBase(portal, row_key) # Arghhh - XXX acquisition problem - use portal root
o.uid = uid o.uid = uid
listbox[row_key] = row_result = {} listbox[row_key] = row_result = {}
# We first try to set a listbox corresponding to all things # We first try to set a listbox corresponding to all things
# we can validate, so that we can use the same list # we can validate, so that we can use the same list
...@@ -2817,31 +2811,24 @@ class ListBoxValidator(Validator.Validator): ...@@ -2817,31 +2811,24 @@ class ListBoxValidator(Validator.Validator):
pass pass
except KeyError: except KeyError:
pass pass
# Here we generate again the object_list with listbox the listbox we # Here we generate again the object_list with listbox the listbox we
# have just created # have just created
if listbox: if listbox:
object_dict = {}
list_method = field.get_value('list_method') list_method = field.get_value('list_method')
list_method = getattr(here, list_method.method_name) list_method = getattr(here, list_method.method_name)
REQUEST.set(field.id, listbox) REQUEST.set(field.id, listbox)
for obj in list_method(REQUEST=REQUEST, **params): object_list = list_method(REQUEST=REQUEST, **params)
o_uid = obj.getUid()
assert o_uid not in object_dict,\
"List method returned duplicate uid %s" % o_uid
object_dict[o_uid] = obj
for uid in listbox_uids: for uid in listbox_uids:
row_result = {} row_result = {}
if uid[:4] == 'new_': if uid[:4] == 'new_':
row_key = uid[4:]
try:
o = object_dict[uid]
except KeyError:
# First case: dialog input to create new objects # First case: dialog input to create new objects
row_key = uid[4:]
for o in object_list:
if o.getUid() == uid:
break
else:
o = newTempBase(portal, row_key) # Arghhh - XXX acquisition problem - use portal root o = newTempBase(portal, row_key) # Arghhh - XXX acquisition problem - use portal root
o.uid = uid o.uid = uid
for sql in editable_column_ids: for sql in editable_column_ids:
editable_field = editable_field_dict.get(sql.replace('.', '_')) editable_field = editable_field_dict.get(sql.replace('.', '_'))
if editable_field is not None: if editable_field is not None:
...@@ -2873,20 +2860,19 @@ class ListBoxValidator(Validator.Validator): ...@@ -2873,20 +2860,19 @@ class ListBoxValidator(Validator.Validator):
except (KeyError, NotFound, ValueError), err: except (KeyError, NotFound, ValueError), err:
# It is possible that this object is not catalogged yet. So # It is possible that this object is not catalogged yet. So
# the object must be obtained from ZODB. # the object must be obtained from ZODB.
if object_dict is None: if object_list is None:
object_dict = {}
list_method = field.get_value('list_method') list_method = field.get_value('list_method')
list_method = getattr(here, list_method.method_name) list_method = getattr(here, list_method.method_name)
for obj in list_method(REQUEST=REQUEST, **params): object_list = list_method(REQUEST=REQUEST, **params)
o_uid = str(obj.getUid()) for o in object_list:
assert o_uid not in object_dict,\ try:
"List method returned duplicate uid %s" % o_uid if o.getUid() == int(uid):
object_dict[o_uid] = obj break
except ValueError:
o = object_dict.get(str(uid)) if str(o.getUid()) == uid:
if o is None: break
else:
raise err raise err
row_key = o.getUrl() row_key = o.getUrl()
for sql in editable_column_ids: for sql in editable_column_ids:
editable_field = editable_field_dict.get(sql.replace('.', '_')) editable_field = editable_field_dict.get(sql.replace('.', '_'))
...@@ -2909,7 +2895,6 @@ class ListBoxValidator(Validator.Validator): ...@@ -2909,7 +2895,6 @@ class ListBoxValidator(Validator.Validator):
#except: #except:
else: else:
LOG("ListBox WARNING",0,"Object uid %s could not be validated" % uid) LOG("ListBox WARNING",0,"Object uid %s could not be validated" % uid)
result[row_key] = row_result result[row_key] = row_result
if select: if select:
row_result['listbox_selected'] = uid in selected_uid_set row_result['listbox_selected'] = uid in selected_uid_set
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment