diff options
| author | Ben Sima <ben@bsima.me> | 2025-11-20 19:25:01 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bsima.me> | 2025-11-20 19:25:01 -0500 |
| commit | 84251fc367e0d129dd77e951f587e2e2db0e98f6 (patch) | |
| tree | 4a23c5c246b96b8a99727304165c00433c372d5c /Biz/PodcastItLater/Web.py | |
| parent | 0f3d43b40b39c8915303ee19901638197c33f1c6 (diff) | |
| parent | ada597842025a4dd083dcaf0f278b1123447c760 (diff) | |
Merge branch 'task/t-PpYZt2' into live
Diffstat (limited to 'Biz/PodcastItLater/Web.py')
| -rw-r--r-- | Biz/PodcastItLater/Web.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Biz/PodcastItLater/Web.py b/Biz/PodcastItLater/Web.py index 4a8e57e..7e8e969 100644 --- a/Biz/PodcastItLater/Web.py +++ b/Biz/PodcastItLater/Web.py @@ -973,6 +973,36 @@ def public_feed(request: Request) -> PublicFeedPage: ) +@app.get("/pricing") +def pricing(request: Request) -> UI.PricingPage: + """Display pricing page.""" + user_id = request.session.get("user_id") + user = Core.Database.get_user_by_id(user_id) if user_id else None + + return UI.PricingPage( + user=user, + ) + + +@app.post("/upgrade") +def upgrade(request: Request) -> RedirectResponse: + """Start upgrade checkout flow.""" + user_id = request.session.get("user_id") + if not user_id: + return RedirectResponse(url="/?error=login_required") + + try: + checkout_url = Billing.create_checkout_session( + user_id, + "paid", + BASE_URL, + ) + return RedirectResponse(url=checkout_url, status_code=303) + except ValueError: + logger.exception("Failed to create checkout session") + return RedirectResponse(url="/pricing?error=checkout_failed") + + def _handle_test_login(email: str, request: Request) -> Response: """Handle login in test mode.""" # Special handling for demo account |
