FastUI icon indicating copy to clipboard operation
FastUI copied to clipboard

Form data is being sent as empty after 2 errors

Open ManiMozaffar opened this issue 1 year ago • 0 comments

When filling form data, if it fails twice, on third attempts, it sends empty form data.

Screenshot 2024-02-28 at 16 14 46 Screenshot 2024-02-28 at 16 15 33

To reproduce, run this app with uvicorn, and then fill the form and submit for 3 times

from typing import Annotated

from fastapi import FastAPI, HTTPException
from fastapi.responses import HTMLResponse, RedirectResponse
from fastui import FastUI, prebuilt_html
from fastui import components as c
from fastui.forms import fastui_form
from pydantic import BaseModel, Field, SecretStr


class LoginForm(BaseModel):
    username: str = Field(title='Email Address')
    password: SecretStr


def login_component():
    return [
        c.Heading(text='Login Form', level=2, class_name='center'),
        c.ModelForm(model=LoginForm, display_mode='page', submit_url='/api/forms/login'),
    ]


app = FastAPI()


@app.get('/')
async def main():
    return HTMLResponse(prebuilt_html(title='Operation Dashboard'))


@app.get('/api', response_model=FastUI, response_model_exclude_none=True)
async def login() -> list[c.AnyComponent] | RedirectResponse:
    """Root of website"""
    return [*login_component()]


@app.post('/api/forms/login', response_model=FastUI, response_model_exclude_none=True)
async def submit_login(
    form: Annotated[LoginForm, fastui_form(LoginForm)],
):
    raise HTTPException(401, 'Bad data')

Console log:

Screenshot 2024-02-28 at 16 20 53

ManiMozaffar avatar Feb 28 '24 15:02 ManiMozaffar