[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