Skip to content

Commit 11c11cd

Browse files
committed
use types
1 parent 8410b60 commit 11c11cd

File tree

5 files changed

+49
-24
lines changed

5 files changed

+49
-24
lines changed

backend/api/types.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,3 +141,8 @@ def paginate_list(
141141
),
142142
items=items,
143143
)
144+
145+
146+
@strawberry.type
147+
class NotFound:
148+
message: str = "Not found"

backend/api/visa/mutations.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
from typing import Annotated
12
from api.context import Context
3+
from api.types import NotFound
24
from custom_admin.audit import create_change_admin_log_entry
35
from visa.models import InvitationLetterDocument as InvitationLetterDocumentModel
46
from api.visa.permissions import CanEditInvitationLetterDocument
@@ -27,19 +29,30 @@ class UpdateInvitationLetterDocumentInput:
2729
dynamic_document: UpdateInvitationLetterDocumentStructureInput
2830

2931

32+
@strawberry.type
33+
class InvitationLetterNotEditable:
34+
message: str = "Invitation letter document is not editable"
35+
36+
37+
UpdateInvitationLetterDocumentResult = Annotated[
38+
InvitationLetterDocument | InvitationLetterNotEditable | NotFound,
39+
strawberry.union(name="UpdateInvitationLetterDocumentResult"),
40+
]
41+
42+
3043
@strawberry.field(permission_classes=[CanEditInvitationLetterDocument])
3144
def update_invitation_letter_document(
3245
info: strawberry.Info[Context], input: UpdateInvitationLetterDocumentInput
33-
) -> InvitationLetterDocument:
46+
) -> UpdateInvitationLetterDocumentResult:
3447
invitation_letter_document = InvitationLetterDocumentModel.objects.filter(
35-
id=input.id
48+
id=input.id,
3649
).first()
3750

3851
if not invitation_letter_document:
39-
raise ValueError("Invitation letter document not found")
52+
return NotFound()
4053

4154
if invitation_letter_document.document:
42-
raise ValueError("Invitation letter document has a file attached")
55+
return InvitationLetterNotEditable()
4356

4457
invitation_letter_document.dynamic_document = strawberry.asdict(
4558
input.dynamic_document

backend/api/visa/tests/mutations/test_update_invitation_letter_document.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@ def _update_invitation_letter_document(client, **input):
99
return client.query(
1010
"""mutation UpdateInvitationLetterDocument($input: UpdateInvitationLetterDocumentInput!) {
1111
updateInvitationLetterDocument(input: $input) {
12-
id
13-
dynamicDocument {
14-
header
15-
footer
16-
pages {
17-
id
18-
title
19-
content
12+
__typename
13+
... on InvitationLetterDocument {
14+
id
15+
dynamicDocument {
16+
header
17+
footer
18+
pages {
19+
id
20+
title
21+
content
22+
}
2023
}
2124
}
2225
}
@@ -114,8 +117,8 @@ def test_cannot_update_invitation_letter_document_with_static_doc(
114117
)
115118

116119
assert (
117-
response["errors"][0]["message"]
118-
== "Invitation letter document has a file attached"
120+
response["data"]["updateInvitationLetterDocument"]["__typename"]
121+
== "InvitationLetterNotEditable"
119122
)
120123
document.refresh_from_db()
121124
assert document.dynamic_document is None
@@ -159,7 +162,9 @@ def test_update_non_existent_invitation_letter_document(
159162
},
160163
)
161164

162-
assert response["errors"][0]["message"] == "Invitation letter document not found"
165+
assert (
166+
response["data"]["updateInvitationLetterDocument"]["__typename"] == "NotFound"
167+
)
163168
document.refresh_from_db()
164169
assert document.dynamic_document == {
165170
"header": "header",

backend/custom_admin/src/components/invitation-letter-document-builder/update-invitation-letter-document.graphql

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@ mutation UpdateInvitationLetterDocument(
22
$input: UpdateInvitationLetterDocumentInput!
33
) {
44
updateInvitationLetterDocument(input: $input) {
5-
id
6-
dynamicDocument {
7-
header
8-
footer
9-
pages {
10-
id
11-
title
12-
content
5+
... on InvitationLetterDocument {
6+
id
7+
dynamicDocument {
8+
header
9+
footer
10+
pages {
11+
id
12+
title
13+
content
14+
}
1315
}
1416
}
1517
}

infrastructure/applications/pretix/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ resource "aws_ecs_service" "pretix" {
191191
name = "pretix"
192192
cluster = var.cluster_id
193193
task_definition = aws_ecs_task_definition.pretix.arn
194-
desired_count = 1
194+
desired_count = local.is_prod ? 1 : 0
195195
deployment_minimum_healthy_percent = 100
196196
deployment_maximum_percent = 200
197197
}

0 commit comments

Comments
 (0)