123456789101112131415161718192021222324252627 |
- from django.db.models import Q
- from misago.core.cache import cache
- from .serializers import BasicCategorySerializer
- from .models import Category
- def preload_categories_json(request):
- try:
- user_acl_key = request.user.acl_key
- except AttributeError:
- return {}
-
- cache_key = 'misago_categories_json_{}'.format(request.user.acl_key)
- categories_json = cache.get(cache_key, 'nada')
- if categories_json == 'nada':
- is_root = Q(level=0)
- is_visible = Q(id__in=request.user.acl_cache['visible_categories'])
- queryset = Category.objects.all_categories(include_root=True)
- queryset = queryset.filter(is_root | is_visible)
- categories_json = BasicCategorySerializer(queryset, many=True).data
- cache.set(cache_key, categories_json, 15 * 60)
- request.frontend_context['store']['categories'] = categories_json
- return {}
|