```python import json from tastypie.resources import ModelResource from tastypie import fields from tastypie.constants import ALL_WITH_RELATIONS, ALL from tastypie.authorization import DjangoAuthorization from guardian.shortcuts import get_objects_for_user from geonode.api.api import ProfileResource, GroupResource from geonode.api.resourcebase_api import ResourceBaseResource from .models import Geocollection class GeocollectionAuth(DjangoAuthorization): def read_list(self, object_list, bundle): permitted_ids = get_objects_for_user( bundle.request.user, 'geocollections.access_geocollection').values('id') return object_list.filter(id__in=permitted_ids) def read_detail(self, object_list, bundle): return bundle.request.user.has_perm( 'access_geocollection', bundle.obj) class GeocollectionResource(ModelResource): users = fields.ToManyField(ProfileResource, attribute=lambda bundle: bundle.obj.group.group.user_set.all(), full=True) group = fields.ToOneField(GroupResource, 'group__group', full=True) resources = fields.ToManyField(ResourceBaseResource, 'resources', full=True) class Meta: authorization = GeocollectionAuth() queryset = Geocollection.objects.all().order_by('-group') ordering = ['group'] allowed_methods = ['get'] resource_name = 'geocollections' filtering = { 'group': ALL_WITH_RELATIONS, 'id': ALL } ```