Source code for apps.api.views.device_type_view
from rest_framework import status
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
from django.utils import timezone
from apps.api.exceptions import ApiException, ValidationException
from apps.api.serializers.serializers import DeviceTypeSerializer
from apps.core.models.device_type import DeviceType
from apps.api.model_helper import *
[docs]class DeviceTypeViewManagement(APIView):
# permission_classes = (IsAuthenticated,)
[docs] def get(self, request):
device_types = DeviceType.objects.filter(deleted_at__isnull=True)
serializer = DeviceTypeSerializer(device_types, many=True)
return Response(status=status.HTTP_200_OK, data=serializer.data)
[docs] def post(self, request):
device_type = get_deleted_device_type_by_name(request.data['type_name'])
if device_type:
serializer = DeviceTypeSerializer(device_type, data=request.data)
else:
serializer = DeviceTypeSerializer(data=request.data)
if not serializer.is_valid():
raise ValidationException(f"Validation error: {serializer.errors}", status.HTTP_400_BAD_REQUEST)
serializer.save()
return Response(status=status.HTTP_201_CREATED, data=serializer.data)
[docs]class DeviceTypeViewDetail(APIView):
# permission_classes = (IsAuthenticated,)
[docs] def delete(self, request, device_type_id):
device_type = get_device_type(device_type_id)
if check_device_existence(device_type_id):
device_type.soft_delete()
return Response(status=status.HTTP_204_NO_CONTENT)
[docs] def get(self, request, device_type_id):
device_type = get_device_type(device_type_id)
serializer = DeviceTypeSerializer(device_type)
return Response(status=status.HTTP_200_OK, data=serializer.data)
[docs] def put(self, request, device_type_id):
data = request.data
device_type = get_device_type(device_type_id)
serializer = DeviceTypeSerializer(device_type, data=data)
if not serializer.is_valid():
raise ValidationException(f"Validation error: {serializer.errors}", status.HTTP_400_BAD_REQUEST)
serializer.save()
return Response(status=status.HTTP_200_OK, data=serializer.data)