[Checkins] SVN: zope3org/trunk/src/zorg/live/ Added a marker interface and a factory for live page requests.

Uwe Oestermeier uwe_oestermeier at iwm-kmrc.de
Fri May 26 06:34:41 EDT 2006


Log message for revision 68305:
  Added a marker interface and a factory  for live page requests.

Changed:
  U   zope3org/trunk/src/zorg/live/interfaces.py
  U   zope3org/trunk/src/zorg/live/page/page.py
  U   zope3org/trunk/src/zorg/live/server.py

-=-
Modified: zope3org/trunk/src/zorg/live/interfaces.py
===================================================================
--- zope3org/trunk/src/zorg/live/interfaces.py	2006-05-26 09:03:05 UTC (rev 68304)
+++ zope3org/trunk/src/zorg/live/interfaces.py	2006-05-26 10:34:40 UTC (rev 68305)
@@ -12,49 +12,10 @@
 #
 ##############################################################################
 """
-
 $Id: interfaces.py 38949 2005-10-08 13:28:58Z dominikhuber $
 """
 
 from zope.interface import Interface
 
-from zope.app.annotation.interfaces import IAnnotatable
-from zope.app.annotation.interfaces import IAttributeAnnotatable
-
-from zope.interface.common.mapping import IEnumerableMapping
-from zope.interface.common.mapping import IWriteMapping
-
-class ISeeable(IAnnotatable):
-    """This interface marks components that should provide annotable seen
-       marker.
-    
-        Components has to provide a annotations mechanism.
-    """
-
-
-class ISeeableAttributeAnnotable(ISeeable, IAttributeAnnotatable):
-    """This interface marks components that should provide 
-       attribute annotable seen marker.
-    """
-
-
-class ISeen(IEnumerableMapping, IWriteMapping):
-    """Mark an object as seen or unseen in an enumerable mapping with
-       principal ids as keys and datetime objects as values.
-    """
-
-    def markAsSeen(self, principal_id, datetime=None) :
-        """ Stores the datetime at which a principal has seen the item. 
-            Uses the current datetime as a default value.
-        """ 
-        
-    def markAsUnseen(self, principal_id) :
-        """ Removes the mark. """
-        
-    def hasSeen(self, principal_id) :
-        """ Returns `True` iff the principal has seen the item. """
-        
-    def when(self) :
-        """ Returns the datetime at which the user has seen the item. """
-
-
+class ILiveRequest(Interface) :
+    """ Marker interface for requests created by the livepage server. """
\ No newline at end of file

Modified: zope3org/trunk/src/zorg/live/page/page.py
===================================================================
--- zope3org/trunk/src/zorg/live/page/page.py	2006-05-26 09:03:05 UTC (rev 68304)
+++ zope3org/trunk/src/zorg/live/page/page.py	2006-05-26 10:34:40 UTC (rev 68305)
@@ -28,9 +28,11 @@
 from zope.app.keyreference.interfaces import IKeyReference
 from zope.app.publisher.browser import BrowserView
 
+from zope.app.twisted.interfaces import IServerType
 
 from zorg.ajax.page import ComposedAjaxPage
 
+from zorg.live.interfaces import ILiveRequest
 from zorg.live.page.interfaces import ILivePage
 from zorg.live.page.interfaces import ILivePageManager
 from zorg.live.page.event import dict2event
@@ -58,6 +60,12 @@
     clientFactory = LivePageClient
     clientUUID = None
     
+    
+    def isLive(self) :
+        """ Returns True if the livepage server is available. """
+        return ILiveRequest.providedBy(self.request)
+        
+    
     def notify(self, event) :
         """ Default implementation of an event handler. Must be specialized. """
         pass

Modified: zope3org/trunk/src/zorg/live/server.py
===================================================================
--- zope3org/trunk/src/zorg/live/server.py	2006-05-26 09:03:05 UTC (rev 68304)
+++ zope3org/trunk/src/zorg/live/server.py	2006-05-26 10:34:40 UTC (rev 68305)
@@ -28,7 +28,10 @@
 from twisted.web2 import stream
 
 from zope.component import ComponentLookupError
+from zope.interface import implements
+from zope.interface import alsoProvides
 
+from zope.app.publication.httpfactory import HTTPPublicationRequestFactory
 from zope.app.wsgi import WSGIPublisherApplication
 from zope.app.twisted.server import ServerType
 from zope.app.twisted.http import Prebuffer
@@ -43,6 +46,8 @@
 from zorg.live.page.event import ProgressEvent
 from zorg.live.page.event import dict2event
 
+import interfaces
+
 badRequest = object()
 securityInputLimit = 64000
 requestTimeOut = 30
@@ -414,12 +419,24 @@
         return self.res, segments
 
 
+class HTTPLivePageRequestFactory(HTTPPublicationRequestFactory) :
+    """ A special request factory for live page servers. 
+        Marks all requests as live page requests.
+    """
     
+    def __call__(self, input_stream, env, output_stream=None) :
+        request = super(HTTPLivePageRequestFactory, self).__call__(input_stream,
+                                                            env, output_stream)
+        alsoProvides(request, interfaces.ILiveRequest)       
+        return request
+        
+
+    
 def createHTTPFactory(db):
 
     reactor.threadpool.adjustPoolsize(10, 20)
     
-    resource = WSGIPublisherApplication(db)
+    resource = WSGIPublisherApplication(db, factory=HTTPLivePageRequestFactory)
     resource = LivePageWSGIResource(resource)
     resource = LiveLogWrapperResource(resource)
     resource = LivePrebuffer(resource)



More information about the Checkins mailing list