Skip to content

Commit ebef919

Browse files
authored
Merge pull request #273 from maykinmedia/feature/226-partij-betrokkene-optional
🐛[#226] make digitalAdres betrokkene optional in admin
2 parents 61d8c5e + 0aa690b commit ebef919

File tree

4 files changed

+73
-0
lines changed

4 files changed

+73
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Generated by Django 4.2.15 on 2024-10-22 13:43
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
("klantinteracties", "0020_alter_digitaaladres_soort_digitaal_adres"),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name="digitaaladres",
16+
name="betrokkene",
17+
field=models.ForeignKey(
18+
blank=True,
19+
help_text="'Digitaal Adres' had 'Betrokkene bij klantcontact'",
20+
null=True,
21+
on_delete=django.db.models.deletion.CASCADE,
22+
to="klantinteracties.betrokkene",
23+
verbose_name="betrokkene",
24+
),
25+
),
26+
]

src/openklant/components/klantinteracties/models/digitaal_adres.py

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class DigitaalAdres(APIMixin, models.Model):
2828
on_delete=models.CASCADE,
2929
verbose_name=_("betrokkene"),
3030
help_text=_("'Digitaal Adres' had 'Betrokkene bij klantcontact'"),
31+
blank=True,
3132
null=True,
3233
)
3334
soort_digitaal_adres = models.CharField(

src/openklant/components/klantinteracties/tests/test_admin.py

+36
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@
55
from django.urls import reverse
66

77
from django_webtest import WebTest
8+
from maykin_2fa.test import disable_admin_mfa
89
from webtest import Form, TestResponse
910

1011
from openklant.accounts.tests.factories import SuperUserFactory
12+
from openklant.components.klantinteracties.models import DigitaalAdres
1113
from openklant.components.klantinteracties.models.tests.factories.digitaal_adres import (
1214
DigitaalAdresFactory,
1315
)
1416
from openklant.components.klantinteracties.models.tests.factories.partijen import (
17+
PartijFactory,
1518
PersoonFactory,
1619
)
20+
from openklant.utils.tests.webtest import add_dynamic_field
1721

1822

1923
class PartijAdminTests(WebTest):
@@ -90,3 +94,35 @@ def test_search(self):
9094
self.assertContains(search_response, digitaal_adres_persoon.get_full_name())
9195
self.assertNotContains(search_response, nummer_persoon.get_full_name())
9296
self.assertNotContains(search_response, uuid_persoon.get_full_name())
97+
98+
@disable_admin_mfa()
99+
def test_digitaal_adres_inline(self):
100+
"""
101+
Regression test for #226
102+
103+
betrokkene should be optional
104+
"""
105+
106+
SuperUserFactory(username="admin", password="admin")
107+
self._login_user(username="admin", password="admin")
108+
109+
partij = PartijFactory(soort_partij="persoon", voorkeurs_digitaal_adres=None)
110+
PersoonFactory(partij=partij)
111+
url = reverse("admin:klantinteracties_partij_change", args=[partij.pk])
112+
113+
response = self.app.get(url)
114+
115+
form = response.form
116+
form["digitaaladres_set-TOTAL_FORMS"] = 1
117+
add_dynamic_field(form, "digitaaladres_set-0-omschrijving", "description")
118+
add_dynamic_field(form, "digitaaladres_set-0-soort_digitaal_adres", "email")
119+
add_dynamic_field(form, "digitaaladres_set-0-adres", "email@example.com")
120+
121+
response = form.submit()
122+
self.assertEqual(response.status_code, 302)
123+
124+
adres = DigitaalAdres.objects.get()
125+
126+
self.assertEqual(adres.omschrijving, "description")
127+
self.assertEqual(adres.adres, "email@example.com")
128+
self.assertIsNone(adres.betrokkene)

src/openklant/utils/tests/webtest.py

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from webtest import forms
2+
3+
4+
def add_dynamic_field(form: forms.Form, name: str, value: str) -> None:
5+
"""
6+
Helper to add fields to a webtest form that is typically done in JS otherwise.
7+
"""
8+
field = forms.Text(form, "input", name, pos=999, value=value)
9+
form.fields[name] = [field]
10+
form.field_order.append((name, field))

0 commit comments

Comments
 (0)