[2026-04-03 11:23:06,630] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
File "/layers/heroku_python/venv/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
response = self.full_dispatch_request()
File "/layers/heroku_python/venv/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/layers/heroku_python/venv/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
rv = self.dispatch_request()
File "/layers/heroku_python/venv/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/workspace/app.py", line 338, in index
return flask.render_template('index.html',
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
default_domain=flask.session.get('default-domain', None),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
suggested_domains=flask.session.get('suggested-domains', []),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
batches=batch_store.get_batches_slice(offset=0, limit=10),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
read_only_reason=app.config.get('READ_ONLY_REASON'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/heroku_python/venv/lib/python3.13/site-packages/flask/templating.py", line 150, in render_template
return _render(app, template, context)
File "/layers/heroku_python/venv/lib/python3.13/site-packages/flask/templating.py", line 131, in _render
rv = template.render(context)
File "/layers/heroku_python/venv/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
self.environment.handle_exception()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/layers/heroku_python/venv/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/workspace/templates/index.html", line 1, in top-level template code
{% extends "base.html" %}
File "/workspace/templates/base.html", line 21, in top-level template code
{{ authentication_area() }}
^^^^^^^^^^^^^^^^^^^
File "/workspace/app.py", line 151, in authentication_area
raise e
File "/workspace/app.py", line 140, in authentication_area
response = session.get(action='query',
meta=['userinfo', 'notifications'],
notcrosswikisummary=True,
notprop=['count'])
File "/layers/heroku_python/venv/lib/python3.13/site-packages/mwapi/session.py", line 308, in get
return self.request('GET', params=params, auth=auth,
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
query_continue=query_continue,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
continuation=continuation)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/layers/heroku_python/venv/lib/python3.13/site-packages/mwapi/session.py", line 171, in request
return self._request(method, params=normal_params, auth=auth,
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
files=files)
^^^^^^^^^^^^
File "/layers/heroku_python/venv/lib/python3.13/site-packages/mwapi/session.py", line 127, in _request
raise APIError.from_doc(doc['error'])
mwapi.errors.APIError: echo-read-notifications: You don't have permission to $1. -- See https://meta.wikimedia.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/postorius/lists/mediawiki-api-announce.lists.wikimedia.org/> for notice of API deprecations and breaking changes.
US