Skip to content

Commit 69c4d22

Browse files
committed
[WIP] (backend) Use Response serializer in view..
..Order.create()
1 parent 884666c commit 69c4d22

File tree

3 files changed

+74
-2
lines changed

3 files changed

+74
-2
lines changed

src/backend/joanie/core/api.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,21 @@ def create(self, request, *args, **kwargs):
258258
)
259259

260260
# Return the fresh new order with payment_info
261+
print(">>>ID", serializer.data["id"])
262+
return Response(
263+
serializers.OrderCreateResponseSerializer(
264+
{
265+
**serializer.data,
266+
"payment_info__payment_id": payment_info["payment_id"],
267+
"payment_info__provider": payment_info["provider"],
268+
"payment_info__url": payment_info["url"],
269+
# "payment_info__is_paid": payment_info["is_paid"] ,
270+
# "payment_info": payment_info,
271+
# "payment_info": serializers.PaymentSerializer(**payment_info),
272+
}
273+
).data,
274+
status=201,
275+
)
261276
return Response(
262277
{**serializer.data, "payment_info": payment_info},
263278
status=201,

src/backend/joanie/core/serializers/order_create_body_serializer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ class OrderCreateBodySerializer(OrderSerializer):
77
billing_address = AddressSerializer(required=False)
88

99
class Meta(OrderSerializer.Meta):
10+
1011
fields = OrderSerializer.Meta.fields + ["billing_address"]
1112
read_only_fields = OrderSerializer.Meta.fields + ["billing_address"]
Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,70 @@
11
"""Serializers for core.api.OrderViewSet.create Response"""
22

33
from rest_framework import serializers
4+
from djmoney.contrib.django_rest_framework import MoneyField
45

5-
from .model_serializers import OrderSerializer, PaymentSerializer
6+
from joanie.core import models
7+
from .model_serializers import OrderSerializer, PaymentSerializer, EnrollmentSerializer
68

79

810
class OrderCreateResponseSerializer(OrderSerializer):
9-
id = serializers.CharField(required=True)
1011
payment_info = PaymentSerializer(required=False)
12+
id = serializers.CharField(required=True)
1113

1214
class Meta(OrderSerializer.Meta):
1315
fields = OrderSerializer.Meta.fields + ["payment_info"]
1416
read_only_fields = OrderSerializer.Meta.fields + ["payment_info"]
17+
18+
# Copy / Past from OrderSerializer
19+
# id = serializers.CharField(read_only=True)
20+
# total = MoneyField(
21+
# coerce_to_string=False,
22+
# decimal_places=2,
23+
# max_digits=9,
24+
# min_value=0,
25+
# read_only=True,
26+
# )
27+
# enrollments = serializers.SerializerMethodField(read_only=True)
28+
# organization = serializers.SlugRelatedField(read_only=True, slug_field="id")
29+
# product = serializers.SlugRelatedField(read_only=True, slug_field="id")
30+
# main_invoice = serializers.SlugRelatedField(read_only=True, slug_field="reference")
31+
# certificate = serializers.SlugRelatedField(read_only=True, slug_field="id")
32+
33+
# class Meta:
34+
# model = models.Order
35+
# fields = [
36+
# "payment_info",
37+
# "id",
38+
# "certificate",
39+
# "created_on",
40+
# "main_invoice",
41+
# "organization",
42+
# "total",
43+
# "total_currency",
44+
# "enrollments",
45+
# "product",
46+
# "state",
47+
# ]
48+
# read_only_fields = [
49+
# "payment_info",
50+
# "id",
51+
# "certificate",
52+
# "created_on",
53+
# "main_invoice",
54+
# "organization",
55+
# "total",
56+
# "total_currency",
57+
# "enrollments",
58+
# "product",
59+
# "state",
60+
# ]
61+
62+
# def get_enrollments(self, order):
63+
# """
64+
# For the current order, retrieve its related enrollments.
65+
# """
66+
# return EnrollmentSerializer(
67+
# instance=order.get_enrollments(),
68+
# many=True,
69+
# context=self.context,
70+
# ).data

0 commit comments

Comments
 (0)