From 565045c7c1156ff2d78ead5daa1d0918999d90c8 Mon Sep 17 00:00:00 2001 From: Sergei Maertens Date: Fri, 18 Oct 2024 18:09:56 +0200 Subject: [PATCH] :poop: [#4764] Prevent log record spam when viewing a submission in the admin --- src/openforms/submissions/admin.py | 10 +++++++++- src/openforms/submissions/pricing.py | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/openforms/submissions/admin.py b/src/openforms/submissions/admin.py index 28916eacb6..f764a2be57 100644 --- a/src/openforms/submissions/admin.py +++ b/src/openforms/submissions/admin.py @@ -34,6 +34,7 @@ SubmissionValueVariable, TemporaryFileUpload, ) +from .pricing import InvalidPrice from .tasks import on_post_submission_event @@ -381,7 +382,14 @@ def get_price(self, obj): @admin.display(description=_("Payment required"), boolean=True) def get_payment_required(self, obj): - return obj.payment_required + obj._in_admin_display = True + try: + return obj.payment_required + # InvalidPrice means that pricing/payment was set up and configured, but a + # semi-expected crash happened when trying to calculate the price because of + # mis-configuration. + except InvalidPrice: + return True def change_view(self, request, object_id, form_url="", extra_context=None): submission = self.get_object(request, object_id) diff --git a/src/openforms/submissions/pricing.py b/src/openforms/submissions/pricing.py index c02b9e3908..173c6a25ab 100644 --- a/src/openforms/submissions/pricing.py +++ b/src/openforms/submissions/pricing.py @@ -55,6 +55,10 @@ def get_submission_price(submission: Submission) -> Decimal: try: price = _price_from_variable(submission) except InvalidPrice as exc: + # Dirty, dirty hack - don't create new log records when viewing this in the + # admin. + if getattr(submission, "_in_admin_display", False): # pragma: no cover + raise logevent.price_calculation_variable_error( submission=submission, variable=exc.variable,