Skip to content

Commit 34c0d4d

Browse files
committed
🐛(backend) manage is_main default value in serializers
DRF verson 3.15 propagate 'default' from model field to serializer. encode/django-rest-framework#9030
1 parent ef02a89 commit 34c0d4d

File tree

5 files changed

+28
-0
lines changed

5 files changed

+28
-0
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import markdown
99
from drf_spectacular.utils import extend_schema_field
1010
from rest_framework import exceptions, serializers
11+
from rest_framework.fields import empty
1112
from rest_framework.generics import get_object_or_404
1213

1314
from joanie.core import enums, models
@@ -85,6 +86,15 @@ class Meta:
8586
"id",
8687
]
8788

89+
def run_validation(self, data=empty):
90+
"""
91+
Ignore is_main if not present in the data
92+
"""
93+
validated_data = super().run_validation(data)
94+
if "is_main" not in data:
95+
del validated_data["is_main"]
96+
return validated_data
97+
8898

8999
class CourseLightSerializer(AbilitiesModelSerializer):
90100
"""

src/backend/joanie/core/utils/contract_definition.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"first_name": _("<ORGANIZATION_FIRST_NAME>"),
1818
"postcode": _("<ORGANIZATION_ADDRESS_POSTCODE>"),
1919
"title": _("<ORGANIZATION_ADDRESS_TITLE>"),
20+
"is_main": True,
2021
}
2122

2223
# Student section for generating contract definition
@@ -28,6 +29,7 @@
2829
"first_name": _("<STUDENT_FIRST_NAME>"),
2930
"postcode": _("<STUDENT_ADDRESS_POSTCODE>"),
3031
"title": _("<STUDENT_ADDRESS_TITLE>"),
32+
"is_main": True,
3133
}
3234

3335

src/backend/joanie/payment/serializers.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Serializers for api."""
22

33
from rest_framework import serializers
4+
from rest_framework.fields import empty
45

56
from joanie.payment import models
67

@@ -30,3 +31,12 @@ class Meta:
3031
"expiration_year",
3132
"last_numbers",
3233
]
34+
35+
def run_validation(self, data=empty):
36+
"""
37+
Ignore is_main if not present in the data
38+
"""
39+
validated_data = super().run_validation(data)
40+
if "is_main" not in data:
41+
del validated_data["is_main"]
42+
return validated_data

src/backend/joanie/tests/core/test_api_address.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,7 @@ def test_api_address_create_update(self):
439439
address = models.Address.objects.get()
440440
self.assertEqual(address.owner, owner)
441441
self.assertEqual(address.city, payload["city"])
442+
self.assertTrue(address.is_main)
442443

443444
# finally update address
444445
payload["title"] = "Office"
@@ -454,6 +455,7 @@ def test_api_address_create_update(self):
454455
self.assertEqual(address.title, payload["title"])
455456
self.assertEqual(address.owner, owner)
456457
self.assertEqual(address.city, payload["city"])
458+
self.assertTrue(address.is_main)
457459

458460
def test_api_address_create_update_read_only_fields(self):
459461
"""

src/backend/joanie/tests/core/test_utils_contract_definition_generate_document_context.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ def test_utils_contract_definition_generate_document_context_without_order(self)
196196
"first_name": "<STUDENT_FIRST_NAME>",
197197
"postcode": "<STUDENT_ADDRESS_POSTCODE>",
198198
"title": "<STUDENT_ADDRESS_TITLE>",
199+
"is_main": True,
199200
},
200201
"email": str(user.email),
201202
"phone_number": str(user.phone_number),
@@ -209,6 +210,7 @@ def test_utils_contract_definition_generate_document_context_without_order(self)
209210
"first_name": "<ORGANIZATION_FIRST_NAME>",
210211
"postcode": "<ORGANIZATION_ADDRESS_POSTCODE>",
211212
"title": "<ORGANIZATION_ADDRESS_TITLE>",
213+
"is_main": True,
212214
},
213215
"logo": organization_fallback_logo,
214216
"name": "<ORGANIZATION_NAME>",
@@ -273,6 +275,7 @@ def test_utils_contract_definition_generate_document_context_default_placeholder
273275
"first_name": "<STUDENT_FIRST_NAME>",
274276
"postcode": "<STUDENT_ADDRESS_POSTCODE>",
275277
"title": "<STUDENT_ADDRESS_TITLE>",
278+
"is_main": True,
276279
},
277280
"email": "<STUDENT_EMAIL>",
278281
"phone_number": "<STUDENT_PHONE_NUMBER>",
@@ -286,6 +289,7 @@ def test_utils_contract_definition_generate_document_context_default_placeholder
286289
"first_name": "<ORGANIZATION_FIRST_NAME>",
287290
"postcode": "<ORGANIZATION_ADDRESS_POSTCODE>",
288291
"title": "<ORGANIZATION_ADDRESS_TITLE>",
292+
"is_main": True,
289293
},
290294
"logo": organization_fallback_logo,
291295
"name": "<ORGANIZATION_NAME>",

0 commit comments

Comments
 (0)