|
5 | 5 | import httpx |
6 | 6 | from fastapi import APIRouter, Form |
7 | 7 | from starlette.requests import Request |
8 | | -from starlette.responses import HTMLResponse |
| 8 | +from starlette.responses import HTMLResponse, RedirectResponse, Response |
9 | 9 |
|
10 | 10 | from simon_aksw_org.messages import get_messages, save_message |
11 | 11 | from simon_aksw_org.recaptcha import ResponseToken |
@@ -47,22 +47,21 @@ async def submit_statement( |
47 | 47 | name: Annotated[str, Form()], |
48 | 48 | message: Annotated[str, Form()], |
49 | 49 | g_recaptcha_response: Annotated[str, Form(alias="g-recaptcha-response")] = "", |
50 | | -) -> HTMLResponse: |
| 50 | +) -> Response: |
51 | 51 | """Process condolence form submission""" |
52 | 52 | settings = get_settings() |
53 | 53 | settings.logger.info(f"{name} submitted a message ... captcha: {g_recaptcha_response}") |
54 | | - context = PageContext(settings) |
55 | 54 | response_token = ResponseToken( |
56 | 55 | token=g_recaptcha_response, secret_key=settings.recaptcha_secret_key.get_secret_value() |
57 | 56 | ) |
58 | 57 |
|
59 | 58 | if await response_token.is_valid(): |
60 | | - save_message(name=name, text=message, data_dir=settings.data_dir) |
61 | | - status_code = httpx.codes.CREATED |
62 | | - else: |
63 | | - context.error = "reCAPTCHA validation failed" |
64 | | - status_code = httpx.codes.BAD_REQUEST |
65 | | - |
| 59 | + message_id = save_message(name=name, text=message, data_dir=settings.data_dir) |
| 60 | + context = PageContext(settings) |
| 61 | + return RedirectResponse(url=f"/#message-{message_id}", status_code=303) |
| 62 | + context = PageContext(settings) |
| 63 | + context.error = "reCAPTCHA validation failed" |
| 64 | + status_code = httpx.codes.BAD_REQUEST |
66 | 65 | return settings.templates.TemplateResponse( |
67 | 66 | request=request, name="home.html", context={"context": context}, status_code=status_code |
68 | 67 | ) |
0 commit comments