diff --git a/plone/app/caching/lookup.py b/plone/app/caching/lookup.py index d428870..eb0f188 100644 --- a/plone/app/caching/lookup.py +++ b/plone/app/caching/lookup.py @@ -72,10 +72,9 @@ def __call__(self): return None # 3. Look up the published name in the page template mapping - if ploneCacheSettings.templateRulesetMapping is not None: - ruleset = ploneCacheSettings.templateRulesetMapping.get(name, None) - if ruleset is not None: - return ruleset + ruleset = ploneCacheSettings.templateRulesetMapping.get(name, None) + if ruleset is not None: + return ruleset # 4. Find the parent of the published object parent = getattr(self.published, "__parent__", None) @@ -97,13 +96,11 @@ def __call__(self): # 4.1.2.1. Look up the parent type in the content type # mapping - if ploneCacheSettings.contentTypeRulesetMapping is not None: - ruleset = ploneCacheSettings.contentTypeRulesetMapping.get( - parentPortalType, - None, - ) - if ruleset is not None: - return ruleset + ruleset = ploneCacheSettings.contentTypeRulesetMapping.get( + parentPortalType, None + ) + if ruleset is not None: + return ruleset # 4.1.2.2. Look up a ruleset on the parent object and # return diff --git a/plone/app/caching/operations/etags.py b/plone/app/caching/operations/etags.py index 50a297a..6e51576 100644 --- a/plone/app/caching/operations/etags.py +++ b/plone/app/caching/operations/etags.py @@ -3,6 +3,7 @@ from plone.app.caching.operations.utils import getLastModifiedAnnotation from Products.CMFCore.utils import getToolByName from zope.component import adapter +from zope.component.hooks import getSite from zope.component import queryMultiAdapter from zope.interface import implementer from zope.interface import Interface @@ -21,14 +22,11 @@ def __init__(self, published, request): self.request = request def __call__(self): - context = getContext(self.published) - portal_state = queryMultiAdapter( - (context, self.request), name="plone_portal_state" - ) - if portal_state is None: + tool = queryMultiAdapter((getSite(), self.request), name="portal_membership") + if tool is None: return None - member = portal_state.member() + member = tool.getAuthenticatedMember() if member is None: return None @@ -47,21 +45,18 @@ def __init__(self, published, request): self.request = request def __call__(self): - context = getContext(self.published) - portal_state = queryMultiAdapter( - (context, self.request), name="plone_portal_state" - ) - if portal_state is None: + tool = queryMultiAdapter((getSite(), self.request), name="portal_membership") + if tool is None: return None - if portal_state.anonymous(): + if bool(tool.isAnonymousUser()): return "Anonymous" - member = portal_state.member() + member = tool.getAuthenticatedMember() if member is None: return None - return ";".join(sorted(member.getRolesInContext(context))) + return ";".join(sorted(member.getRolesInContext(getContext(self.published)))) @implementer(IETagValue) @@ -91,14 +86,19 @@ def __init__(self, published, request): self.request = request def __call__(self): + language = self.request.get("LANGUAGE", None) + if language: + return language context = getContext(self.published) + language = aq_inner(context).Language() + if language: + return language portal_state = queryMultiAdapter( (context, self.request), name="plone_portal_state" ) if portal_state is None: return None - - return portal_state.language() + return portal_state.default_language() @implementer(IETagValue) @@ -132,11 +132,10 @@ def __init__(self, published, request): def __call__(self): context = getContext(self.published) - tools = queryMultiAdapter((context, self.request), name="plone_tools") - if tools is None: + catalog = getToolByName(context, "portal_catalog", None) + if catalog is None: return None - - return str(tools.catalog().getCounter()) + return str(catalog.getCounter()) @implementer(IETagValue) @@ -157,7 +156,7 @@ def __call__(self): ) if context_state is None: return None - return str(int(context_state.is_locked())) + return "1" if context_state.is_locked() else "0" @implementer(IETagValue) @@ -197,13 +196,10 @@ def __init__(self, published, request): self.request = request def __call__(self): - context = getContext(self.published) - portal_state = queryMultiAdapter( - (context, self.request), name="plone_portal_state" - ) - if portal_state is None: + tool = queryMultiAdapter((getSite(), self.request), name="portal_membership") + if tool is None: return None - if portal_state.anonymous(): + if bool(tool.isAnonymousUser()): return None return "{}{}".format(time.time(), random.randint(0, 1000)) @@ -220,4 +216,4 @@ def __init__(self, published, request): self.request = request def __call__(self): - return self.request.get("__cp") and "1" or "0" + return "1" if self.request.get("__cp") or "0" diff --git a/plone/app/caching/operations/utils.py b/plone/app/caching/operations/utils.py index 4c5a0f5..15a2be5 100644 --- a/plone/app/caching/operations/utils.py +++ b/plone/app/caching/operations/utils.py @@ -286,11 +286,7 @@ def cachedResponse( response.setHeader(k, v) response.setHeader("X-RAMCache", PAGE_CACHE_KEY, literal=1) - - if not gzip: - response.enableHTTPCompression(request, disable=True) - else: - response.enableHTTPCompression(request) + response.enableHTTPCompression(request, disable=not gzip) return body @@ -393,13 +389,11 @@ def isModified(request, etag=None, lastModified=None): etagMatched = True - """ - If a site turns off etags after having them on, the pages previously - served will return an If-None-Match header, but the site will not be - configured for etags. In this case, force a refresh to load the - latest headers. I interpret this as the spec rule that the - etags do NOT match, and therefor we must not return a 304. - """ + # If a site turns off etags after having them on, the pages previously + # served will return an If-None-Match header, but the site will not be + # configured for etags. In this case, force a refresh to load the + # latest headers. I interpret this as the spec rule that the + # etags do NOT match, and therefor we must not return a 304. if ifNoneMatch and etag is None: return True