fix OpenID authentication
OpenID Connect authentication throws a django.core.exceptions.SynchronousOnlyOperation
exception.
web File "/usr/local/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response [2720/9522]
web response = wrapped_callback(request, *callback_args, **callback_kwargs)
web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/asgiref/sync.py", line 277, in __call__
web return call_result.result()
web ^^^^^^^^^^^^^^^^^^^^
web File "/usr/lib64/python3.11/concurrent/futures/_base.py", line 449, in result
web return self.__get_result()
web ^^^^^^^^^^^^^^^^^^^
web File "/usr/lib64/python3.11/concurrent/futures/_base.py", line 401, in __get_result
web raise self._exception
web File "/usr/local/lib/python3.11/site-packages/asgiref/sync.py", line 353, in main_wrap
web result = await self.awaitable(*args, **kwargs)
web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/ninja/operation.py", line 414, in _async_view
web return await cast(AsyncOperation, operation).run(request, *a, **kw)
web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/ninja/operation.py", line 287, in run
web return self.api.on_exception(request, e)
web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/ninja/main.py", line 490, in on_exception
web return handler(request, exc)
web ^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/ninja/errors.py", line 108, in _default_exception
web raise exc # let django deal with it
web ^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/ninja/operation.py", line 284, in run
web result = await self.view_func(request, **values)
web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
web File "/code/glitchtip/api/api.py", line 102, in get_settings
web social_app.authorize_url = adapter.authorize_url
web ^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/allauth/socialaccount/providers/openid_connect/views.py", line 44, in authorize_url
web return self.openid_config["authorization_endpoint"]
web ^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/allauth/socialaccount/providers/openid_connect/views.py", line 23, in openid_config
web server_url = self.get_provider().server_url
web ^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/allauth/socialaccount/providers/oauth2/views.py", line 44, in get_provider glitchtip-web-5f7cd58b7c-46wkv web return get_adapter(self.request).get_provider(
web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ glitchtip-web-5f7cd58b7c-46wkv web File "/usr/local/lib/python3.11/site-packages/allauth/socialaccount/adapter.py", line 204, in get_provider
web app = self.get_app(request, provider=provider) glitchtip-web-5f7cd58b7c-46wkv web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/allauth/socialaccount/adapter.py", line 284, in get_app
web apps = self.list_apps(request, provider=provider, client_id=client_id)
web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/allauth/socialaccount/adapter.py", line 236, in list_apps
web for app in db_apps:
web File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 398, in __iter__
web self._fetch_all()
web File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 1881, in _fetch_all
web self._result_cache = list(self._iterable_class(self))
web ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 91, in __iter__
web results = compiler.execute_sql(
web ^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1560, in execute_sql
web cursor = self.connection.cursor()
web ^^^^^^^^^^^^^^^^^^^^^^^^
web File "/usr/local/lib/python3.11/site-packages/django/utils/asyncio.py", line 24, in inner
web raise SynchronousOnlyOperation(message)
web django.core.exceptions.SynchronousOnlyOperation: You cannot call this from an async context - use a thread or sync_to_async.
Fix getting the adapter.authorize_url
for all OAuth2Adapter
classes.