Skip to content

Commit 5b7cd3a

Browse files
author
Paul Schilling
committed
[#2931] Update company name + address from KVK API on login
1 parent 0ab1a2d commit 5b7cd3a

File tree

3 files changed

+46
-1
lines changed

3 files changed

+46
-1
lines changed

src/open_inwoner/accounts/signals.py

+19
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,25 @@
2626
}
2727

2828

29+
from open_inwoner.kvk.views import company_branch_selected
30+
31+
32+
@receiver(company_branch_selected)
33+
def update_company_from_kvk_api(sender, *args, **kwargs):
34+
request = kwargs["request"]
35+
user = request.user
36+
37+
company_data = kwargs["company_data"]
38+
user.company_name = company_data["name"]
39+
40+
if city := company_data.get("city", None):
41+
user.city = city
42+
if street := company_data.get("street", None):
43+
user.street = street
44+
45+
user.save()
46+
47+
2948
@receiver(user_logged_in)
3049
def update_user_from_klant_on_login(sender, user, request, *args, **kwargs):
3150
# This additional guard is mainly to facilitate easier testing, where not

src/open_inwoner/kvk/signals.py

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

33
from django.contrib.auth.signals import user_logged_in
4+
from django.db.models.signals import Signal
45
from django.dispatch import receiver
56
from django.utils.translation import gettext as _
67

@@ -34,3 +35,6 @@ def on_kvk_change(sender, user, request, *args, **kwargs):
3435
user.rsin = rsin
3536
user.is_prepopulated = True
3637
user.save()
38+
39+
40+
company_branch_selected = Signal()

src/open_inwoner/kvk/views.py

+23-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from ..utils.url import get_next_url_from
1212
from .client import KvKClient
1313
from .forms import CompanyBranchChoiceForm
14+
from .signals import company_branch_selected
1415

1516

1617
class CompanyBranchChoiceView(FormView):
@@ -90,6 +91,27 @@ def post(self, request):
9091
# Directly calling `super().form_invalid(form)` would override the error
9192
return self.render_to_response(context)
9293

93-
request.session[KVK_BRANCH_SESSION_VARIABLE] = request.POST["branch_number"]
94+
branch_number = request.POST["branch_number"]
95+
request.session[KVK_BRANCH_SESSION_VARIABLE] = branch_number
96+
97+
# data for update company signal
98+
company_branch = (
99+
next(
100+
branch
101+
for branch in form.company_branches
102+
if branch["vestigingsnummer"] == branch_number
103+
)
104+
or form.company_branches[0]
105+
)
106+
company_data = {"name": company_branch["naam"]}
107+
if company_address := company_branch.get("adres", None):
108+
company_data["city"] = company_address["binnenlandsAdres"]["plaats"]
109+
company_data["street"] = company_address["binnenlandsAdres"]["straatnaam"]
110+
111+
company_branch_selected.send(
112+
sender=self,
113+
request=request,
114+
company_data=company_data,
115+
)
94116

95117
return HttpResponseRedirect(redirect)

0 commit comments

Comments
 (0)