Commit 83f92285 by Chif Gergő

Refactor views to viewsets

parent 4f79bde7
from django.urls import path
from rest_framework.urlpatterns import format_suffix_patterns
from instance import views
from rest_framework import routers
urlpatterns = [
path("instances/", views.InstanceList.as_view()),
path("instances/<int:pk>/", views.InstanceDetail.as_view()),
# path('instances/<int:pk>/action/', views.InstanceAction.as_view())
path("flavors/", views.FlavorListView.as_view()),
]
router = routers.SimpleRouter()
router.register(r'instances', views.InstanceViewSet, basename='instance')
router.register(r'flavors', views.FlavorViewSet, basename='flavor')
urlpatterns = format_suffix_patterns(urlpatterns)
urlpatterns = router.urls
from instance.serializers import InstanceSerializer, FlavorSerializer
from django.http import Http404
from django.conf import settings
from rest_framework.views import APIView
from rest_framework.viewsets import ViewSet
from rest_framework.response import Response
from rest_framework import status
from interface_openstack.implementation.vm.instance import (
......@@ -11,12 +11,19 @@ from template.models import InstanceTemplate
from instance.models import Instance, Flavor, Lease
class InstanceList(APIView):
def get(self, request, format=None):
class InstanceViewSet(ViewSet):
def get_object(self, pk):
try:
return Instance.objects.get(pk=pk)
except Instance.DoesNotExist:
raise Http404
def list(self, request):
instances = Instance.objects.all()
return Response(InstanceSerializer(instances, many=True).data)
def post(self, request, format=None):
def create(self, request):
data = request.data
template = InstanceTemplate.objects.get(pk=data["template"])
flavor = Flavor.objects.get(pk=data["flavor"])
......@@ -37,19 +44,7 @@ class InstanceList(APIView):
)
return Response(newInstance.pk)
class InstanceDetail(APIView):
"""
Retrieve, update or delete a snippet instance.
"""
def get_object(self, pk):
try:
return Instance.objects.get(pk=pk)
except Instance.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
def retrieve(self, request):
instance = self.get_object(pk)
instanceDict = InstanceSerializer(instance).data
......@@ -61,7 +56,7 @@ class InstanceDetail(APIView):
return Response(merged_dict)
def put(self, request, pk, format=None):
def update(self, request, pk, format=None):
instance = self.get_object(pk)
serializer = InstanceSerializer(instance, data=request.data)
if serializer.is_valid():
......@@ -69,22 +64,28 @@ class InstanceDetail(APIView):
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
def destroy(self, request, pk, format=None):
instance = self.get_object(pk)
instance.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
class FlavorListView(APIView):
class FlavorViewSet(ViewSet):
"""
Create, update or delete a flavor.
"""
def get(self, request, format=None):
def get_object(self, pk):
try:
return Flavor.objects.get(pk=pk)
except Flavor.DoesNotExist:
raise Http404
def list(self, request, format=None):
flavors = Flavor.objects.all()
return Response(FlavorSerializer(flavors, many=True).data)
def post(self, request, format=None):
def create(self, request, format=None):
data = request.data
new_flavor = Flavor.create(name=data["name"],
description=data["description"],
......@@ -94,3 +95,14 @@ class FlavorListView(APIView):
priority=data["priority"])
return Response(new_flavor.pk)
def update(self, request, pk):
return Response(status=status.HTTP_400_BAD_REQUEST)
def partial_update(self, request, pk):
return Response(status=status.HTTP_400_BAD_REQUEST)
def destroy(self, request, pk):
flavor = self.get_object(pk)
flavor.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
Subproject commit 7b2647531e54da62fcf1db4c61a5e0530e977da4
Subproject commit e01d873c78ac17fed0438936f979de3cbaca6a5e
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment