story writer backend migration complete, Blog writer SEO and story writer backend migration complete, Blog writer SEO and story writer frontend migration complete

This commit is contained in:
ajaysi
2025-11-13 16:14:26 +05:30
parent 7191c7e7f0
commit 3b9356e2c8
124 changed files with 20055 additions and 1208 deletions

View File

@@ -0,0 +1,91 @@
"""Helper script to fetch the Wix OAuth re-consent URL for manual testing.
This script does NOT change any backend behaviour. It simply calls the
unauthenticated `/api/wix/test/auth/url` endpoint (which already exists for
testing) to retrieve the authorization URL that includes all required scopes
and prints it to the console. Optionally it can open the URL in the default
web browser to start the re-consent flow.
Usage:
python scripts/wix_reconsent_helper.py --base-url http://localhost:8000 --open
Options:
--base-url Base URL where the ALwrity backend is running. Defaults to
http://localhost:8000.
--open If provided, the script will attempt to open the URL in the
system default web browser after fetching it.
"""
from __future__ import annotations
import argparse
import sys
import webbrowser
from typing import Optional
import requests
TEST_AUTH_ENDPOINT = "/api/wix/test/auth/url"
def fetch_authorization_url(base_url: str) -> str:
"""Fetch the Wix authorization URL from the test endpoint."""
endpoint = base_url.rstrip("/") + TEST_AUTH_ENDPOINT
try:
response = requests.get(endpoint, timeout=10)
response.raise_for_status()
except requests.RequestException as exc: # pragma: no cover - simple helper
raise SystemExit(f"Failed to fetch authorization URL: {exc}") from exc
payload = response.json() or {}
url: Optional[str] = payload.get("url") or payload.get("authorization_url")
if not url:
raise SystemExit(
"Test endpoint did not return an authorization URL. "
"Ensure the backend is running and the endpoint is available."
)
# Provide a small summary for the caller.
scope = None
if "scope=" in url:
scope = url.split("scope=")[-1].split("&")[0]
print("✅ Wix authorization URL fetched successfully:\n")
print(url)
if scope:
print("\nScopes requested:")
for item in scope.split(","):
print(f" - {item}")
return url
def parse_args(argv: list[str]) -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Fetch Wix OAuth re-consent URL")
parser.add_argument(
"--base-url",
default="http://localhost:8000",
help="Base URL for the ALwrity backend (default: http://localhost:8000)",
)
parser.add_argument(
"--open",
action="store_true",
help="Open the fetched URL in the default web browser",
)
return parser.parse_args(argv)
def main(argv: Optional[list[str]] = None) -> None:
args = parse_args(argv or sys.argv[1:])
url = fetch_authorization_url(args.base_url)
if args.open:
print("\nOpening web browser for re-consent...")
webbrowser.open(url)
if __name__ == "__main__": # pragma: no cover - script entry point
main()