Hi! I'm running quart 0.18.0 and quart-auth 0.7.0 and I'm running into an error when running the app. I've manually modified flask-sqlalchemy and quart-csrf to the new context tracking system, basically replacing the _ctx stuff with g, and the safe_str_cmp modification in werkzeug. Is there something I'm missing? I'm doing the login like this:
user = User.query.filter_by(email=form.email.data).first()
if user and bcrypt.check_password_hash(user.password, form.password.data):
login_user(AuthUser(user.id), remember=form.remember.data)
app = create_app()
app.auth_manager.user_class = User # this "User" my user class from models.py
@app.errorhandler(Unauthorized)
async def redirect_to_login(*_: Exception):
return redirect(url_for('users.login'))
Traceback (most recent call last):
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1652, in full_dispatch_request
result = await self.dispatch_request(request_context)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1691, in dispatch_request
self.raise_routing_exception(request_)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1171, in raise_routing_exception
raise request.routing_exception
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\ctx.py", line 62, in match_request
) = self.url_adapter.match( # type: ignore
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\werkzeug\routing\map.py", line 624, in match
raise NotFound() from None
werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1629, in handle_request
return await self.full_dispatch_request(request_context)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\flask_patch\app.py", line 28, in new_full_dispatch_request
return await old_full_dispatch_request(self, request_context)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1654, in full_dispatch_request
result = await self.handle_user_exception(error)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1095, in handle_user_exception
return await self.handle_http_exception(error)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1073, in handle_http_exception
return await self.ensure_async(handler)(error)
File "C:\Users\gs833787\Documents\auxilios\auxilios\errors\handlers.py", line 19, in error_404
return await render_template('errors/404.html'), 404
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\templating.py", line 101, in render_template
await current_app.update_template_context(context)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 494, in update_template_context
extra_context.update(await self.ensure_async(processor)())
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\flask_patch\app.py", line 44, in _wrapper
result = func(*args, **kwargs)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart_auth\__init__.py", line 350, in _template_context
return {"current_user": _load_user()}
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart_auth\__init__.py", line 321, in _load_user
user = current_app.auth_manager.resolve_user() # type: ignore
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart_auth\__init__.py", line 134, in resolve_user
return self.user_class(auth_id)
TypeError: __init__() takes 1 positional argument but 2 were given
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\hypercorn\asyncio\task_group.py", line 21, in _handle
await invoke_asgi(app, scope, receive, send)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\hypercorn\utils.py", line 247, in invoke_asgi
await app(scope, receive, send)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1881, in __call__
await self.asgi_app(scope, receive, send)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1907, in asgi_app
await asgi_handler(receive, send)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\asgi.py", line 51, in __call__
_raise_exceptions(done)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\asgi.py", line 353, in _raise_exceptions
raise task.exception()
File "C:\Users\gs833787\AppData\Local\Programs\Python\Python310\lib\asyncio\tasks.py", line 232, in __step
result = coro.send(None)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\asgi.py", line 90, in handle_request
response = await self.app.handle_request(request)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1633, in handle_request
return await self.handle_exception(error)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 1120, in handle_exception
response = await self.ensure_async(handler)(internal_server_error)
File "C:\Users\gs833787\Documents\auxilios\auxilios\errors\handlers.py", line 30, in error_500
return await render_template('errors/500.html'), 500
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\templating.py", line 101, in render_template
await current_app.update_template_context(context)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\app.py", line 494, in update_template_context
extra_context.update(await self.ensure_async(processor)())
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart\flask_patch\app.py", line 44, in _wrapper
result = func(*args, **kwargs)
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart_auth\__init__.py", line 350, in _template_context
return {"current_user": _load_user()}
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart_auth\__init__.py", line 321, in _load_user
user = current_app.auth_manager.resolve_user() # type: ignore
File "C:\Users\gs833787\Documents\auxilios\qvenv\lib\site-packages\quart_auth\__init__.py", line 134, in resolve_user
return self.user_class(auth_id)
TypeError: __init__() takes 1 positional argument but 2 were given