Error Unexpected Exception 'render_rejection_reason'

Hi i get from the system some errors, while user try to reject a registration

2022-10-10 13:54:08,824  6d689a3396ae461c  16      indico.flask - ERROR errors.py:98 -- 'render_rejection_reason' is undefined

Traceback (most recent call last):
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask/app.py", line 1516, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask/app.py", line 1502, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/flask/util.py", line 79, in wrapper
    return obj().process()
    return obj().process()
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/rh.py", line 281, in process
    res = self._do_process()
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/rh.py", line 252, in _do_process
    rv = self._process()
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/modules/events/registration/controllers/management/reglists.py", line 570, in _process
    _modify_registration_status(self.registration, approve=False, rejection_reason=form.rejection_reason.data,
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/modules/events/registration/controllers/management/reglists.py", line 550, in _modify_registration_status
    notify_registration_state_update(registration, attach_rejection_reason)
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/modules/events/registration/notifications.py", line 76, in notify_registration_state_update
    _notify_registration(registration, 'registration_state_update_to_registrant.html',
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/util/signals.py", line 111, in _wrapper
    return func(*args, **kwargs)
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/modules/events/registration/notifications.py", line 52, in _notify_registration
    mail = make_email(to_list=to_list, template=tpl, html=True, from_address=from_address, attachments=attachments)
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/core/notifications.py", line 152, in make_email
    body = template.get_body()
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/runtime.py", line 814, in __call__
    return self._invoke(arguments, autoescape)
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/runtime.py", line 828, in _invoke
    rv = self._func(*arguments)
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask_pluginengine/util.py", line 150, in decorator
    return func(*args, **kwargs)
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/templates/emails/base.html", line 33, in macro
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask_pluginengine/templating.py", line 107, in call
    return super().call(__obj, *args, **kwargs)
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/runtime.py", line 349, in call
    return __obj(*args, **kwargs)
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/runtime.py", line 814, in __call__
    return self._invoke(arguments, autoescape)
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/runtime.py", line 828, in _invoke
    rv = self._func(*arguments)
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask_pluginengine/util.py", line 150, in decorator
    return func(*args, **kwargs)
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/web/templates/emails/base.html", line 48, in macro
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask_pluginengine/util.py", line 131, in generator
    yield from gen
  File "/opt/indico/dkfzdesign/templates/core/events/registration/emails/base_registration.html", line 98, in block_body
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask_pluginengine/templating.py", line 107, in call
    return super().call(__obj, *args, **kwargs)
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/runtime.py", line 349, in call
    return __obj(*args, **kwargs)
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/runtime.py", line 430, in __call__
    rv = concat(self._stack[self._depth](self._context))
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask_pluginengine/util.py", line 131, in generator
    yield from gen
  File "/opt/indico/dkfzdesign/templates/core/events/registration/emails/registration_creation_to_registrant.html", line 145, in block_registration_header
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask_pluginengine/util.py", line 131, in generator
    yield from gen
  File "/opt/indico/.venv/lib/python3.9/site-packages/indico/modules/events/registration/templates/emails/registration_state_update_to_registrant.html", line 66, in block_registration_header_text
  File "/opt/indico/.venv/lib/python3.9/site-packages/flask_pluginengine/templating.py", line 107, in call
    return super().call(__obj, *args, **kwargs)
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/runtime.py", line 330, in call
    pass_arg = _PassArg.from_obj(__obj)
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/utils.py", line 84, in from_obj
    if hasattr(obj, "jinja_pass_arg"):
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/runtime.py", line 910, in __getattr__
    return self._fail_with_undefined_error()
  File "/opt/indico/.venv/lib/python3.9/site-packages/jinja2/runtime.py", line 903, in _fail_with_undefined_error
    raise self._undefined_exception(self._undefined_message)
jinja2.exceptions.UndefinedError: 'render_rejection_reason' is undefined

{'data': {'get': {},
          'headers': {'Accept': 'application/json, text/javascript, */*; '
                                'q=0.01',
                      'Accept-Encoding': 'gzip, deflate, br',
                      'Accept-Language': 'en-US,en;q=0.9',
                      'Connection': 'Keep-Alive',
                      'Content-Length': '216',
                      'Content-Type': 'application/x-www-form-urlencoded; '
                                      'charset=UTF-8',
                      'Cookie': 'emos_jcvid=AYCE6s8lDehvOt9lXeuV_qpY9ZtLoB*L:1:0:0:0:true:1; '
                                'indico_session=XXX',
                      'Host': 'indico.XXXXXXXXXXXXX.de',
                      'Origin': 'https://indico.XXXXXXX.de',
                      'Referer': 'https://indicoXXXXXXX.de/event/XXXXXX/manage/registration/XXXXX/registrations/3480[..]',
                      'Sec-Ch-Ua': '" Not;A Brand";v="99", "Google '
                                   'Chrome";v="97", "Chromium";v="97"',
                      'Sec-Ch-Ua-Mobile': '?0',
                      'Sec-Ch-Ua-Platform': '"Windows"',
                      'Sec-Fetch-Dest': 'empty',
                      'Sec-Fetch-Mode': 'cors',
                      'Sec-Fetch-Site': 'same-origin',
                      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                                    'AppleWebKit/537.36 (KHTML, like Gecko) '
                                    'Chrome/97.0.4692.71 Safari/537.36',
                      'X-Csrf-Token': '23d776ad-d24b-4852-9c7a-500be478f1e2',
                      'X-Forwarded-For': 'XXXXXXXXXXXXXXX',
                      'X-Forwarded-Host': 'indico.XXXXXXXXXXX.de',
                      'X-Forwarded-Server': 'indico.XXXXXXXXXXXX.de',
                      'X-Requested-With': 'XMLHttpRequest'},
          'json': None,
          'post': {'attach_rejection_reason': 'y',
                   'csrf_token': '23d776ad-d24b-4852-9c7a-500be478f1e2',
                   'rejection_reason': 'Unpaid registration fee. Participation '
                                       'is only possible after successful '
                                       'payment 3 days after initial '
                                       'registration',
                   'submitted': ''},
          'url': {'event_id': 483,
                  'reg_form_id': 627,
                  'registration_id': 34808}},
 'endpoint': 'event_registration.reject_registration',
 'id': '6d689a3396ae461c',
 'ip': 'XXXXXXXXXXXXXXX',
 'method': 'POST',
 'referrer': 'https://indico.XXXXXXXXX.de/event/XXXXXXXXXXXXX/manage/registration/XXXXXXXXX/registrations/3480[..]',
 'rh': 'RHRegistrationReject',
 'time': '2022-10-10T13:54:08.878858',
 'url': 'https://indico.XXXXXXXXXXXXX/event/XXXXXXXXXXXX/manage/registration/XXXXXXXXXXXXX/registrations/3480[..]',
 'user': {'email': 'XXXXXXXXXXXXXXX@XXXXXX.de',
          'id': 16,
          'name': 'XXXXXXXXXXXX XXXXXXXXXXXXXXX'},
 'user_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
               '(KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}

Any idea what happened?

I just tested it locally and it worked fine for me.

/opt/indico/dkfzdesign/templates/core/events/registration/emails/registration_creation_to_registrant.html looks like template customization, so most likely it’s outdated or missing the macro for some other reason. When using template customizations, especially more complex ones (or replacing whole templates instead of just overriding some small blocks), you need to make sure to stay in sync with the original templates when updating indico.

PS: The indico_session cookie should always be censored when posting an error report since this lets someone access the account unless they already logged out from that session.

i thanks for the answer and the edit. I found the problem thanks to your suggestion in our customization and was able to solve it. Case closed.