Esempio n. 1
0
    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')
Esempio n. 2
0
    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')
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
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')
Esempio n. 7
0
    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)
Esempio n. 8
0
 def test_invalidating_nonexistent_namespace(self):
     invalidate_namespace('nonexistent_namespace')
Esempio n. 9
0
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)
Esempio n. 10
0
 def test_invalidating_nonexistent_namespace(self):
     invalidate_namespace('nonexistent_namespace')
Esempio n. 11
0
def nuke_deck_review_stats_namespace(sender, instance, **kwargs):
    invalidate_namespace(deck_review_stats_namespace(instance.deck_id))
Esempio n. 12
0
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,
)
Esempio n. 13
0
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
)

Esempio n. 14
0
def disable():
    redis.delete('dq:comment_freeze_id')
    invalidate_namespace('comments')
Esempio n. 15
0
def nuke_fact_grid_namespace(sender, decks=[], **kwargs):
    for deck in decks:
        invalidate_namespace(fact_grid_namespace(deck.pk))
Esempio n. 16
0
def nuke_fact_grid_namespace(sender, decks=[], **kwargs):
    for deck in decks:
        invalidate_namespace(fact_grid_namespace(deck.pk))
Esempio n. 17
0
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)
Esempio n. 18
0
def nuke_deck_review_stats_namespace(sender, instance, **kwargs):
    invalidate_namespace(deck_review_stats_namespace(instance.deck))