Source code for smarter.apps.provider.api.v1.views.provider

# pylint: disable=R0801,W0613
"""Customer API views."""

from http import HTTPStatus

from rest_framework.response import Response

from smarter.apps.provider.serializers import (
    ProviderModelSerializer,
    ProviderSerializer,
)
from smarter.lib.django.http.shortcuts import SmarterHttpResponseNotFound
from smarter.lib.drf.views.token_authentication_helpers import (
    SmarterAuthenticatedAPIView,
)


[docs] class ProvidersApiViewSet(SmarterAuthenticatedAPIView): """top-level viewset for Providers list"""
[docs] def get(self, request, *args, **kwargs): """Get all providers.""" serializer = ProviderSerializer(many=True, context={"request": request}) if not serializer.data: return SmarterHttpResponseNotFound("No providers found.") return Response(data=serializer.data, status=HTTPStatus.OK)
[docs] class ProviderApiViewSet(SmarterAuthenticatedAPIView): """top-level viewset for a specific provider"""
[docs] def get(self, request, *args, name: str, **kwargs): """Get a specific provider by name.""" serializer = ProviderSerializer(many=False, context={"request": request}) if not serializer.data: return SmarterHttpResponseNotFound(f"Provider '{name}' not found.") return Response(data=serializer.data, status=HTTPStatus.OK)
[docs] class ProviderModelsApiViewSet(SmarterAuthenticatedAPIView): """top-level viewset for all models for a specific provider"""
[docs] def get(self, request, *args, name: str, **kwargs): """Get all models for a specific provider.""" serializer = ProviderModelSerializer(many=True, context={"request": request}) if not serializer.data: return SmarterHttpResponseNotFound(f"No models found for provider '{name}'.") return Response(data=serializer.data, status=HTTPStatus.OK)
[docs] class ProviderModelApiViewSet(SmarterAuthenticatedAPIView): """top-level viewset for a specific model for a specific provider"""
[docs] def get(self, request, *args, name: str, model_name: str, **kwargs): """Get a specific model for a specific provider.""" serializer = ProviderModelSerializer(many=False, context={"request": request}) if not serializer.data: return SmarterHttpResponseNotFound(f"Model '{model_name}' for provider '{name}' not found.") return Response(data=serializer.data, status=HTTPStatus.OK)