*** /u/t/software/Quixote-0.5/publish.py Mon Jun 3 08:45:42 2002 --- publish.py Thu Oct 3 14:24:54 2002 *************** *** 198,211 **** def parse_request (self, stdin, env): """Parse the request information and return a HTTPRequest object. """ - global _request - - self.start_time = time.time() request = HTTPRequest(stdin, env) ! _request = request request.process_inputs() return request def start_request (self, request): """Called at the start of each request. Overridden by SessionPublisher to handle session details. --- 198,225 ---- def parse_request (self, stdin, env): """Parse the request information and return a HTTPRequest object. """ request = HTTPRequest(stdin, env) ! request.start_time = time.time() request.process_inputs() + + self.set_request(request) return request + def set_request(self, request): + """Called by parse_request to set the current connection's request + object.""" + self._request = request + + def get_request(self): + """Called by quixote.get_request() to get the request object.""" + return self._request + + def clear_request(self, request): + """Called at the end of each publish() call. + Invalidates the request object. + """ + self._request = None + def start_request (self, request): """Called at the start of each request. Overridden by SessionPublisher to handle session details. *************** *** 221,227 **** else: user = "-" now = time.time() ! seconds = now - self.start_time now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) --- 235,241 ---- else: user = "-" now = time.time() ! seconds = now - requeset.start_time now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) *************** *** 551,563 **** the output is returned. Exceptions are handled by the caller. """ - self.start_request(request) - # Traverse package to a (hopefully-) callable object object = self.traverse_url(path, request) # None means no output -- traverse_url() just issued a redirect. if object is None: return None # Anything else must be either a string... --- 565,576 ---- the output is returned. Exceptions are handled by the caller. """ # Traverse package to a (hopefully-) callable object object = self.traverse_url(path, request) # None means no output -- traverse_url() just issued a redirect. if object is None: + print 'REDIRECT' return None # Anything else must be either a string... *************** *** 621,628 **** request = self.parse_request(stdin, env) try: output = self.try_publish(request, env.get('PATH_INFO', '')) ! except errors.PublishError, exc: # Exit the publishing loop and return a result right away. output = self.finish_interrupted_request(request, exc) --- 634,642 ---- request = self.parse_request(stdin, env) try: + self.start_request(request) output = self.try_publish(request, env.get('PATH_INFO', '')) ! self.clear_request(request) except errors.PublishError, exc: # Exit the publishing loop and return a result right away. output = self.finish_interrupted_request(request, exc) *************** *** 722,749 **** # Publisher singleton, only one of these per process. _publisher = None - # The request currently being processed. - _request = None - def get_publisher(): global _publisher return _publisher def get_request(): ! global _request ! return _request def get_session(): ! global _request ! return _request.session def get_session_manager (): global _publisher return _publisher.session_mgr def get_user(): ! global _request ! session = _request.session if session is None: return None else: --- 736,757 ---- # Publisher singleton, only one of these per process. _publisher = None def get_publisher(): global _publisher return _publisher def get_request(): ! return _publisher.get_request() def get_session(): ! return get_request().session def get_session_manager (): global _publisher return _publisher.session_mgr def get_user(): ! session = get_request().session if session is None: return None else: