def test_invalidation_signal(self):
        def set_signal(signal=None, **kwargs):
            signal_calls.append(kwargs)

        signal_calls = []
        cache_invalidated.connect(set_signal, dispatch_uid=1, weak=False)

        invalidate_all()
        invalidate_model(Post)
        c = Category.objects.create(title='Hey')
        self.assertEqual(signal_calls, [
            {
                'sender': None,
                'obj_dict': None
            },
            {
                'sender': Post,
                'obj_dict': None
            },
            {
                'sender': Category,
                'obj_dict': {
                    'id': c.pk,
                    'title': 'Hey'
                }
            },
        ])
Example #2
0
 def ready(self):
     """Populate settings.CONSTANCE_CONFIG with collected config from each apps"""
     final_config = OrderedDict()
     fieldsets = {}
     for app in get_his_apps():
         if hasattr(app, 'config'):
             config_keys = []
             for key, value in app.config.items():
                 full_key = '%s_%s' % (app.label, key)
                 final_config[full_key] = value
                 config_keys.append(full_key)
             fieldsets[app.label] = config_keys
     settings.CONSTANCE_CONFIG.update(final_config)
     settings.CONSTANCE_CONFIG_FIELDSETS.update(fieldsets)
     cache_invalidated.connect(clear_cache)
Example #3
0
    def test_invalidation_signal(self):
        def set_signal(signal=None, **kwargs):
            signal_calls.append(kwargs)

        signal_calls = []
        cache_invalidated.connect(set_signal, dispatch_uid=1, weak=False)

        invalidate_all()
        invalidate_model(Post)
        c = Category.objects.create(title='Hey')
        self.assertEqual(signal_calls, [
            {'sender': None, 'obj_dict': None},
            {'sender': Post, 'obj_dict': None},
            {'sender': Category, 'obj_dict': {'id': c.pk, 'title': 'Hey'}},
        ])
Example #4
0
 def ready(self):
     cache_read.connect(stats_collector)
     cache_invalidated.connect(stats_invalidate)
Example #5
0
    instance.remove_stale_data(instance.content_types.all())


m2m_changed.connect(handle_cf_removed_obj_types, sender=CustomField.content_types.through)
post_save.connect(handle_cf_renamed, sender=CustomField)
pre_delete.connect(handle_cf_deleted, sender=CustomField)


#
# Caching
#

cacheops_cache_hit = Counter('cacheops_cache_hit', 'Number of cache hits')
cacheops_cache_miss = Counter('cacheops_cache_miss', 'Number of cache misses')
cacheops_cache_invalidated = Counter('cacheops_cache_invalidated', 'Number of cache invalidations')


def cache_read_collector(sender, func, hit, **kwargs):
    if hit:
        cacheops_cache_hit.inc()
    else:
        cacheops_cache_miss.inc()


def cache_invalidated_collector(sender, obj_dict, **kwargs):
    cacheops_cache_invalidated.inc()


cache_read.connect(cache_read_collector)
cache_invalidated.connect(cache_invalidated_collector)