Example #1
0
 def retrieve_formatted(self, request, pk=None):
     item = self.get_object()
     serializer = ExpandedCredentialSerializer(item)
     return Response(serializer.data)
Example #2
0
 def list_credentials(self, request, pk=None):
     item = self.get_object()
     queryset = item.credentials
     serializer = ExpandedCredentialSerializer(queryset, many=True)
     return Response(serializer.data)
Example #3
0
 def list_historical_credentials(self, request, pk=None):
     item = self.get_object()
     queryset = item.credentials.filter(Q(revoked=True) | Q(inactive=True))
     serializer = ExpandedCredentialSerializer(queryset, many=True)
     return Response(serializer.data)
class TopicViewSet(ReadOnlyModelViewSet):
    serializer_class = TopicSerializer
    queryset = Topic.objects.all()

    @action(detail=True, url_path="formatted", methods=["get"])
    def retrieve_formatted(self, request, pk=None):
        item = self.get_object()
        serializer = CustomTopicSerializer(item)
        return Response(serializer.data)

    @swagger_auto_schema(
        responses={200: ExpandedCredentialSerializer(many=True)})
    @action(detail=True, url_path="credential", methods=["get"])
    def list_credentials(self, request, pk=None):
        item = self.get_object()
        queryset = item.credentials
        serializer = ExpandedCredentialSerializer(queryset, many=True)
        return Response(serializer.data)

    @swagger_auto_schema(
        responses={200: ExpandedCredentialSerializer(many=True)})
    @action(detail=True, url_path="credential/active", methods=["get"])
    def list_active_credentials(self, request, pk=None):
        item = self.get_object()
        queryset = item.credentials.filter(revoked=False, inactive=False)
        serializer = ExpandedCredentialSerializer(queryset, many=True)
        return Response(serializer.data)

    @swagger_auto_schema(
        responses={200: ExpandedCredentialSerializer(many=True)})
    @action(detail=True, url_path="credential/historical", methods=["get"])
    def list_historical_credentials(self, request, pk=None):
        item = self.get_object()
        queryset = item.credentials.filter(Q(revoked=True) | Q(inactive=True))
        serializer = ExpandedCredentialSerializer(queryset, many=True)
        return Response(serializer.data)

    @swagger_auto_schema(responses={200: TopicSerializer(many=False)})
    @action(
        detail=False,
        methods=["get"],
        url_path="ident/(?P<type>[^/]+)/(?P<source_id>[^/.]+)",
    )
    def retrieve_by_type(self, request, type=None, source_id=None):
        return self.retrieve(request)

    @swagger_auto_schema(responses={200: CustomTopicSerializer(many=False)})
    @action(
        detail=False,
        methods=["get"],
        url_path="ident/(?P<type>[^/]+)/(?P<source_id>[^/.]+)/formatted",
    )
    def retrieve_by_type_formatted(self, request, type=None, source_id=None):
        return self.retrieve_formatted(request)

    @swagger_auto_schema(
        responses={200: ExpandedCredentialSetSerializer(many=True)})
    @action(detail=True, url_path="credentialset", methods=["get"])
    def list_credential_sets(self, request, pk=None):
        item = self.get_object()
        queryset = item.credential_sets.order_by("first_effective_date").all()
        serializer = ExpandedCredentialSetSerializer(queryset, many=True)
        return Response(serializer.data)

    def get_object(self):
        if self.kwargs.get("pk"):
            return super(TopicViewSet, self).get_object()

        type = self.kwargs.get("type")
        source_id = self.kwargs.get("source_id")
        if not type or not source_id:
            raise Http404()

        queryset = self.filter_queryset(self.get_queryset())
        obj = get_object_or_404(queryset, type=type, source_id=source_id)

        # May raise a permission denied
        self.check_object_permissions(self.request, obj)
        return obj