[Checkins] SVN: zope3org/trunk/src/zorg/live/ Fixed a bug in the representation of online members

Uwe Oestermeier uwe_oestermeier at iwm-kmrc.de
Sat Apr 8 16:00:07 EDT 2006


Log message for revision 66688:
  Fixed a bug in the representation of online members

Changed:
  U   zope3org/trunk/src/zorg/live/README.txt
  U   zope3org/trunk/src/zorg/live/demo/comment/README.txt
  U   zope3org/trunk/src/zorg/live/demo/comment/comment.py
  U   zope3org/trunk/src/zorg/live/demo/upload/README.txt
  U   zope3org/trunk/src/zorg/live/demo/upload/upload.py
  U   zope3org/trunk/src/zorg/live/page/client.js
  U   zope3org/trunk/src/zorg/live/page/event.py
  U   zope3org/trunk/src/zorg/live/page/page.py
  U   zope3org/trunk/src/zorg/live/server.py

-=-
Modified: zope3org/trunk/src/zorg/live/README.txt
===================================================================
--- zope3org/trunk/src/zorg/live/README.txt	2006-04-08 19:57:27 UTC (rev 66687)
+++ zope3org/trunk/src/zorg/live/README.txt	2006-04-08 20:00:06 UTC (rev 66688)
@@ -179,7 +179,7 @@
     
     >>> page1 = TestLivePage(None, TestRequest())
     >>> page1.output('uuid1')
-    '{..."name":"idle"...}'
+    '{..."name": "idle"...}'
   
 Now we can send some input. If we get the input from the browser we must first
 be able to convert the text into a Python object. Since we can convert
@@ -194,7 +194,7 @@
     >>> event
     <zorg.live.page.event.Append object at ...>
     >>> event.toJSON()
-    '{..."html":"<p>ABC</p>", "where":null, "id":"id", "recipients":"all", "name":"append"}'
+    '{..."html": "<p>ABC</p>", "where": null, "id": "id", "recipients": "all", "name": "append"}'
     
 The set of registered event types can be easily extended by registering a
 new IClientEventFactory. Most of the time this will look as follows :

Modified: zope3org/trunk/src/zorg/live/demo/comment/README.txt
===================================================================
--- zope3org/trunk/src/zorg/live/demo/comment/README.txt	2006-04-08 19:57:27 UTC (rev 66687)
+++ zope3org/trunk/src/zorg/live/demo/comment/README.txt	2006-04-08 20:00:06 UTC (rev 66688)
@@ -77,42 +77,42 @@
 states we get four events :
 
     >>> page1.output('uuid1').pprint()
-    html : ['zorg.member.uwe']
+    html : 'zorg.member.uwe'
     id : 'online'
     name : 'update'
     recipients : 'all'
     where : None
    
     >>> page1.output('uuid1').pprint()
-    html : ['zorg.member.uwe']
+    html : 'zorg.member.uwe'
     id : 'online'
     name : 'update'
     recipients : 'all'
     where : None
 
     >>> page2.output('uuid2').pprint()
-    html : ['zorg.member.dominik', 'zorg.member.uwe']
+    html : 'zorg.member.dominik, zorg.member.uwe'
     id : 'online'
     name : 'update'
     recipients : 'all'
     where : None
 
     >>> page2.output('uuid2').pprint()
-    html : ['zorg.member.dominik', 'zorg.member.uwe']
+    html : 'zorg.member.dominik, zorg.member.uwe'
     id : 'online'
     name : 'update'
     recipients : 'all'
     where : None
 
     >>> page1.output('uuid1').pprint()
-    html : ['zorg.member.dominik', 'zorg.member.uwe']
+    html : 'zorg.member.dominik, zorg.member.uwe'
     id : 'online'
     name : 'update'
     recipients : 'all'
     where : None
 
     >>> page1.output('uuid1').pprint()
-    html : ['zorg.member.dominik', 'zorg.member.uwe']
+    html : 'zorg.member.dominik, zorg.member.uwe'
     id : 'online'
     name : 'update'
     recipients : 'all'

Modified: zope3org/trunk/src/zorg/live/demo/comment/comment.py
===================================================================
--- zope3org/trunk/src/zorg/live/demo/comment/comment.py	2006-04-08 19:57:27 UTC (rev 66687)
+++ zope3org/trunk/src/zorg/live/demo/comment/comment.py	2006-04-08 20:00:06 UTC (rev 66688)
@@ -168,8 +168,9 @@
 
         if IPersonEvent.providedBy(event) :
             manager = zapi.getUtility(ILivePageManager)
-            repr = manager.whoIsOnline(event.where)
-            update = Update(id="online", html=repr)
+            ids = manager.whoIsOnline(event.where)
+            repr = ", ".join([getFullName(id) for id in ids])
+            update = Update(id="online", html=repr)            
             cls.sendEvent(update)
         
         if IObjectModifiedEvent.providedBy(event) :

Modified: zope3org/trunk/src/zorg/live/demo/upload/README.txt
===================================================================
--- zope3org/trunk/src/zorg/live/demo/upload/README.txt	2006-04-08 19:57:27 UTC (rev 66687)
+++ zope3org/trunk/src/zorg/live/demo/upload/README.txt	2006-04-08 20:00:06 UTC (rev 66688)
@@ -76,7 +76,24 @@
     >>> for i in range(1, 10) :
     ...     time.sleep(0.1)
     ...     stream.write("Some Data")
+    addEvent 18
+    added
+    addEvent 27
+    added
+    addEvent 36
+    added
+    addEvent 45
+    added
+    addEvent 54
+    added
+    addEvent 63
+    added
+    addEvent 72
+    added
+    addEvent 81
+    added 
     
+    
     >>> event = client.nextEvent()
     >>> while event :
     ...     if event.name == "progress" :

Modified: zope3org/trunk/src/zorg/live/demo/upload/upload.py
===================================================================
--- zope3org/trunk/src/zorg/live/demo/upload/upload.py	2006-04-08 19:57:27 UTC (rev 66687)
+++ zope3org/trunk/src/zorg/live/demo/upload/upload.py	2006-04-08 20:00:06 UTC (rev 66688)
@@ -41,7 +41,7 @@
     
     
     def update_object(self, data, contenttype):
-        print "XXX"
+        
         f = File(data, contenttype)
         zope.event.notify(objectevent.ObjectCreatedEvent(f))
         

Modified: zope3org/trunk/src/zorg/live/page/client.js
===================================================================
--- zope3org/trunk/src/zorg/live/page/client.js	2006-04-08 19:57:27 UTC (rev 66687)
+++ zope3org/trunk/src/zorg/live/page/client.js	2006-04-08 20:00:06 UTC (rev 66688)
@@ -30,14 +30,15 @@
 		},
 
         onComplete: function(request, transport, json) {
-            
-            if (transport.responseText == "json") {
-                var event = JSON.parse(request.header('X-JSON'));
+        
+            var response = transport.responseText;
+            if (response[0] == '{') {
+                var event = JSON.parse(response);
                 var name = event['name'];
                 name = "on" + name[0].toUpperCase() + name.slice(1);
-                
                 LivePage.Responders.dispatch(name, event);
                 }
+                
 			setTimeout("LivePage.nextEvent()", 500);
 			return true;
 			}
@@ -112,10 +113,10 @@
             } else {
             area.scrollTop = area.scrollHeight;
             }
-        }
+        },
         
     highlightElement : function (id) {
-        
+        return;
         }
 
 }

Modified: zope3org/trunk/src/zorg/live/page/event.py
===================================================================
--- zope3org/trunk/src/zorg/live/page/event.py	2006-04-08 19:57:27 UTC (rev 66687)
+++ zope3org/trunk/src/zorg/live/page/event.py	2006-04-08 20:00:06 UTC (rev 66688)
@@ -79,7 +79,7 @@
     
     >>> event = LivePageEvent(description="uwe goes online")
     >>> event.toJSON()
-    '{..."where":null...}'
+    '{..."where": null...}'
     
     In order to convert JSON serialized event back into Python objects we
     use the dict2event function. This function uses the 'name' key 
@@ -184,11 +184,10 @@
 class ProgressEvent(LivePageEvent) :
     """ Indicates the progress of a long enduring task.
 
-        >>> event = Progress(percent=20)
+        >>> event = ProgressEvent(percent=20)
         >>> event.pprint()
-        html : '<div id="comment1"></div>'
-        id : 'comments'
-        name : 'update'
+        name : 'progress'
+        percent : 20
         recipients : 'all'
         where : None
     

Modified: zope3org/trunk/src/zorg/live/page/page.py
===================================================================
--- zope3org/trunk/src/zorg/live/page/page.py	2006-04-08 19:57:27 UTC (rev 66687)
+++ zope3org/trunk/src/zorg/live/page/page.py	2006-04-08 20:00:06 UTC (rev 66688)
@@ -94,7 +94,9 @@
         """
         request = self.request
         method = Output(self, request).publishTraverse(request, uuid)
-        return method()
+        rslt = method()
+        #print "---output", rslt
+        return rslt
 
     def input(self, uuid, event=None) :
         """ Convenience function that accesses a specific client.

Modified: zope3org/trunk/src/zorg/live/server.py
===================================================================
--- zope3org/trunk/src/zorg/live/server.py	2006-04-08 19:57:27 UTC (rev 66687)
+++ zope3org/trunk/src/zorg/live/server.py	2006-04-08 20:00:06 UTC (rev 66688)
@@ -166,7 +166,7 @@
         reactor.callLater(self.idleInterval, self.onIdle)
 
  
-    def returnResult(self, output, headers=None, json=None) :
+    def returnResult(self, output, headers=None) :
         """ Writes the result to the deferred response and closes
             the output stream.
         """
@@ -175,10 +175,7 @@
                         ("Connection", "close"),
                         ('content-type', 'text/html;charset=utf-8'), 
                         ('content-length', len(output))]
-        
-        if json :
-            headers.append(('X-JSON', json))    
-            
+                    
         print "***LivePage result", self.num, len(output), "bytes", self.uuid, headers
         print "Output", output
         
@@ -206,7 +203,7 @@
         client = self.manager.get(self.uuid, None)
         if client is None : # Uups, the client has gone in the meanwhile
             error = ErrorEvent(description="Unexpected timeout")
-            return self.returnResult("json", json=error.toJSON())        
+            return self.returnResult(error.toJSON())        
             
         r = self.result
         if r :
@@ -217,10 +214,10 @@
             
         event = client.nextEvent()
         if event is not None :
-            return self.returnResult("json", json=event.toJSON())
+            return self.returnResult(event.toJSON())
         
         if time.time() > self.expires :
-            return self.returnResult("json", json=IdleEvent().toJSON())
+            return self.returnResult(IdleEvent().toJSON())
         
         reactor.callLater(self.idleInterval, self.onIdle)
  



More information about the Checkins mailing list