diff --git a/uncloud/uncloud/urls.py b/uncloud/uncloud/urls.py index 341f81a..358e4c7 100644 --- a/uncloud/uncloud/urls.py +++ b/uncloud/uncloud/urls.py @@ -29,6 +29,7 @@ router.register(r'vm/snapshot', vmviews.VMSnapshotProductView, basename='VMSnaps router.register(r'vm/vm', vmviews.VMProductViewSet, basename='vmproduct') # Pay +router.register(r'user', payviews.UserViewSet, basename='user') router.register(r'bill', payviews.BillViewSet, basename='bill') router.register(r'payment', payviews.PaymentViewSet, basename='payment') diff --git a/uncloud/uncloud_api/views.py b/uncloud/uncloud_api/views.py index c90b963..18cc324 100644 --- a/uncloud/uncloud_api/views.py +++ b/uncloud/uncloud_api/views.py @@ -43,9 +43,13 @@ import re # return Response(products) -class UserViewSet(viewsets.ModelViewSet): +class UserViewSet(viewsets.ReadOnlyModelViewSet): serializer_class = UserSerializer permission_classes = [permissions.IsAuthenticated] def get_queryset(self): return self.request.user + + @action(detail=True) + def balance(self, request): + return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/uncloud/uncloud_pay/serializers.py b/uncloud/uncloud_pay/serializers.py index f4fd565..5bb22ec 100644 --- a/uncloud/uncloud_pay/serializers.py +++ b/uncloud/uncloud_pay/serializers.py @@ -1,3 +1,4 @@ +from django.contrib.auth import get_user_model from rest_framework import serializers from .models import Bill, Payment @@ -10,3 +11,11 @@ class PaymentSerializer(serializers.ModelSerializer): class Meta: model = Payment fields = ['owner', 'amount', 'source', 'timestamp'] + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = get_user_model() + fields = ['username', 'email'] + + def get_balance(self, obj): + return 666 diff --git a/uncloud/uncloud_pay/views.py b/uncloud/uncloud_pay/views.py index d824d27..5111f6c 100644 --- a/uncloud/uncloud_pay/views.py +++ b/uncloud/uncloud_pay/views.py @@ -1,9 +1,11 @@ from django.shortcuts import render +from django.contrib.auth import get_user_model from rest_framework import viewsets, permissions, status from rest_framework.response import Response +from rest_framework.decorators import action from .models import Bill, Payment -from .serializers import BillSerializer, PaymentSerializer +from .serializers import BillSerializer, PaymentSerializer, UserSerializer from datetime import datetime ### @@ -38,6 +40,17 @@ class PaymentViewSet(viewsets.ReadOnlyModelViewSet): def get_queryset(self): return Payment.objects.filter(owner=self.request.user) +class UserViewSet(viewsets.ReadOnlyModelViewSet): + serializer_class = UserSerializer + permission_classes = [permissions.IsAuthenticated] + + def get_queryset(self): + return get_user_model().objects.all() + + @action(detail=True) + def balance(self, request): + return Response(status=status.HTTP_204_NO_CONTENT) + ### # Admin views.