Skip to content

Commit 1856245

Browse files
committed
Send given name and family name separate
1 parent b17af1e commit 1856245

File tree

13 files changed

+127
-64
lines changed

13 files changed

+127
-64
lines changed

backend/api/billing/types.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ class BillingAddress:
66
id: strawberry.ID
77
is_business: bool
88
company_name: str
9-
user_name: str
9+
user_given_name: str
10+
user_family_name: str
1011
zip_code: str
1112
city: str
1213
address: str
@@ -22,7 +23,8 @@ def from_django_model(cls, instance):
2223
id=instance.id,
2324
is_business=instance.is_business,
2425
company_name=instance.company_name,
25-
user_name=instance.user_name,
26+
user_given_name=instance.user_given_name,
27+
user_family_name=instance.user_family_name,
2628
zip_code=instance.zip_code,
2729
city=instance.city,
2830
address=instance.address,

backend/api/orders/mutations.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ def create_order(
4343
is_business=input.invoice_information.is_business,
4444
defaults={
4545
"company_name": input.invoice_information.company,
46-
"user_name": input.invoice_information.name,
46+
"user_given_name": input.invoice_information.given_name,
47+
"user_family_name": input.invoice_information.family_name,
4748
"zip_code": input.invoice_information.zipcode,
4849
"city": input.invoice_information.city,
4950
"address": input.invoice_information.street,

backend/api/tests/schema/test_create_order.py

+58-29
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ def _create_order(graphql_client, code, input):
2222
errors {
2323
nonFieldErrors
2424
invoiceInformation {
25-
name
25+
givenName
26+
familyName
2627
street
2728
zipcode
2829
fiscalCode
@@ -79,7 +80,8 @@ def test_cannot_create_order_unlogged(graphql_client):
7980
"invoiceInformation": {
8081
"isBusiness": False,
8182
"company": "",
82-
"name": "Patrick",
83+
"givenName": "Patrick",
84+
"familyName": "Arminio",
8385
"street": "street",
8486
"zipcode": "92100",
8587
"city": "Avellino",
@@ -133,7 +135,8 @@ def test_calls_create_order(graphql_client, user, mocker, requests_mock, pretix_
133135
"invoiceInformation": {
134136
"isBusiness": False,
135137
"company": "",
136-
"name": "Patrick",
138+
"givenName": "Patrick",
139+
"familyName": "Arminio",
137140
"street": "street",
138141
"zipcode": "92100",
139142
"city": "Avellino",
@@ -154,7 +157,8 @@ def test_calls_create_order(graphql_client, user, mocker, requests_mock, pretix_
154157

155158
billing_address = BillingAddress.objects.get(user=user)
156159

157-
assert billing_address.user_name == "Patrick"
160+
assert billing_address.user_given_name == "Patrick"
161+
assert billing_address.user_family_name == "Arminio"
158162
assert billing_address.company_name == ""
159163
assert not billing_address.is_business
160164
assert billing_address.address == "street"
@@ -209,7 +213,8 @@ def test_calls_create_order_doesnt_require_attendee_data_for_non_admission_produ
209213
"invoiceInformation": {
210214
"isBusiness": False,
211215
"company": "",
212-
"name": "Patrick",
216+
"givenName": "Patrick",
217+
"familyName": "Arminio",
213218
"street": "street",
214219
"zipcode": "92100",
215220
"city": "Avellino",
@@ -230,7 +235,8 @@ def test_calls_create_order_doesnt_require_attendee_data_for_non_admission_produ
230235

231236
billing_address = BillingAddress.objects.get(user=user)
232237

233-
assert billing_address.user_name == "Patrick"
238+
assert billing_address.user_given_name == "Patrick"
239+
assert billing_address.user_family_name == "Arminio"
234240
assert billing_address.company_name == ""
235241
assert not billing_address.is_business
236242
assert billing_address.address == "street"
@@ -287,7 +293,8 @@ def test_handles_payment_url_set_to_none(
287293
"invoiceInformation": {
288294
"isBusiness": False,
289295
"company": "",
290-
"name": "Patrick",
296+
"givenName": "Patrick",
297+
"familyName": "Arminio",
291298
"street": "street",
292299
"zipcode": "92100",
293300
"city": "Avellino",
@@ -343,7 +350,8 @@ def test_handles_errors(graphql_client, user, mocker, requests_mock, pretix_item
343350
"invoiceInformation": {
344351
"isBusiness": False,
345352
"company": "",
346-
"name": "Patrick",
353+
"givenName": "Patrick",
354+
"familyName": "Arminio",
347355
"street": "street",
348356
"zipcode": "92100",
349357
"city": "Avellino",
@@ -383,7 +391,8 @@ def test_invoice_validation_fails_without_required_field_in_country_italy(
383391
data = {
384392
"isBusiness": False,
385393
"company": "",
386-
"name": "Patrick",
394+
"givenName": "Patrick",
395+
"familyName": "Arminio",
387396
"street": "street",
388397
"zipcode": "92100",
389398
"city": "Avellino",
@@ -430,7 +439,8 @@ def test_invoice_validation_fails_without_required_field_in_country_italy(
430439

431440
@override_settings(FRONTEND_URL="http://test.it")
432441
@pytest.mark.parametrize(
433-
"field_to_delete", ["name", "street", "zipcode", "city", "country"]
442+
"field_to_delete",
443+
["givenName", "familyName", "street", "zipcode", "city", "country"],
434444
)
435445
def test_invoice_validation_fails_with_missing_required_fields(
436446
graphql_client, user, mocker, field_to_delete, requests_mock, pretix_items
@@ -449,7 +459,8 @@ def test_invoice_validation_fails_with_missing_required_fields(
449459
data = {
450460
"isBusiness": False,
451461
"company": "",
452-
"name": "Patrick",
462+
"givenName": "Patrick",
463+
"familyName": "Arminio",
453464
"street": "street",
454465
"zipcode": "92100",
455466
"city": "Avellino",
@@ -533,7 +544,8 @@ def test_fiscal_code_not_required_for_non_it_orders(
533544
"invoiceInformation": {
534545
"isBusiness": False,
535546
"company": "",
536-
"name": "Patrick",
547+
"givenName": "Patrick",
548+
"familyName": "Arminio",
537549
"street": "street",
538550
"zipcode": "92100",
539551
"city": "Avellino",
@@ -590,7 +602,8 @@ def test_invoice_validation_fails_with_invalid_fiscal_code_in_country_italy(
590602
"invoiceInformation": {
591603
"isBusiness": False,
592604
"company": "",
593-
"name": "Patrick",
605+
"givenName": "Patrick",
606+
"familyName": "Arminio",
594607
"street": "street",
595608
"zipcode": "92100",
596609
"city": "Avellino",
@@ -650,7 +663,8 @@ def test_invoice_validation_checks_pec_email_if_provided(
650663
"invoiceInformation": {
651664
"isBusiness": False,
652665
"company": "",
653-
"name": "Patrick",
666+
"givenName": "Patrick",
667+
"familyName": "Arminio",
654668
"street": "street",
655669
"zipcode": "92100",
656670
"city": "Avellino",
@@ -711,7 +725,8 @@ def test_invoice_validation_fails_with_empty_vat_for_businesses(
711725
"invoiceInformation": {
712726
"isBusiness": True,
713727
"company": "business",
714-
"name": "Patrick",
728+
"givenName": "Patrick",
729+
"familyName": "Arminio",
715730
"street": "street",
716731
"zipcode": "92100",
717732
"city": "Avellino",
@@ -771,7 +786,8 @@ def test_invoice_validation_fails_with_empty_business_name_for_businesses(
771786
"invoiceInformation": {
772787
"isBusiness": True,
773788
"company": "",
774-
"name": "Patrick",
789+
"givenName": "Patrick",
790+
"familyName": "Arminio",
775791
"street": "street",
776792
"zipcode": "92100",
777793
"city": "Avellino",
@@ -831,7 +847,8 @@ def test_invoice_validation_fails_with_invalid_country_code(
831847
"invoiceInformation": {
832848
"isBusiness": True,
833849
"company": "name",
834-
"name": "Patrick",
850+
"givenName": "Patrick",
851+
"familyName": "Arminio",
835852
"street": "street",
836853
"zipcode": "92100",
837854
"city": "Avellino",
@@ -891,7 +908,8 @@ def test_invoice_validation_fails_when_italian_business_and_no_sdi(
891908
"invoiceInformation": {
892909
"isBusiness": True,
893910
"company": "LTD",
894-
"name": "Patrick",
911+
"givenName": "Patrick",
912+
"familyName": "Arminio",
895913
"street": "street",
896914
"zipcode": "92100",
897915
"city": "Avellino",
@@ -952,7 +970,8 @@ def test_invoice_validation_fails_when_italian_business_with_invalid_sdi(
952970
"invoiceInformation": {
953971
"isBusiness": True,
954972
"company": "LTD",
955-
"name": "Patrick",
973+
"givenName": "Patrick",
974+
"familyName": "Arminio",
956975
"street": "street",
957976
"zipcode": "92100",
958977
"city": "Avellino",
@@ -1013,7 +1032,8 @@ def test_invoice_validation_fails_when_italian_zipcode_is_invalid(
10131032
"invoiceInformation": {
10141033
"isBusiness": True,
10151034
"company": "LTD",
1016-
"name": "Patrick",
1035+
"givenName": "Patrick",
1036+
"familyName": "Arminio",
10171037
"street": "street",
10181038
"zipcode": "921",
10191039
"city": "Avellino",
@@ -1074,7 +1094,8 @@ def test_order_creation_fails_if_attendee_name_is_empty(
10741094
"invoiceInformation": {
10751095
"isBusiness": False,
10761096
"company": "LTD",
1077-
"name": "Patrick",
1097+
"givenName": "Patrick",
1098+
"familyName": "Arminio",
10781099
"street": "street",
10791100
"zipcode": "921",
10801101
"city": "Avellino",
@@ -1135,7 +1156,8 @@ def test_order_creation_fails_if_attendee_email_is_empty(
11351156
"invoiceInformation": {
11361157
"isBusiness": False,
11371158
"company": "LTD",
1138-
"name": "Patrick",
1159+
"givenName": "Patrick",
1160+
"familyName": "Arminio",
11391161
"street": "street",
11401162
"zipcode": "921",
11411163
"city": "Avellino",
@@ -1196,7 +1218,8 @@ def test_order_creation_fails_if_attendee_email_is_invalid(
11961218
"invoiceInformation": {
11971219
"isBusiness": False,
11981220
"company": "LTD",
1199-
"name": "Patrick",
1221+
"givenName": "Patrick",
1222+
"familyName": "Arminio",
12001223
"street": "street",
12011224
"zipcode": "921",
12021225
"city": "Avellino",
@@ -1257,7 +1280,8 @@ def test_invoice_validation_works_when_not_italian_and_no_sdi(
12571280
"invoiceInformation": {
12581281
"isBusiness": True,
12591282
"company": "LTD",
1260-
"name": "Patrick",
1283+
"givenName": "Patrick",
1284+
"familyName": "Arminio",
12611285
"street": "street",
12621286
"zipcode": "92100",
12631287
"city": "Avellino",
@@ -1279,7 +1303,8 @@ def test_invoice_validation_works_when_not_italian_and_no_sdi(
12791303

12801304
billing_address = BillingAddress.objects.get(user=user)
12811305

1282-
assert billing_address.user_name == "Patrick"
1306+
assert billing_address.user_given_name == "Patrick"
1307+
assert billing_address.user_family_name == "Arminio"
12831308
assert billing_address.company_name == "LTD"
12841309
assert billing_address.is_business
12851310

@@ -1329,7 +1354,8 @@ def test_create_order_billing_address_stores_both_non_and_business(
13291354
"invoiceInformation": {
13301355
"isBusiness": True,
13311356
"company": "LTD",
1332-
"name": "Patrick",
1357+
"givenName": "Patrick",
1358+
"familyName": "Arminio",
13331359
"street": "street",
13341360
"zipcode": "92100",
13351361
"city": "Avellino",
@@ -1357,7 +1383,8 @@ def test_create_order_billing_address_stores_both_non_and_business(
13571383

13581384
billing_address = billing_addresses.get(is_business=True)
13591385

1360-
assert billing_address.user_name == "Patrick"
1386+
assert billing_address.user_given_name == "Patrick"
1387+
assert billing_address.user_family_name == "Arminio"
13611388
assert billing_address.company_name == "LTD"
13621389
assert billing_address.is_business
13631390

@@ -1407,7 +1434,8 @@ def test_create_order_updates_billing_address(
14071434
"invoiceInformation": {
14081435
"isBusiness": True,
14091436
"company": "LTD",
1410-
"name": "Patrick",
1437+
"givenName": "Patrick",
1438+
"familyName": "Arminio",
14111439
"street": "street",
14121440
"zipcode": "92100",
14131441
"city": "Avellino",
@@ -1430,6 +1458,7 @@ def test_create_order_updates_billing_address(
14301458
billing_address = BillingAddress.objects.get(user=user)
14311459

14321460
assert billing_address.id == existing_billing_address.id
1433-
assert billing_address.user_name == "Patrick"
1461+
assert billing_address.user_given_name == "Patrick"
1462+
assert billing_address.user_family_name == "Arminio"
14341463
assert billing_address.company_name == "LTD"
14351464
assert billing_address.is_business

backend/api/users/tests/test_billing_addresses.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
from organizers.tests.factories import OrganizerFactory
1+
import pytest
2+
23
from billing.tests.factories import BillingAddressFactory
34
from conferences.tests.factories import ConferenceFactory
4-
import pytest
5+
from organizers.tests.factories import OrganizerFactory
56

67
pytestmark = pytest.mark.django_db
78

@@ -14,7 +15,8 @@ def _query_billing_addresses(graphql_client, code):
1415
id
1516
isBusiness
1617
companyName
17-
userName
18+
userGivenName
19+
userFamilyName
1820
zipCode
1921
city
2022
address

backend/billing/models.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ class BillingAddress(TimeStampedModel):
2323
)
2424
is_business = models.BooleanField(_("is business"))
2525
company_name = models.TextField(_("company name"), blank=True)
26-
user_name = models.TextField(_("user name"))
26+
# TODO: delete this in future
27+
user_name = models.TextField(_("user name"), default="", blank=True)
28+
user_given_name = models.TextField(_("user given name"))
29+
user_family_name = models.TextField(_("user family name"))
2730
zip_code = models.TextField(_("zip code"))
2831
city = models.TextField(_("city"))
2932
address = models.TextField(_("address"))

backend/pretix/__init__.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,8 @@ def get_quotas(conference: Conference) -> Dict[str, Quota]:
248248
@strawberry.type
249249
class InvoiceInformationErrors:
250250
company: list[str] = strawberry.field(default_factory=list)
251-
name: list[str] = strawberry.field(default_factory=list)
251+
given_name: list[str] = strawberry.field(default_factory=list)
252+
family_name: list[str] = strawberry.field(default_factory=list)
252253
street: list[str] = strawberry.field(default_factory=list)
253254
zipcode: list[str] = strawberry.field(default_factory=list)
254255
city: list[str] = strawberry.field(default_factory=list)
@@ -316,7 +317,8 @@ def validate(
316317
class InvoiceInformation:
317318
is_business: bool
318319
company: Optional[str]
319-
name: str
320+
given_name: str
321+
family_name: str
320322
street: str
321323
zipcode: str
322324
city: str
@@ -328,7 +330,8 @@ class InvoiceInformation:
328330

329331
def validate(self, errors: CreateOrderErrors) -> CreateOrderErrors:
330332
required_fields = [
331-
"name",
333+
"given_name",
334+
"family_name",
332335
"street",
333336
"zipcode",
334337
"city",
@@ -524,7 +527,10 @@ def create_order(conference: Conference, order_data: CreateOrderInput) -> Order:
524527
"invoice_address": {
525528
"is_business": order_data.invoice_information.is_business,
526529
"company": order_data.invoice_information.company,
527-
"name_parts": {"full_name": order_data.invoice_information.name},
530+
"name_parts": {
531+
"given_name": order_data.invoice_information.given_name,
532+
"family_name": order_data.invoice_information.family_name,
533+
},
528534
"street": order_data.invoice_information.street,
529535
"zipcode": order_data.invoice_information.zipcode,
530536
"city": order_data.invoice_information.city,

0 commit comments

Comments
 (0)