from django.shortcuts import render from django.contrib.auth import get_user_model from django.contrib.auth.models import Group from rest_framework import viewsets, permissions, generics from .serializers import UserSerializer, GroupSerializer from rest_framework.views import APIView from rest_framework.response import Response class CreditCardViewSet(viewsets.ModelViewSet): """ API endpoint that allows credit cards to be listed """ queryset = get_user_model().objects.all().order_by('-date_joined') serializer_class = UserSerializer permission_classes = [permissions.IsAuthenticated] class UserViewSet(viewsets.ModelViewSet): """ API endpoint that allows users to be viewed or edited. """ queryset = get_user_model().objects.all().order_by('-date_joined') serializer_class = UserSerializer permission_classes = [permissions.IsAuthenticated] class GroupViewSet(viewsets.ModelViewSet): """ API endpoint that allows groups to be viewed or edited. """ queryset = Group.objects.all() serializer_class = GroupSerializer permission_classes = [permissions.IsAuthenticated] class GroupViewSet(viewsets.ModelViewSet): """ API endpoint that allows groups to be viewed or edited. """ queryset = Group.objects.all() serializer_class = GroupSerializer permission_classes = [permissions.IsAuthenticated] # POST /vm/snapshot/ vmuuid=... => create snapshot, returns snapshot uuid # GET /vm/snapshot => list # DEL /vm/snapshot/ => delete # create-list -> get, post => ListCreateAPIView # del on other! class VMSnapshotView(generics.ListCreateAPIView): #lookup_field = 'uuid' permission_classes = [permissions.IsAuthenticated] import inspect import sys import re # Next: create /order/ urls # Next: strip off "Product" at the end class ProductsView(APIView): def get(self, request, format=None): clsmembers = inspect.getmembers(sys.modules['uncloud_api.models'], inspect.isclass) products = [] for name, c in clsmembers: # Include everything that ends in Product, but not Product itself m = re.match(r'(?P.+)Product$', name) if m: products.append({ 'name': m.group('pname'), 'description': c.description, 'recurring_period': c.recurring_period, 'pricing_model': c.pricing_model() } ) return Response(products)