-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Maciej Wisniowski wrote:
my data ends up looking like this:
order [{}, {}, {'foo': '1', 'bar': 'a'}, {}, {'foo': '2', 'bar': 'b'}, {'foo': '6', 'bar': 'z'}, {'foo': '1', 'bar': 'a'}] What is wrong here? I mean what output is expected?
I've seen http://mail.zope.org/pipermail/zope-dev/2006-July/027890.html and am aware that related bug existed prior to 2.7.1. There is 'faster' that is alternative sessioning machinery but I don't know if it works with 2.7
It depends on Five / Zope3: I haven't used the appropriate versions (Five 1.0.x, ZopeX3 3.0.x) with it, and don't know whether the faster product is compatible with them.
I've used sessions without problems before, this is the first time I attempt to store variables in containers. What am I doing wrong? Maybe it is because of req.form assignment. Try to create copy of its values and append this to 'order' list like:
session = context.REQUEST.SESSION order = session.get('order', []) order.append({'foo':req.form['foo'], 'bar':req.form['bar']}) session.set('order',order)
and see what happens now.
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 Tres. - -- =================================================================== Tres Seaver +1 540-429-0999 tseaver@palladion.com Palladion Software "Excellence by Design" http://palladion.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFF/h5I+gerLs4ltQ4RAk/VAJ9aBGGAMygmxkWtqQnG6tg6lJUzxgCgmtFh KxFeFo8D77JkP9s/V++qzhk= =HDWu -----END PGP SIGNATURE-----