[Pkg-mailman-hackers] Bug#1031928: python3-django-hyperkitty: Javascript not loaded because of HTML error
Vincent Danjean
vdanjean at debian.org
Fri Apr 17 09:28:56 BST 2026
Package: python3-django-hyperkitty
Version: 1.3.12-3
Followup-For: Bug #1031928
After upgrading a working mailman3 installation from bookworm to trixie,
I've been hit by this bug. It has been difficult to find the relevant
information and to workaround it.
For the record (and web search engines):
- I first see this kind of messages in javascript console (firefox dev tools 'F12'):
Uncaught ReferenceError: setup_overview is not defined
<anonymous> https://list.domain/mailman3/hyperkitty/list/name@list.domain/:813
jQuery 13
- Eventually, I found this Debian bug and the related MR:
https://gitlab.com/mailman/hyperkitty/-/merge_requests/708
- I use the info from the MR patch:
https://gitlab.com/mailman/hyperkitty/-/merge_requests/708/diffs?commit_id=ea4bd163272d48d864c1ae64e7c776ca3e430b84
to patch the debian file /usr/lib/python3/dist-packages/hyperkitty/templates/hyperkitty/base.html
- at this point, trying an access to the archive page results on a server error page
- looking at /var/log/mailman3/web/mailman-web.log, I see the following message:
ERROR 2026-04-17 10:05:38,906 2023011 django.request Internal Server Error: /mailman3/hyperkitty/list/name at list.domain/
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 240, in overview
return render(request, "hyperkitty/overview.html", context)
File "/usr/lib/python3/dist-packages/django/shortcuts.py", line 24, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/usr/lib/python3/dist-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 175, in render
return self._render(context)
~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 167, in _render
return self.nodelist.render(context)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 1005, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 966, in render_annotated
return self.render(context)
~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/loader_tags.py", line 157, in render
return compiled_parent._render(context)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 167, in _render
return self.nodelist.render(context)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 1005, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/template/base.py", line 966, in render_annotated
return self.render(context)
~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/compressor/templatetags/compress.py", line 160, in render
return self.render_compressed(
~~~~~~~~~~~~~~~~~~~~~~^
context, self.kind, self.mode, forced=forced, log=log, verbosity=verbosity
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/compressor/templatetags/compress.py", line 106, in render_compressed
return self.render_offline(context)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib/python3/dist-packages/compressor/templatetags/compress.py", line 84, in render_offline
raise OfflineGenerationError(
...<4 lines>...
)
compressor.exceptions.OfflineGenerationError: You have offline compression enabled but key "530ac53ad8e49e22ec5ebf23242485308e03ad03f01e2722774cd6c7b02b78c3" is missing from offline manifest. You may need to run "python manage.py compress". Here is the original content:
<script type="text/javascript" src="/mailman3/static/hyperkitty/libs/bootstrap/javascripts/bootstrap.bundle.min.js" ></script>
<script type="text/javascript" src="/mailman3/static/hyperkitty/libs/mousetrap/mousetrap.min.js" ></script>
<script type="text/javascript" src="/mailman3/static/hyperkitty/libs/jquery.expander.js" ></script>
<script type="text/javascript" src="/mailman3/static/hyperkitty/libs/d3.v2.min.js" ></script>
<script type="text/javascript" src="/mailman3/static/hyperkitty/libs/jquery.hotkeys.js" ></script>
<script type="text/javascript" src="/mailman3/static/django-mailman3/js/main.js" ></script>
<script type="text/javascript" src="/mailman3/static/hyperkitty/js/hyperkitty-common.js" ></script>
<script type="text/javascript" src="/mailman3/static/hyperkitty/js/hyperkitty-index.js" ></script>
<script type="text/javascript" src="/mailman3/static/hyperkitty/js/hyperkitty-overview.js" ></script>
<script type="text/javascript" src="/mailman3/static/hyperkitty/js/hyperkitty-thread.js" ></script>
<script type="text/javascript" src="/mailman3/static/hyperkitty/js/hyperkitty-userprofile.js" ></script>
- I did not know how to rebuild the cache. According to the message, I was server-side
and, indeed, cleaning browser cache did not help
I did not know where to try to run the suggested command and under which user.
- restarting apache2.service and mailman3-web.service was not enough
- I success using the following commands (not sure which one really helps):
dpkg-reconfigure python3-django-hyperkitty
dpkg-reconfigure python3-mailman-hyperkitty
dpkg-reconfigure mailman3-web # keeping the current database conf
I was long and paintfull. It is a pitty such fix was not directly included in a fixed package in stable.
Regards,
Vincent
-- System Information:
Debian Release: forky/sid
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'oldstable-updates'), (500, 'oldstable-security'), (500, 'unstable'), (500, 'testing'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.19.8+deb14-amd64 (SMP w/4 CPU threads; PREEMPT)
Kernel taint flags: TAINT_WARN, TAINT_OOT_MODULE
Locale: LANG=fr_FR.utf8, LC_CTYPE=fr_FR.utf8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages python3-django-hyperkitty depends on:
ii fonts-font-awesome 5.0.10+really4.7.0~dfsg-4.1
ii fonts-glyphicons-halflings 1.009~3.4.1+dfsg-7
ii libjs-bootstrap4 [node-bootstrap] 4.6.2+dfsg-2
ii libjs-jquery 3.7.1+dfsg+~3.5.33-1
ii libjs-jquery-ui 1.13.2+dfsg-1
ii libjs-sphinxdoc 8.2.3-12
ii python3 3.13.9-3
ii python3-dateutil 2.9.0-4
ii python3-django 3:4.2.29-1
pn python3-django-compressor <none>
pn python3-django-extensions <none>
pn python3-django-gravatar2 <none>
pn python3-django-haystack <none>
pn python3-django-mailman3 <none>
pn python3-django-q <none>
pn python3-djangorestframework <none>
pn python3-elasticsearch <none>
pn python3-flufl.lock <none>
pn python3-mailmanclient <none>
ii python3-mistune 3.1.4-1
ii python3-networkx 3.4.2-4
pn python3-robot-detection <none>
pn python3-tz <none>
ii sphinx-rtd-theme-common 3.1.0+dfsg-1
Versions of packages python3-django-hyperkitty recommends:
pn mailman3-web <none>
python3-django-hyperkitty suggests no packages.
More information about the Pkg-mailman-hackers
mailing list