feat: Migrate image URL access from .url to .public_url across all relevant services and serializers.

This commit is contained in:
pacnpal
2026-01-05 07:37:05 -05:00
parent 70e4385c2b
commit 1c6e219662
6 changed files with 50 additions and 50 deletions

View File

@@ -79,7 +79,7 @@ class ParkPhotoOutputSerializer(serializers.ModelSerializer):
def get_image_url(self, obj): def get_image_url(self, obj):
"""Get the full Cloudflare Images URL.""" """Get the full Cloudflare Images URL."""
if obj.image: if obj.image:
return obj.image.url return obj.image.public_url
return None return None
@extend_schema_field( @extend_schema_field(
@@ -95,10 +95,10 @@ class ParkPhotoOutputSerializer(serializers.ModelSerializer):
# Common variants for park photos # Common variants for park photos
variants = { variants = {
"thumbnail": f"{obj.image.url}/thumbnail", "thumbnail": f"{obj.image.public_url}/thumbnail",
"medium": f"{obj.image.url}/medium", "medium": f"{obj.image.public_url}/medium",
"large": f"{obj.image.url}/large", "large": f"{obj.image.public_url}/large",
"public": f"{obj.image.url}/public", "public": f"{obj.image.public_url}/public",
} }
return variants return variants
@@ -303,14 +303,14 @@ class HybridParkSerializer(serializers.ModelSerializer):
def get_banner_image_url(self, obj): def get_banner_image_url(self, obj):
"""Get banner image URL.""" """Get banner image URL."""
if obj.banner_image and obj.banner_image.image: if obj.banner_image and obj.banner_image.image:
return obj.banner_image.image.url return obj.banner_image.image.public_url
return None return None
@extend_schema_field(serializers.URLField(allow_null=True)) @extend_schema_field(serializers.URLField(allow_null=True))
def get_card_image_url(self, obj): def get_card_image_url(self, obj):
"""Get card image URL.""" """Get card image URL."""
if obj.card_image and obj.card_image.image: if obj.card_image and obj.card_image.image:
return obj.card_image.image.url return obj.card_image.image.public_url
return None return None
@extend_schema_field(serializers.BooleanField()) @extend_schema_field(serializers.BooleanField())

View File

@@ -81,7 +81,7 @@ class RidePhotoOutputSerializer(serializers.ModelSerializer):
def get_image_url(self, obj): def get_image_url(self, obj):
"""Get the full Cloudflare Images URL.""" """Get the full Cloudflare Images URL."""
if obj.image: if obj.image:
return obj.image.url return obj.image.public_url
return None return None
@extend_schema_field( @extend_schema_field(
@@ -97,10 +97,10 @@ class RidePhotoOutputSerializer(serializers.ModelSerializer):
# Common variants for ride photos # Common variants for ride photos
variants = { variants = {
"thumbnail": f"{obj.image.url}/thumbnail", "thumbnail": f"{obj.image.public_url}/thumbnail",
"medium": f"{obj.image.url}/medium", "medium": f"{obj.image.public_url}/medium",
"large": f"{obj.image.url}/large", "large": f"{obj.image.public_url}/large",
"public": f"{obj.image.url}/public", "public": f"{obj.image.public_url}/public",
} }
return variants return variants
@@ -481,14 +481,14 @@ class HybridRideSerializer(serializers.ModelSerializer):
def get_banner_image_url(self, obj): def get_banner_image_url(self, obj):
"""Get banner image URL.""" """Get banner image URL."""
if obj.banner_image and obj.banner_image.image: if obj.banner_image and obj.banner_image.image:
return obj.banner_image.image.url return obj.banner_image.image.public_url
return None return None
@extend_schema_field(serializers.URLField(allow_null=True)) @extend_schema_field(serializers.URLField(allow_null=True))
def get_card_image_url(self, obj): def get_card_image_url(self, obj):
"""Get card image URL.""" """Get card image URL."""
if obj.card_image and obj.card_image.image: if obj.card_image and obj.card_image.image:
return obj.card_image.image.url return obj.card_image.image.public_url
return None return None
# Computed property # Computed property

View File

@@ -59,7 +59,7 @@ class RideModelPhotoOutputSerializer(serializers.Serializer):
def get_image_url(self, obj): def get_image_url(self, obj):
"""Get the image URL.""" """Get the image URL."""
if obj.image: if obj.image:
return obj.image.url return obj.image.public_url
return None return None

View File

@@ -265,13 +265,13 @@ class RideDetailOutputSerializer(serializers.Serializer):
return [ return [
{ {
"id": photo.id, "id": photo.id,
"image_url": photo.image.url if photo.image else None, "image_url": photo.image.public_url if photo.image else None,
"image_variants": ( "image_variants": (
{ {
"thumbnail": (f"{photo.image.url}/thumbnail" if photo.image else None), "thumbnail": (f"{photo.image.public_url}/thumbnail" if photo.image else None),
"medium": f"{photo.image.url}/medium" if photo.image else None, "medium": f"{photo.image.public_url}/medium" if photo.image else None,
"large": f"{photo.image.url}/large" if photo.image else None, "large": f"{photo.image.public_url}/large" if photo.image else None,
"public": f"{photo.image.url}/public" if photo.image else None, "public": f"{photo.image.public_url}/public" if photo.image else None,
} }
if photo.image if photo.image
else {} else {}
@@ -295,12 +295,12 @@ class RideDetailOutputSerializer(serializers.Serializer):
if photo and photo.image: if photo and photo.image:
return { return {
"id": photo.id, "id": photo.id,
"image_url": photo.image.url, "image_url": photo.image.public_url,
"image_variants": { "image_variants": {
"thumbnail": f"{photo.image.url}/thumbnail", "thumbnail": f"{photo.image.public_url}/thumbnail",
"medium": f"{photo.image.url}/medium", "medium": f"{photo.image.public_url}/medium",
"large": f"{photo.image.url}/large", "large": f"{photo.image.public_url}/large",
"public": f"{photo.image.url}/public", "public": f"{photo.image.public_url}/public",
}, },
"caption": photo.caption, "caption": photo.caption,
"alt_text": photo.alt_text, "alt_text": photo.alt_text,
@@ -318,12 +318,12 @@ class RideDetailOutputSerializer(serializers.Serializer):
if obj.banner_image and obj.banner_image.image: if obj.banner_image and obj.banner_image.image:
return { return {
"id": obj.banner_image.id, "id": obj.banner_image.id,
"image_url": obj.banner_image.image.url, "image_url": obj.banner_image.image.public_url,
"image_variants": { "image_variants": {
"thumbnail": f"{obj.banner_image.image.url}/thumbnail", "thumbnail": f"{obj.banner_image.image.public_url}/thumbnail",
"medium": f"{obj.banner_image.image.url}/medium", "medium": f"{obj.banner_image.image.public_url}/medium",
"large": f"{obj.banner_image.image.url}/large", "large": f"{obj.banner_image.image.public_url}/large",
"public": f"{obj.banner_image.image.url}/public", "public": f"{obj.banner_image.image.public_url}/public",
}, },
"caption": obj.banner_image.caption, "caption": obj.banner_image.caption,
"alt_text": obj.banner_image.alt_text, "alt_text": obj.banner_image.alt_text,
@@ -343,12 +343,12 @@ class RideDetailOutputSerializer(serializers.Serializer):
if latest_photo and latest_photo.image: if latest_photo and latest_photo.image:
return { return {
"id": latest_photo.id, "id": latest_photo.id,
"image_url": latest_photo.image.url, "image_url": latest_photo.image.public_url,
"image_variants": { "image_variants": {
"thumbnail": f"{latest_photo.image.url}/thumbnail", "thumbnail": f"{latest_photo.image.public_url}/thumbnail",
"medium": f"{latest_photo.image.url}/medium", "medium": f"{latest_photo.image.public_url}/medium",
"large": f"{latest_photo.image.url}/large", "large": f"{latest_photo.image.public_url}/large",
"public": f"{latest_photo.image.url}/public", "public": f"{latest_photo.image.public_url}/public",
}, },
"caption": latest_photo.caption, "caption": latest_photo.caption,
"alt_text": latest_photo.alt_text, "alt_text": latest_photo.alt_text,
@@ -367,12 +367,12 @@ class RideDetailOutputSerializer(serializers.Serializer):
if obj.card_image and obj.card_image.image: if obj.card_image and obj.card_image.image:
return { return {
"id": obj.card_image.id, "id": obj.card_image.id,
"image_url": obj.card_image.image.url, "image_url": obj.card_image.image.public_url,
"image_variants": { "image_variants": {
"thumbnail": f"{obj.card_image.image.url}/thumbnail", "thumbnail": f"{obj.card_image.image.public_url}/thumbnail",
"medium": f"{obj.card_image.image.url}/medium", "medium": f"{obj.card_image.image.public_url}/medium",
"large": f"{obj.card_image.image.url}/large", "large": f"{obj.card_image.image.public_url}/large",
"public": f"{obj.card_image.image.url}/public", "public": f"{obj.card_image.image.public_url}/public",
}, },
"caption": obj.card_image.caption, "caption": obj.card_image.caption,
"alt_text": obj.card_image.alt_text, "alt_text": obj.card_image.alt_text,
@@ -392,12 +392,12 @@ class RideDetailOutputSerializer(serializers.Serializer):
if latest_photo and latest_photo.image: if latest_photo and latest_photo.image:
return { return {
"id": latest_photo.id, "id": latest_photo.id,
"image_url": latest_photo.image.url, "image_url": latest_photo.image.public_url,
"image_variants": { "image_variants": {
"thumbnail": f"{latest_photo.image.url}/thumbnail", "thumbnail": f"{latest_photo.image.public_url}/thumbnail",
"medium": f"{latest_photo.image.url}/medium", "medium": f"{latest_photo.image.public_url}/medium",
"large": f"{latest_photo.image.url}/large", "large": f"{latest_photo.image.public_url}/large",
"public": f"{latest_photo.image.url}/public", "public": f"{latest_photo.image.public_url}/public",
}, },
"caption": latest_photo.caption, "caption": latest_photo.caption,
"alt_text": latest_photo.alt_text, "alt_text": latest_photo.alt_text,

View File

@@ -199,7 +199,7 @@ class TrendingService:
# Get card image URL # Get card image URL
card_image_url = "" card_image_url = ""
if park.card_image and hasattr(park.card_image, "image"): if park.card_image and hasattr(park.card_image, "image"):
card_image_url = park.card_image.image.url if park.card_image.image else "" card_image_url = park.card_image.image.public_url if park.card_image.image else ""
# Get primary company (operator) # Get primary company (operator)
primary_company = park.operator.name if park.operator else "" primary_company = park.operator.name if park.operator else ""
@@ -247,7 +247,7 @@ class TrendingService:
# Get card image URL # Get card image URL
card_image_url = "" card_image_url = ""
if ride.card_image and hasattr(ride.card_image, "image"): if ride.card_image and hasattr(ride.card_image, "image"):
card_image_url = ride.card_image.image.url if ride.card_image.image else "" card_image_url = ride.card_image.image.public_url if ride.card_image.image else ""
trending_rides.append( trending_rides.append(
{ {
@@ -450,7 +450,7 @@ class TrendingService:
# Get card image URL # Get card image URL
card_image_url = "" card_image_url = ""
if park.card_image and hasattr(park.card_image, "image"): if park.card_image and hasattr(park.card_image, "image"):
card_image_url = park.card_image.image.url if park.card_image.image else "" card_image_url = park.card_image.image.public_url if park.card_image.image else ""
# Get primary company (operator) # Get primary company (operator)
primary_company = park.operator.name if park.operator else "" primary_company = park.operator.name if park.operator else ""
@@ -506,7 +506,7 @@ class TrendingService:
# Get card image URL # Get card image URL
card_image_url = "" card_image_url = ""
if ride.card_image and hasattr(ride.card_image, "image"): if ride.card_image and hasattr(ride.card_image, "image"):
card_image_url = ride.card_image.image.url if ride.card_image.image else "" card_image_url = ride.card_image.image.public_url if ride.card_image.image else ""
results.append( results.append(
{ {

View File

@@ -142,7 +142,7 @@ def get_og_image(
try: try:
first_photo = instance.photos.first() first_photo = instance.photos.first()
if first_photo and hasattr(first_photo, "image"): if first_photo and hasattr(first_photo, "image"):
return urljoin(base_url, first_photo.image.url) return urljoin(base_url, first_photo.image.public_url)
except Exception: except Exception:
pass pass