Apps screen borked, something about wireguard django reverse

Fresh install of edge version on a Pi4B.
Lads, the Apps screen is borked up, I can only use Cockpit.

Problem Description
If I try to go to Apps, I get an error box from a Python stack trace something about “wireguard” not being a key expected in a reverse paths dictionary. I wish I could just delete that key, or check, or disable this specific App so that the interface could load and I could experience FB!

Things I’ve tried

  1. apt update
  2. apt upgrade wireguard
  3. apt-get install wireguard. Then remove, then install again.
  4. Manually editing the file at usr/lib/python3/dist-packages/django/core/handlers/base.py to try to make it ignore wireguard. I got a side question on this reguard. More later.
  5. following the instructions i found in the forum for someone trying to “turn off” as I understand it, one App from the screen, using the CLI since the WUI doesn’t do anything besides show the error and the Cockpit launcher. (That thread is here: /t/uninstall-app-from-terminal/3351/4 )

Next steps?
Lads, at this point i’m out of ideas. I got some experience with MVC frameworks like Rails but I don’t see where the alleged django App is hosted in the file system even though I’ve searched a lot… Maybe it’s that place in /usr/lib/python3/dist-packages/django… ??? The error box does show my changes to the base.py file but it doesn’t make it stop breaking so I’m very lost on this.

Re-installing from stable is not out of the question, lads, but it’s a bit disheartening having configured so beautifully my new RAID external drives after installing mdadm. At first I ignored this issue bec. I thought it would be some small issue that could be “skipped” … but alas, lads, it’s done me bad…

Summary of questions
Have you encountered a similar issue? I’ve thrawled the forums but haven’t found a way out.
Do you know how to avoid it? How to “reset” to factory the Apps screen (django app?). I’ve perused the manual too, but instructions on Debian wireguard don’t seem to be written for freedombox per se…
Is “plinth” the “app” (django) that runs on the apache2 instance? if so where are the .html js css py files? /var/www/html has a placeholder index.html only… apache2.conf and friends doesn’t have anything to illustrate the matter either…

Well, feel free to chime in with your knowledge, experience, consolation for any or all of these questions…

awesome project, best regards,
-m

The Error box, verbatim

Error loading page. Details

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/django/urls/base.py", line 71, in reverse
    extra, resolver = resolver.namespace_dict[ns]
                      ~~~~~~~~~~~~~~~~~~~~~~~^^^^
KeyError: 'wireguard'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 220, in _get_response
    response = response.render()
  File "/usr/lib/python3/dist-packages/django/template/response.py", line 114, in render
    self.content = self.rendered_content
                   ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/template/response.py", line 92, in rendered_content
    return template.render(context, self._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/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/django/template/loader_tags.py", line 63, in render
    result = block.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 63, in render
    result = block.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/defaulttags.py", line 321, in render
    return 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/defaulttags.py", line 238, in render
    nodelist.append(node.render_annotated(context))
                    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  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/defaulttags.py", line 321, in render
    return 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/defaulttags.py", line 321, in render
    return 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 208, in render
    return template.render(context)
           ~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/template/base.py", line 177, 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/base.py", line 1070, in render
    return render_value_in_context(output, context)
  File "/usr/lib/python3/dist-packages/django/template/base.py", line 1047, in render_value_in_context
    value = str(value)
  File "/usr/lib/python3/dist-packages/django/utils/functional.py", line 155, in __text_cast
    return func(*self.__args, **self.__kw)
  File "/usr/lib/python3/dist-packages/django/urls/base.py", line 82, in reverse
    raise NoReverseMatch("%s is not a registered namespace" % key)
django.urls.exceptions.NoReverseMatch: 'wireguard' is not a registered namespace

Are you currently running Debian stable? Which version of FreedomBox package is installed?

plinth is the name of the FreedomBox service / web interface, which is a Django app.

The FreedomBox modules (app pages) are installed in this path:
/usr/lib/python3/dist-packages/plinth

The modules are enabled through this folder:
/usr/share/freedombox/modules-enabled
To override, you can copy one of the files to /etc/freedombox/modules-enabled/ and then comment out (with #) or remove the content.

@mesmer Please try this workaround:

sudo apt install python3-segno
sudo systemctl restart plinth

excelent information, I will try to comment out wireguard and disable that service that way, will report back my findings.

I was using my TV as a temporary screen for a net-install so the font/description was extremely tiny and unreadable, but from using the imager before I could navigate using icons. I think I installed the bleeding-edge/development version, not the stable one.

I thought it would come with the latest packages, not broken per-se… but it’s alright. Small price to pay for such a beautiful project np, we’ll get it, lads. I’m optimistic and again, thanks.

OK, will try this before trying the other thing np.
We’re testing if package manager can resolve basic things with a QR library(?) or maybe a known broken dependency on Pi4 or something(?)

If you’re busy no need for answer, just thinking out loud. Will go try that thing now brb.

@mesmer Please try this workaround:

sudo apt install python3-segno
sudo systemctl restart plinth

HEY!!
LADS, let’s have a foamy one!!
It’s looking like the movies now! looks just like the tin can, laddies!

Ok so now, if you don’t mind, if you get a chance, please and thank you let me know your thought process… because installing a QR lib was a really unexpected fix for me. If this is common maybe put it in a FAQ for raspberries like me(?)…

In any case, gratefulness to you sir or madam or theyselfhood ser

I mean because all I did was net-install from edge/dev and open it up and, bang, django path error thing with only keyword highlighted “wireguard” which seems incidental now.

No, this isn’t common. It’s an unusual situation due to a bug that was introduced in the 26.9 release. We should have a new package release soon to fix this issue, so that the workaround won’t be needed anymore.