On Mar 31, 2007, at 11:13 PM, Robert Gravina wrote:

On Mar 31, 2007, at 10:32 PM, Stephan Richter wrote:

On Thursday 29 March 2007 15:14, Robert Gravina wrote:
Is anyone using ZEO to build mutliuser networked applications outside
of Zope?

Uwe Oestermeier and his team built Bebop. While the server component uses Zope
3, it uses a full wxPython GUI as client.


Wow, that looks very impressive. I'll checkout the source and have a look around to see what I can learn.



I'm still a little bit unsure about how to update the GUI when objects are changed.

I noticed a previous thread on a similar topic which suggested to customise ZODB.DB.invalidate.

I thought I could check the type of object, and generally that will be enough for me to decide which parts of the UI need a refresh. It seems though, that when I change data from one client other clients, although getting invalidate messages, are still displaying old data.

I tried subclassing DB, and printing out the object as a test, but it's always "None" (even when I have a few clients connected). The code there to get the object from the cache I don't quite understand, I just copied it from ZODB.DB.invalidate and hoped for the best :)

class UpdatedDB(DB):
    def invalidate(self, tid, oids, connection=None, version=''):
        DB.invalidate(self, tid, oids, connection, version)
        for oid in oids.keys():
            h = hash(oid) % 131
            o = self._miv_cache.get(h, None)
            print o

Is there anything else I need to do/doing wrong?


For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to