Dear Maintainer,
Some spam came through on one of our lists and I wanted to delete the messages
via hyperkitty/mailman-web. I select the thread, hit 'delete thread', get
the confirmation page, then see a spinning waiting wheel.
In the logs I see:
Internal Server Error: /hyperkitty/list/<LIST_NAME>/recent-threads
DoesNotExist at /hyperkitty/list/<LIST-NAME>s/recent-threads
Thread matching query does not exist.
Request Method: GET
Request URL: https://<LIST-SITE>/hyperkitty/list/<LIST-NAME>/recent-threads
Django Version: 4.2.23
Python Executable: /usr/bin/uwsgi-core
Python Version: 3.13.7
Python Path: ['.', '', '/usr/lib/python313.zip', '/usr/lib/python3.13', '/usr/lib/python3.13/lib-dynload', '/usr/local/lib/python3.13/dist-packages', '/opt/mailman/plugins/strip_footer_plugin', '/usr/lib/python3/dist-packages', '/usr/lib/python3/dist-packages/setuptools/_vendor']
Server time: Fri, 14 Nov 2025 07:20:28 +1100
Installed Applications:
('captcha',
'hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount')
Installed Middleware:
('allauth.account.middleware.AccountMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/hyperkitty/lib/view_helpers.py", line 137, in inner
return func(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/hyperkitty/views/mlist.py", line 250, in overview_recent_threads
'threads': mlist.recent_threads[:20],
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/hyperkitty/models/mailinglist.py", line 163, in recent_threads
return self.cached_values["recent_threads"]()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/hyperkitty/models/common.py", line 58, in __call__
return self.get_or_set(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/hyperkitty/models/mailinglist.py", line 333, in get_or_set
return [Thread.objects.get(pk=pk) for pk in thread_ids]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 637, in get
raise self.model.DoesNotExist(
^
Exception Type: DoesNotExist at /hyperkitty/list/summit@sel4.systems/recent-threads
Exception Value: Thread matching query does not exist.
Raised during: hyperkitty.views.mlist.overview_recent_threads