diff --git a/src/c3nav/api/serializers.py b/src/c3nav/api/serializers.py index 26031f2f..0104accb 100644 --- a/src/c3nav/api/serializers.py +++ b/src/c3nav/api/serializers.py @@ -1,6 +1,9 @@ +from django.conf import settings + from rest_framework.serializers import ModelSerializer from ..mapdata.models import Level, Package, Source +from .permissions import can_access_package class BoundsMixin: @@ -22,6 +25,13 @@ class PackageSerializer(BoundsMixin, ModelSerializer): model = Package fields = ('name', 'depends') + def to_representation(self, obj): + result = super().to_representation(obj) + result['public'] = obj.name in settings.PUBLIC_PACKAGES + if 'request' in self.context: + result['access'] = can_access_package(self.context['request'], obj) + return result + class SourceSerializer(BoundsMixin, ModelSerializer): class Meta: