context_processors.py 794 B

12345678910111213141516171819202122
  1. from django.db.models import Q
  2. from misago.core.cache import cache
  3. from .serializers import BasicCategorySerializer
  4. from .models import Category
  5. def preload_categories_json(request):
  6. cache_key = 'misago_categories_json_{}'.format(request.user.acl_key)
  7. categories_json = cache.get(cache_key, 'nada')
  8. if categories_json == 'nada':
  9. is_root = Q(level=0)
  10. is_visible = Q(id__in=request.user.acl_cache['visible_categories'])
  11. queryset = Category.objects.all_categories(include_root=True)
  12. queryset = queryset.filter(is_root | is_visible)
  13. categories_json = BasicCategorySerializer(queryset, many=True).data
  14. cache.set(cache_key, categories_json, 15 * 60)
  15. request.frontend_context['store']['categories'] = categories_json
  16. return {}