diff --git a/product/ERP5Form/ListBox.py b/product/ERP5Form/ListBox.py index f0e76241c3f1dd1a72fcb5033435511f546dc24e..81eb00cd273d254831534cdf5f0bbd396c5522f5 100755 --- a/product/ERP5Form/ListBox.py +++ b/product/ERP5Form/ListBox.py @@ -37,6 +37,7 @@ from Selection import Selection from DateTime import DateTime from Products.ERP5Type.Utils import getPath from Products.ERP5Type.Document import newTempBase +from Products.CMFCore.utils import getToolByName from xml.sax.saxutils import escape from copy import copy @@ -1182,7 +1183,8 @@ class ListBoxValidator(Validator.Validator): selection_name = field.get_value('selection_name') selection = here.portal_selections.getSelectionFor(selection_name, REQUEST=REQUEST) params = selection.getSelectionParams() - + portal_url = getToolByName(here, 'portal_url') + portal = portal_url.getPortalObject() result = {} error_result = {} @@ -1208,6 +1210,10 @@ class ListBoxValidator(Validator.Validator): for object in object_list: if object.getUid()==uid: o = object + if o is None: + # First case: dialog input to create new objects + o = newTempBase(portal, uid[4:]) # Arghhh - XXX acquisition problem - use portal root + o.uid = uid listbox[uid[4:]] = {} # We first try to set a listbox corresponding to all things # we can validate, so that we can use the same list @@ -1246,6 +1252,10 @@ class ListBoxValidator(Validator.Validator): for object in object_list: if object.getUid()==uid: o = object + if o is None: + # First case: dialog input to create new objects + o = newTempBase(portal, uid[4:]) # Arghhh - XXX acquisition problem - use portal root + o.uid = uid result[uid[4:]] = {} for sql in editable_column_ids: alias = '_'.join(sql.split('.'))