Source code for permabots.caching

from django.core.cache import cache


[docs]def generate_key(model, pk, related=None): if related: return '{}.{}.{}-{}'.format(model._meta.app_label, model._meta.model_name, related, pk) return '{}.{}-{}'.format(model._meta.app_label, model._meta.model_name, pk)
[docs]def get_or_set(model, pk): key = generate_key(model, pk) obj = cache.get(key) if not obj: obj = model.objects.get(pk=pk) cache.set(key, obj) return obj
[docs]def get(model, pk): key = generate_key(model, pk) return cache.get(key)
[docs]def delete(model, instance, related=None): key = generate_key(model, instance.pk, related) cache.delete(key)
[docs]def set(obj): key = generate_key(obj._meta.model, obj.pk) cache.set(key, obj)