Skip to content

Commit 2bd739a

Browse files
committed
🗑️ [#3283] Make FormDefinitionSerializer.name read only
the name is set via translations
1 parent 51f9713 commit 2bd739a

File tree

8 files changed

+43
-10
lines changed

8 files changed

+43
-10
lines changed

CHANGELOG.rst

+10
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22
Changelog
33
=========
44

5+
3.0.0 (TBD)
6+
===========
7+
8+
Major release.
9+
10+
Deprecations:
11+
12+
* ``FormDefinition.name`` has been made read only, because this name is set via translations.
13+
This should not impact any Form imports that already have translations in them
14+
515
2.8.1 (2024-10-29)
616
==================
717

src/openapi.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -7893,7 +7893,7 @@ components:
78937893
format: uuid
78947894
name:
78957895
type: string
7896-
maxLength: 50
7896+
readOnly: true
78977897
internalName:
78987898
type: string
78997899
description: internal name for management purposes
@@ -7944,7 +7944,7 @@ components:
79447944
format: uuid
79457945
name:
79467946
type: string
7947-
maxLength: 50
7947+
readOnly: true
79487948
internalName:
79497949
type: string
79507950
description: internal name for management purposes
@@ -9506,7 +9506,7 @@ components:
95069506
format: uuid
95079507
name:
95089508
type: string
9509-
maxLength: 50
9509+
readOnly: true
95109510
internalName:
95119511
type: string
95129512
description: internal name for management purposes

src/openforms/forms/api/serializers/form_definition.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,7 @@ class Meta:
114114
"view_name": "api:formdefinition-detail",
115115
"lookup_field": "uuid",
116116
},
117-
# TODO: enable this in v3, deprecate writing this field
118-
# "name": {"read_only": True}, # writing is done via the `translations` field
117+
"name": {"read_only": True}, # writing is done via the `translations` field
119118
"slug": {
120119
"required": False,
121120
},

src/openforms/forms/tests/admin/test_form.py

+4
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,10 @@ def test_form_admin_import_feedback_messages(self):
281281
}
282282
]
283283
},
284+
"translations": {
285+
"en": {"name": "testform"},
286+
"nl": {"name": "testformulier"},
287+
},
284288
}
285289
]
286290
).encode("utf-8")

src/openforms/forms/tests/exports/formDefinitions.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
"internal_name": "Test Definition Internal 1",
1313
"slug": "test-definition-1",
1414
"url": "http://testserver/api/v2/form-definitions/f0dad93b-333b-49af-868b-a6bcb94fa1b8",
15-
"uuid": "f0dad93b-333b-49af-868b-a6bcb94fa1b8"
15+
"uuid": "f0dad93b-333b-49af-868b-a6bcb94fa1b8",
16+
"translations": {
17+
"en": {"name": "Test Definition 1"},
18+
"nl": {"name": "Test Definitie 1"}
19+
}
1620
}
1721
]

src/openforms/forms/tests/test_api_form_versions.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import datetime
22

33
from django.urls import reverse
4+
from django.utils import translation
45

56
from freezegun import freeze_time
67
from rest_framework import status
@@ -191,7 +192,9 @@ def test_restore_version(self):
191192
form_step = form_steps.get()
192193
restored_form_definition = form_step.form_definition
193194

194-
self.assertEqual("Test Definition 1", restored_form_definition.name)
195+
with translation.override("en"):
196+
self.assertEqual("Test Definition 1", restored_form_definition.name)
197+
self.assertEqual("Test Definitie 1", restored_form_definition.name_nl)
195198
self.assertEqual(
196199
"Test Definition Internal 1", restored_form_definition.internal_name
197200
)

src/openforms/forms/tests/test_api_formdefinition.py

+12-2
Original file line numberDiff line numberDiff line change
@@ -156,14 +156,19 @@ def test_update(self):
156156
],
157157
},
158158
"login_required": True,
159+
"translations": {
160+
"en": {"name": "Updated name"},
161+
"nl": {"name": "Bijgewerkte naam"},
162+
},
159163
},
160164
)
161165

162166
self.assertEqual(response.status_code, status.HTTP_200_OK)
163167

164168
definition.refresh_from_db()
165169

166-
self.assertEqual("Updated name", definition.name)
170+
self.assertEqual("Bijgewerkte naam", definition.name)
171+
self.assertEqual("Updated name", definition.name_en)
167172
self.assertEqual("updated-slug", definition.slug)
168173
self.assertEqual(True, definition.login_required)
169174
self.assertIn(
@@ -217,14 +222,19 @@ def test_create(self):
217222
}
218223
],
219224
},
225+
"translations": {
226+
"en": {"name": "Name"},
227+
"nl": {"name": "Naam"},
228+
},
220229
},
221230
)
222231

223232
self.assertEqual(status.HTTP_201_CREATED, response.status_code)
224233

225234
definition = FormDefinition.objects.get()
226235

227-
self.assertEqual("Name", definition.name)
236+
self.assertEqual("Naam", definition.name)
237+
self.assertEqual("Name", definition.name_en)
228238
self.assertEqual("a-slug", definition.slug)
229239
self.assertEqual(
230240
[

src/openforms/forms/tests/test_restore_version.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import json
44

55
from django.test import TestCase
6+
from django.utils import translation
67
from django.utils.translation import gettext as _
78

89
from freezegun import freeze_time
@@ -63,7 +64,9 @@ def test_restoring_version(self):
6364

6465
restored_form_definition = form_steps.get().form_definition
6566

66-
self.assertEqual("Test Definition 1", restored_form_definition.name)
67+
with translation.override("en"):
68+
self.assertEqual("Test Definition 1", restored_form_definition.name)
69+
self.assertEqual("Test Definitie 1", restored_form_definition.name_nl)
6770
self.assertEqual(
6871
"Test Definition Internal 1", restored_form_definition.internal_name
6972
)

0 commit comments

Comments
 (0)