[ZODB-Dev] ZEO for GUI applications

Robert Gravina robert at gravina.com
Sat Mar 31 10:41:48 EDT 2007


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.
>>
>> http://svn.kmrc.de/
>
> Wow, that looks very impressive. I'll checkout the source and have  
> a look around to see what I can learn.
>
> Thanks,
>
> Robert
>

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.
http://www.mail-archive.com/zodb-dev@zope.org/msg01969.html

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?

Robert





More information about the ZODB-Dev mailing list