def find_setting(group, key, site=None): """Get a setting or longsetting by group and key, cache and return it.""" siteid = _safe_get_siteid(site) ck = cache_key('Setting', siteid, group, key) setting = None try: setting = cache_get(ck) except NotCachedError: if apps.ready: try: setting = Setting.objects.get(site__id__exact=siteid, key__exact=key, group__exact=group) except Setting.DoesNotExist: # maybe it is a "long setting" try: setting = LongSetting.objects.get(site__id__exact=siteid, key__exact=key, group__exact=group) except LongSetting.DoesNotExist: pass cache_set(ck, value=setting) if not setting: raise SettingNotSet(key, cachekey=ck) return setting
def testDisable(self): caching.cache_set('disabled', value=False) v = caching.cache_get('disabled') self.assertEqual(v, False) caching.cache_enable(False) caching.cache_set('disabled', value=True) try: caching.cache_get('disabled') self.fail('should have raised NotCachedError') except caching.NotCachedError, nce: key = caching.cache_key('disabled') self.assertEqual(nce.key, key)
def testDisable(self): caching.cache_set("disabled", value=False) v = caching.cache_get("disabled") self.assertEqual(v, False) caching.cache_enable(False) caching.cache_set("disabled", value=True) try: caching.cache_get("disabled") self.fail("should have raised NotCachedError") except caching.NotCachedError as nce: key = caching.cache_key("disabled") self.assertEqual(nce.key, key) caching.cache_enable() v2 = caching.cache_get("disabled") # should still be False, since the cache was disabled self.assertEqual(v2, False)
def find(cls, group, key): """Get a setting from cache, if possible""" site_id = settings.SITE_ID ck = cache_key('Setting', site_id, group, key) try: setting = cache_get(ck) except NotCachedError: if loading.app_cache_ready(): try: setting = Setting.objects.get(site__id__exact=site_id, key__exact=key, group__exact=group) setting.cache_set() except Setting.DoesNotExist: raise SettingNotSet(key) else: raise SettingNotSet("App cache not loaded: %s" % key) return setting
def testPairedDualKey(self): v = caching.cache_key("test", 3, more="yes") self.assertEqual(v, caching.CACHE_PREFIX + "::test::3::more::yes")
def testSimpleKey(self): v = caching.cache_key('test') self.assertEqual(v, 'test')
def cache_key(self, *args, **kwargs): # note same cache pattern as Setting. This is so we can look up in one check. # they can't overlap anyway, so this is moderately safe. At the worst, the # Setting will override a LongSetting. return cache_key('Setting', self.site, self.group, self.key)
def cache_key(self, *args, **kwargs): return cache_key('Setting', self.site, self.group, self.key)
def testDualKey(self): v = caching.cache_key('test', 2) self.assertEqual(v, 'test::2')
def cache_key(self, *args, **kwargs): keys = [self.__class__.__name__, self] keys.extend(args) return caching.cache_key(keys, **kwargs)
def testPairedDualKey(self): v = caching.cache_key('test', 3, more='yes') self.assertEqual(v, caching.CACHE_PREFIX + '::test::3::more::yes')
def testSimpleKey(self): v = caching.cache_key('test') self.assertEqual(v, caching.CACHE_PREFIX + '::test')
def testDualKey(self): v = caching.cache_key("test", 2) self.assertEqual(v, caching.CACHE_PREFIX + "::test::2")
def testSimpleKey(self): v = caching.cache_key("test") self.assertEqual(v, caching.CACHE_PREFIX + "::test")
def testPairedDualKey(self): v = caching.cache_key('test', 3, more='yes') self.assertEqual(v, 'test::3::more::yes')
def testDualKey(self): v = caching.cache_key('test', 2) self.assertEqual(v, caching.CACHE_PREFIX + '::test::2')
def cache_key(self, *args, **kwargs): return cache_key("setting", self.group, self.key)