def calc_last_modified(request, *args, **kwargs): """ Returns the file's modified time as the last-modified date """ assert "cache_name" in kwargs, "Must specify cache_name as a keyword arg." try: cache = get_cache(kwargs["cache_name"]) assert isinstance(cache, FileBasedCache) or isinstance( cache, LocMemCache), "requires file-based or mem-based cache." except InvalidCacheBackendError: return None key = django_get_cache_key(request, cache=cache) if key is None or not cache.has_key(key): return None if isinstance(cache, FileBasedCache): fname = cache._key_to_file(cache.make_key(key)) if not os.path.exists( fname ): # would happen only if cache expired AFTER getting the key return None last_modified = datetime.datetime.fromtimestamp( os.path.getmtime(fname)) elif isinstance(cache, LocMemCache): # It's either in the cache (and valid), and therefore anything since the server # started would be fine. # Or, it's not in the cache at all. creation_time = cache._expire_info[cache.make_key( key)] - settings.CACHE_TIME last_modified = datetime.datetime.fromtimestamp(creation_time) return last_modified
def calc_last_modified(request, *args, **kwargs): """ Returns the file's modified time as the last-modified date """ assert "cache_name" in kwargs, "Must specify cache_name as a keyword arg." try: cache = get_cache(kwargs["cache_name"]) assert isinstance(cache, FileBasedCache) or isinstance(cache, LocMemCache), "requires file-based or mem-based cache." except InvalidCacheBackendError: return None key = django_get_cache_key(request, cache=cache) if key is None or not cache.has_key(key): return None if isinstance(cache, FileBasedCache): fname = cache._key_to_file(cache.make_key(key)) if not os.path.exists(fname): # would happen only if cache expired AFTER getting the key return None last_modified = datetime.datetime.fromtimestamp(os.path.getmtime(fname)) elif isinstance(cache, LocMemCache): # It's either in the cache (and valid), and therefore anything since the server # started would be fine. # Or, it's not in the cache at all. creation_time = cache._expire_info[cache.make_key(key)] - settings.CACHE_TIME last_modified = datetime.datetime.fromtimestamp(creation_time) return last_modified
def get_cache_key(path=None, url_name=None, cache=None, failure_ok=False): """Call into Django to retrieve a cache key for the given url, or given url name NOTE: ONLY RETURNS CACHE_KEY IF THE CACHE_ITEM HAS BEEN CREATED ELSEWHERE!!!""" assert (path or url_name) and not ( path and url_name), "Must have path or url_name parameter, but not both" if not cache: cache = get_web_cache() request = HttpRequest() request.path = path or reverse(url_name) request.session = { settings.LANGUAGE_COOKIE_NAME: translation.get_language() } cache_key = django_get_cache_key(request, cache=get_web_cache()) if not cache_key and not failure_ok: logging.warn( "The cache item does not exist, and so could not be retrieved (path=%s)." % request.path) return cache_key
def get_cache_key(path=None, url_name=None, cache=None, failure_ok=False): """Call into Django to retrieve a cache key for the given url, or given url name NOTE: ONLY RETURNS CACHE_KEY IF THE CACHE_ITEM HAS BEEN CREATED ELSEWHERE!!!""" assert (path or url_name) and not (path and url_name), "Must have path or url_name parameter, but not both" if not cache: cache = get_web_cache() request = HttpRequest() request.path = path or reverse(url_name) request.session = {settings.LANGUAGE_COOKIE_NAME: translation.get_language()} cache_key = django_get_cache_key(request, cache=get_web_cache()) if not cache_key and not failure_ok: pass#logging.warn("The cache item does not exist, and so could not be retrieved (path=%s)." % request.path) return cache_key