Skip to content

Commit

Permalink
[WIP] (backend) Use Response serializer in view..
Browse files Browse the repository at this point in the history
..Order.create()
  • Loading branch information
rlecellier committed Mar 2, 2023
1 parent 884666c commit 69c4d22
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 2 deletions.
15 changes: 15 additions & 0 deletions src/backend/joanie/core/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,21 @@ def create(self, request, *args, **kwargs):
)

# Return the fresh new order with payment_info
print(">>>ID", serializer.data["id"])
return Response(
serializers.OrderCreateResponseSerializer(
{
**serializer.data,
"payment_info__payment_id": payment_info["payment_id"],
"payment_info__provider": payment_info["provider"],
"payment_info__url": payment_info["url"],
# "payment_info__is_paid": payment_info["is_paid"] ,
# "payment_info": payment_info,
# "payment_info": serializers.PaymentSerializer(**payment_info),
}
).data,
status=201,
)
return Response(
{**serializer.data, "payment_info": payment_info},
status=201,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ class OrderCreateBodySerializer(OrderSerializer):
billing_address = AddressSerializer(required=False)

class Meta(OrderSerializer.Meta):

fields = OrderSerializer.Meta.fields + ["billing_address"]
read_only_fields = OrderSerializer.Meta.fields + ["billing_address"]
Original file line number Diff line number Diff line change
@@ -1,14 +1,70 @@
"""Serializers for core.api.OrderViewSet.create Response"""

from rest_framework import serializers
from djmoney.contrib.django_rest_framework import MoneyField

from .model_serializers import OrderSerializer, PaymentSerializer
from joanie.core import models
from .model_serializers import OrderSerializer, PaymentSerializer, EnrollmentSerializer


class OrderCreateResponseSerializer(OrderSerializer):
id = serializers.CharField(required=True)
payment_info = PaymentSerializer(required=False)
id = serializers.CharField(required=True)

class Meta(OrderSerializer.Meta):
fields = OrderSerializer.Meta.fields + ["payment_info"]
read_only_fields = OrderSerializer.Meta.fields + ["payment_info"]

# Copy / Past from OrderSerializer
# id = serializers.CharField(read_only=True)
# total = MoneyField(
# coerce_to_string=False,
# decimal_places=2,
# max_digits=9,
# min_value=0,
# read_only=True,
# )
# enrollments = serializers.SerializerMethodField(read_only=True)
# organization = serializers.SlugRelatedField(read_only=True, slug_field="id")
# product = serializers.SlugRelatedField(read_only=True, slug_field="id")
# main_invoice = serializers.SlugRelatedField(read_only=True, slug_field="reference")
# certificate = serializers.SlugRelatedField(read_only=True, slug_field="id")

# class Meta:
# model = models.Order
# fields = [
# "payment_info",
# "id",
# "certificate",
# "created_on",
# "main_invoice",
# "organization",
# "total",
# "total_currency",
# "enrollments",
# "product",
# "state",
# ]
# read_only_fields = [
# "payment_info",
# "id",
# "certificate",
# "created_on",
# "main_invoice",
# "organization",
# "total",
# "total_currency",
# "enrollments",
# "product",
# "state",
# ]

# def get_enrollments(self, order):
# """
# For the current order, retrieve its related enrollments.
# """
# return EnrollmentSerializer(
# instance=order.get_enrollments(),
# many=True,
# context=self.context,
# ).data

0 comments on commit 69c4d22

Please sign in to comment.