Ekaropolus d57548f273
All checks were successful
continuous-integration/drone/push Build is passing
core url changer
2025-09-18 23:55:52 -06:00

29 lines
995 B
Python

# polisplexity/core/urlbuild.py
from django.conf import settings
def public_base(request=None) -> str:
"""
1) settings.PUBLIC_BASE_URL (recommended in prod)
2) request scheme/host (proxy aware)
3) http://localhost:8000 fallback
"""
base = getattr(settings, "PUBLIC_BASE_URL", "").rstrip("/")
if base:
return base
if request is not None:
proto = (request.META.get("HTTP_X_FORWARDED_PROTO")
or ("https" if request.is_secure() else "http"))
host = request.get_host()
return f"{proto.split(',')[0].strip()}://{host}"
return "http://localhost:8000"
def public_url(path_or_abs: str, request=None) -> str:
"""Join public base to a path; pass through absolute URLs untouched."""
if not path_or_abs:
return path_or_abs
if "://" in path_or_abs:
return path_or_abs
if not path_or_abs.startswith("/"):
path_or_abs = "/" + path_or_abs
return public_base(request) + path_or_abs