Tres Seaver wrote:


Note as well that using "mutable" Python primitives (dicts, lists) is
tricky, as they don't notify *their* container (the persistent
SessionDataObject) when they are mutatated.  If you are using them,
rather than some persistent variant, then you need to rebind them into
the container.  E.g.:

  mapping = SESSION.get('mapping')
  if mapping is None:
      mapping = {}
  mapping['foo'] = REQUEST.form('foo')
  SESSION['mapping'] = mapping  # triggers persistence


Thanks Tres & Maciej!

This does the trick:

    order = []
    new_order={}
    prev_order=req.SESSION.get('order')

    if prev_order != None:
     for orders in prev_order:
       for item in orders.keys():
        new_order[item]=orders[item]
       order.append(new_order)
       new_order ={}

    for val in req.form.keys():
      new_order[val]=req.form[val]
    order.append(new_order)

    req.SESSION['order'] = order

With the expected output:

order [{'foo': '1', 'bar': 'a'}, {'foo': '2', 'bar': 'b'},
{'foo': '7', 'bar': 'e'}, {'foo': '6', 'bar': 'z'}, {'foo': '1', 'bar': 'a'}]

_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to