From cbba1f41694a5df1fde9d5c66d9086f38ea6a051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Floure?= Date: Fri, 8 May 2020 10:42:04 +0200 Subject: [PATCH] Add admin bill generation endpoint --- uncloud_pay/serializers.py | 1 + uncloud_pay/views.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/uncloud_pay/serializers.py b/uncloud_pay/serializers.py index a1ea39b..3f91b04 100644 --- a/uncloud_pay/serializers.py +++ b/uncloud_pay/serializers.py @@ -72,6 +72,7 @@ class OrderSerializer(serializers.ModelSerializer): model = Order fields = ['uuid', 'owner', 'description', 'creation_date', 'starting_date', 'ending_date', 'bill', 'recurring_period', 'recurring_price', 'one_time_price', 'replaced_by'] + read_only_fields = ['replaced_by'] ### diff --git a/uncloud_pay/views.py b/uncloud_pay/views.py index 283d04b..1144b49 100644 --- a/uncloud_pay/views.py +++ b/uncloud_pay/views.py @@ -302,6 +302,22 @@ class AdminBillViewSet(BillViewSet): serializer = self.get_serializer(unpaid_bills, many=True) return Response(serializer.data) + @action(detail=False, methods=['post']) + def generate(self, request): + users = get_user_model().objects.all() + + generated_bills = [] + for user in users: + now = timezone.now() + generated_bills = generated_bills + Bill.generate_for( + year=now.year, + month=now.month, + user=user) + + return Response( + map(lambda b: b.reference, generated_bills), + status=status.HTTP_200_OK) + class AdminOrderViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.CreateModelMixin,