--- a/src/pyams_content/shared/view/__init__.py Tue Jul 03 18:16:59 2018 +0200
+++ b/src/pyams_content/shared/view/__init__.py Wed Jul 04 08:56:22 2018 +0200
@@ -53,6 +53,8 @@
VIEW_CACHE_KEY = 'view_{view}'
VIEW_CONTEXT_CACHE_KEY = 'view_{view}.context_{context}'
+_MARKER = object()
+
@implementer(IWfView, IPreviewTarget, IReviewTarget)
class WfView(WfSharedContent):
@@ -87,16 +89,22 @@
content_types |= set(self.selected_content_types)
return list(content_types)
- def get_results(self, context, sort_index=None, reverse=None, limit=None):
- views_cache = get_cache(VIEWS_CACHE_REGION, VIEWS_CACHE_NAME)
- if self.is_using_context:
- cache_key = VIEW_CONTEXT_CACHE_KEY.format(view=ICacheKeyValue(self),
- context=ICacheKeyValue(context))
- else:
- cache_key = VIEW_CACHE_KEY.format(view=ICacheKeyValue(self))
- try:
- results = views_cache.get_value(cache_key)
- except KeyError:
+ def get_results(self, context, sort_index=None, reverse=None, limit=None, ignore_cache=False):
+ results = _MARKER
+ if not ignore_cache:
+ # check for cache
+ views_cache = get_cache(VIEWS_CACHE_REGION, VIEWS_CACHE_NAME)
+ if self.is_using_context:
+ cache_key = VIEW_CONTEXT_CACHE_KEY.format(view=ICacheKeyValue(self),
+ context=ICacheKeyValue(context))
+ else:
+ cache_key = VIEW_CACHE_KEY.format(view=ICacheKeyValue(self))
+ try:
+ results = views_cache.get_value(cache_key)
+ except KeyError:
+ pass
+ # Execute query
+ if results is _MARKER:
registry = get_current_registry()
adapter = registry.queryAdapter(self, IViewQuery, name='es')
if adapter is None:
@@ -107,8 +115,9 @@
limit or self.limit)
intids = get_utility(IIntIds)
cache, results = tee(results)
- views_cache.set_value(cache_key, [intids.queryId(item) for item in cache])
- logger.debug("Storing view items to cache key {0}".format(cache_key))
+ if not ignore_cache:
+ views_cache.set_value(cache_key, [intids.queryId(item) for item in cache])
+ logger.debug("Storing view items to cache key {0}".format(cache_key))
else:
results = CatalogResultSet(results)
logger.debug("Retrieving view items from cache key {0}".format(cache_key))