Andre Meyer wrote:
Another problem occurs with permissions. The following snippet works in dtml, but when converted to zpt (accessing here/listEntriesByGroup) the same method cannot be accessed any longer.
Soon after writing the 'Zope Bible', but before it was published, I discovered that PageTemplateFile instances were restricted code, unlike DTMLFile instances. The relevant thread starts here: http://mail.zope.org/pipermail/zpt/2002-February/002856.html To fix the problems you're having in converting the Addressit product to ZPTs, you'll simply need to add the appropriate security assertions to the relevant methods. I believe you'll also need to grant access to some class attributes (or else expose them via accessor methods). Read the whole thread referenced above, it should give you all the information you need.
Yet another issue is related to scalability when I have an object that references a list of other objects using a *dictionary*. How does this perform when the dictionary contains 10.000 or 50.000 entries? Is that feasible or are there better solutions?
The dictionary based approach is *not* truly scalable, instead you can replace the dictionary with a BTree, which gives you the same access-by-key interface as a dict, but doesn't suffer from the same problems as a dictionary. Information about using BTrees can be found here: http://zope.org/Members/ajung/BTrees/DataTypes/FrontPage The most critical difference in using a BTree is that you cannot simply use assignment such as self.Entries[id] = entry But will instead have to use the Btree's insert method, like this: self.Entries.insert(id, entry) I may have forgotten some other minor changes. If so, I apologize. I hope this information is helpful to you, - Michael R. Bernstein michaelbernstein.com Author of Zope Bible