minvws / nl-kat-coordination

Repo nl-kat-coordination for minvws
European Union Public License 1.2
123 stars 55 forks source link

Filtering on objects page is resulting in an error - BTVWS #1622

Closed vstanojcic closed 1 year ago

vstanojcic commented 1 year ago

When applying a specific set of filters on the objects page this results in a server error. This happens on the .dev environment. On the staging environment this error does not happen.

Apply these filters as shown here below and press "set filters"

image

The result is

image

Version used is v1.10.1

underdarknl commented 1 year ago

Mark, could you debug this with @vstanojcic

praseodym commented 1 year ago

Error log:

Environment:

Request Method: GET
Request URL: http://vws.openkat.dev/en/test/objects/?observed_at=2023-08-21&clearance_level=0&clearance_level=1&clearance_level=2&clearance_level=3&clearance_level=4&clearance_type=empty

Django Version: 4.2.1
Python Version: 3.11.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.forms',
 'django_otp',
 'django_otp.plugins.otp_static',
 'django_otp.plugins.otp_totp',
 'two_factor',
 'account',
 'tools',
 'fmea',
 'crisis_room',
 'onboarding',
 'katalogus',
 'django_password_validators',
 'django_password_validators.password_history',
 'rest_framework',
 'tagulous',
 'csp']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'rocky.middleware.remote_user.RemoteUserMiddleware',
 'django_otp.middleware.OTPMiddleware',
 'rocky.middleware.auth_required.AuthRequiredMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'rocky.middleware.onboarding.OnboardingMiddleware',
 'csp.middleware.CSPMiddleware']

Template error:
In template /opt/venvs/kat-rocky/lib/python3.11/site-packages/rocky/templates/partials/hyperlink_ooi_id.html, error at line 5
   pop from empty list
   1 : {% load i18n %}
   2 : {% load static %}
   3 : 
   4 : <a href="{% ooi_url "ooi_detail" value.primary_key organization_code query=mandatory_fields %}"
   5 :    title=" {% blocktranslate trimmed with name=value.human_readable %}  Show details for {{ name }} {% endblocktranslate %}">{{ value.human_readable }}</a>
   6 : 

Traceback (most recent call last):
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 880, in _resolve_lookup
    current = current[bit]
              ^^^^^^^^^^^^

During handling of the above exception ('ImageMetadata' object is not subscriptable), another exception occurred:
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/core/handlers/base.py", line 220, in _get_response
    response = response.render()
               ^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/response.py", line 114, in render
    self.content = self.rendered_content
                   ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/response.py", line 92, in rendered_content
    return template.render(context, self._request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 175, in render
    return self._render(context)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/loader_tags.py", line 157, in render
    return compiled_parent._render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/loader_tags.py", line 63, in render
    result = block.nodelist.render(context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/loader_tags.py", line 63, in render
    result = block.nodelist.render(context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/defaulttags.py", line 238, in render
    nodelist.append(node.render_annotated(context))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1070, in render
    return render_value_in_context(output, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1047, in render_value_in_context
    value = str(value)
            ^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/utils/html.py", line 420, in <lambda>
    klass.__str__ = lambda self: mark_safe(klass_str(self))
                                           ^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/forms/boundfield.py", line 34, in __str__
    return self.as_widget()
           ^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/forms/boundfield.py", line 107, in as_widget
    return widget.render(

  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/forms/widgets.py", line 281, in render
    return self._render(self.template_name, context, renderer)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/forms/widgets.py", line 286, in _render
    return mark_safe(renderer.render(template_name, context))
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/forms/renderers.py", line 29, in render
    return template.render(context, request=request).strip()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 175, in render
    return self._render(context)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/defaulttags.py", line 541, in render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/defaulttags.py", line 238, in render
    nodelist.append(node.render_annotated(context))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/defaulttags.py", line 238, in render
    nodelist.append(node.render_annotated(context))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/defaulttags.py", line 541, in render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/defaulttags.py", line 321, in render
    return nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/loader_tags.py", line 208, in render
    return template.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 177, in render
    return self._render(context)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/templatetags/i18n.py", line 156, in render
    {var: val.resolve(context) for var, val in self.extra_context.items()}
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/templatetags/i18n.py", line 156, in <dictcomp>
    {var: val.resolve(context) for var, val in self.extra_context.items()}
          ^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 715, in resolve
    obj = self.var.resolve(context)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 847, in resolve
    value = self._resolve_lookup(context)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/django/template/base.py", line 890, in _resolve_lookup
    current = getattr(current, bit)
              ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/octopoes/models/__init__.py", line 116, in human_readable
    return self.format_reference_human_readable(self.reference)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/octopoes/models/ooi/web.py", line 222, in format_reference_human_readable
    t = reference.tokenized
        ^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/octopoes/models/__init__.py", line 214, in tokenized
    return self.class_type.get_tokenized_primary_key(self.natural_key)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/octopoes/models/__init__.py", line 170, in get_tokenized_primary_key
    return PrimaryKeyToken.parse_obj(hydrate(token_tree))
                                     ^^^^^^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/octopoes/models/__init__.py", line 165, in hydrate
    node[key] = hydrate(value)
                ^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/octopoes/models/__init__.py", line 165, in hydrate
    node[key] = hydrate(value)
                ^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/octopoes/models/__init__.py", line 165, in hydrate
    node[key] = hydrate(value)
                ^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/octopoes/models/__init__.py", line 165, in hydrate
    node[key] = hydrate(value)
                ^^^^^^^^^^^^^^
  File "/opt/venvs/kat-rocky/lib/python3.11/site-packages/octopoes/models/__init__.py", line 167, in hydrate
    node[key] = natural_key_parts.pop(0)
                ^^^^^^^^^^^^^^^^^^^^^^^^

Exception Type: IndexError at /en/test/objects/
Exception Value: pop from empty list

This has already been resolved in #1539. Do we want to backport that fix to 1.10 or do we advise users to upgrade to 1.11 (once released) instead?

praseodym commented 1 year ago

Fix was backported to 1.10, so it will be part of version 1.10.2.