[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