def delete(self): """ DON'T USE THIS except for in extreme circumstances. Instead, just set is_active=False. Has leftover side-effects like not updating follower/following count. Only use this if you're prepared to fix it, or do some manual work afterward. """ #raise Exception("Remove this exception first if you're sure you want to do this.") from drawquest.apps.playback.models import Playback from drawquest.apps.quest_comments.models import QuestComment from drawquest.apps.stars.models import Unstar from drawquest.apps.iap.models import IapReceipt from apps.canvas_auth.models import User as CanvasUser #self.activity_set.all().update(actor=None) Playback.objects.filter(viewer=self).delete() Unstar.objects.filter(user=self).delete() IapReceipt.objects.filter(purchaser=self).delete() for comment in self.comments.all(): quest_comment = QuestComment.all_objects.get(pk=comment.pk) quest_comment.playbacks.all().delete() comment.delete() CanvasUser.objects.get(pk=self.pk).delete() invalidate_namespace('comments')
def test_simple_namespaced_key(self): factor = 2 @cached_function(namespace='foospace') def my_func(bar): return bar * factor @cached_function(namespace='foospace') def my_other_func(bar): return bar % factor ret = my_func(4) ret2 = my_other_func(4) self.assertEqual(ret, 4 * factor) self.assertEqual(ret2, 4 % factor) # Haven't invalidated yet, so changing `factor` shouldn't matter. old_factor, factor = factor, 3 ret = my_func(4) self.assertEqual(ret, 4 * old_factor) invalidate_namespace('foospace') ret = my_func(4) ret2 = my_other_func(4) self.assertEqual(ret, 4 * factor) self.assertEqual(ret2, 4 % factor)
def test_namespace_funcs(self): for ns_key in ( 'huh', ( 'my', 'namespace', 'names', ), 12345, ): def ns_func(foo): return ( foo, ns_key, ) val = 5 @cached_function(namespace=ns_func) def my_nsed_func(foo): return val + foo self.assertEqual(my_nsed_func(1), val + 1) old_val, val = val, 10 self.assertEqual(my_nsed_func(1), old_val + 1) invalidate_namespace(ns_func(1)) self.assertEqual(my_nsed_func(1), val + 1)
def enable(from_id=None): if from_id is None: from_id = get_latest_before_unjudged_id() if from_id is None: from_id = 0 redis.set('dq:comment_freeze_id', from_id) invalidate_namespace('comments')
def test_namespace_funcs(self): for ns_key in ('huh', ('my', 'namespace', 'names',), 12345,): def ns_func(foo): return (foo, ns_key,) val = 5 @cached_function(namespace=ns_func) def my_nsed_func(foo): return val + foo self.assertEqual(my_nsed_func(1), val + 1) old_val, val = val, 10 self.assertEqual(my_nsed_func(1), old_val + 1) invalidate_namespace(ns_func(1)) self.assertEqual(my_nsed_func(1), val + 1)
def test_invalidating_nonexistent_namespace(self): invalidate_namespace('nonexistent_namespace')
from cachecow.cache import invalidate_namespace from django.dispatch import Signal current_quest_changed = Signal(providing_args=['instance']) current_quest_changed.connect( lambda sender, instance, **kwargs: invalidate_namespace('quests'), dispatch_uid='current_quest_changed_invalidate_namespace', weak=False)
def nuke_deck_review_stats_namespace(sender, instance, **kwargs): invalidate_namespace(deck_review_stats_namespace(instance.deck_id))
from cachecow.cache import invalidate_namespace from django.dispatch import Signal current_quest_changed = Signal(providing_args=["instance"]) current_quest_changed.connect( lambda sender, instance, **kwargs: invalidate_namespace("quests"), dispatch_uid="current_quest_changed_invalidate_namespace", weak=False, )
from cachecow.cache import invalidate_namespace from django.dispatch import Signal comment_freeze_ts_changed = Signal() comment_freeze_ts_changed.connect( lambda sender, **kwargs: invalidate_namespace('comments'), dispatch_uid='freeze_ts_changed', weak=False )
def disable(): redis.delete('dq:comment_freeze_id') invalidate_namespace('comments')
def nuke_fact_grid_namespace(sender, decks=[], **kwargs): for deck in decks: invalidate_namespace(fact_grid_namespace(deck.pk))
from cachecow.cache import invalidate_namespace from django.dispatch import Signal comment_freeze_ts_changed = Signal() comment_freeze_ts_changed.connect( lambda sender, **kwargs: invalidate_namespace('comments'), dispatch_uid='freeze_ts_changed', weak=False)
def nuke_deck_review_stats_namespace(sender, instance, **kwargs): invalidate_namespace(deck_review_stats_namespace(instance.deck))