def redirect(event): request = event.request canonical_url = request.get('CANONICAL_URL', None) if canonical_url is not None: query_string = request['QUERY_STRING'] if query_string: canonical_url = canonical_url + '?' + query_string actual_url = request.get('ACTUAL_URL') if query_string: actual_url = actual_url + '?' + query_string if actual_url == canonical_url: logger.warning( "wants to redirect from '%s' to CANONICAL_URL '%s', do nothing as it would be circular redirect", actual_url, canonical_url) logger.warning( "might be due to a broken plone.folder -- object id is missing from container.objectIds()" ) return referer_url = request.get('HTTP_REFERER', '') if referer_url == canonical_url: logger.warning( "wants to redirect to CANONICAL_URL '%s' but HTTP_REFERER is '%s'; do nothing as it would be circular redirect to referer", canonical_url, referer_url) return logger.info("redirect from '%s' to CANONICAL_URL '%s'", actual_url, canonical_url) if might_redirect(request): if request.get('IS_SITE_ACQUIRED', False): raise NotFound dummy = None doNotCache(dummy, request, request.response) raise MovedPermanently(canonical_url)
def modifyResponse(self, rulename, response): registry = getContext(self.published, IResourceRegistry) if registry is not None: if registry.getDebugMode() or not registry.isCacheable(self.published.__name__): doNotCache(self.published, self.request, response) return super(ResourceRegistriesCaching, self).modifyResponse(rulename, response, class_=StrongCaching)
def modifyResponse(self, rulename, response, class_=None): options = lookupOptions(class_ or self.__class__, rulename) hostname = getHostname(self.request) if hostname in options.get('hostnames_nocache', self.hostnames_nocache): doNotCache(self.published, self.request, response) else: return super(BaseHostnameCaching, self).modifyResponse(rulename, response, class_=None)
def modifyResponse(self, rulename, response): registry = getContext(self.published, IResourceRegistry) if registry is not None: if registry.getDebugMode() or not registry.isCacheable( self.published.__name__): doNotCache(self.published, self.request, response) return super(ResourceRegistriesCaching, self).modifyResponse(rulename, response, class_=StrongCaching)
def modifyResponse(self, rulename, response): doNotCache(self.published, self.request, response)