#!/usr/bin/env python3 """ Debug redirect on AI playground page. """ import re import httpx BASE_URL = "http://localhost:8000" def main(): print("Debugging redirect on AI playground page...") with httpx.Client(base_url=BASE_URL, timeout=30.0) as client: # Login first response = client.get("/admin/login") match = re.search(r'name="csrf_token" value="([^"]+)"', response.text) csrf_token = match.group(1) if match else "" response = client.post( "/admin/login", data={ "username": "admin", "password": "admin123", "csrf_token": csrf_token, }, follow_redirects=True, ) print(f"Logged in, URL: {response.url}") # Get AI playground page without following redirects print("\nGetting AI playground page without following redirects...") response = client.get( "/admin/questions/1/generate?tab=review", follow_redirects=False ) print(f"Status: {response.status_code}") print(f"Location header: {response.headers.get('location', 'None')}") # Follow the redirect if response.headers.get("location"): redirect_url = response.headers["location"] print(f"\nFollowing redirect to: {redirect_url}") response = client.get(redirect_url, follow_redirects=True) print(f"Final status: {response.status_code}") print(f"Final URL: {response.url}") # Check for forms post_forms = re.findall( r']*method="post"[^>]*>', response.text, re.IGNORECASE ) print(f"\nFound {len(post_forms)} POST forms") # Look for CSRF token csrf_inputs = re.findall( r']*name="csrf_token"[^>]*>', response.text, re.IGNORECASE ) if csrf_inputs: print(f"Found {len(csrf_inputs)} CSRF token inputs:") for inp in csrf_inputs[:3]: print(f" {inp}") else: print("No CSRF token inputs found") if __name__ == "__main__": main()