Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added src/apps/core/static/img/default_thumbnail.png
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Est-ce possible de mettre l'image par défaut en svg plutot que png ?

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/apps/video/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ class VideoConfig(BaseSettings):
)

# --- Media Defaults ---
default_thumbnail: str = Field(
default_thumbnail: str | None = Field(
default=defaults.DEFAULT_THUMBNAIL,
description="Path to the default video thumbnail.",
)
Expand Down
8 changes: 7 additions & 1 deletion src/apps/video/models/Video.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,13 @@ def thumbnail_url(self):
"""Returns the thumbnail URL or the default one if it doesn't exist."""
if self.thumbnail and hasattr(self.thumbnail, "url"):
return self.thumbnail.url
return video_settings.default_thumbnail

if self.overview and hasattr(self.overview, "url"):
return self.overview.url

from django.templatetags.static import static

return static(video_settings.default_thumbnail or "img/default_thumbnail.png")

def get_tag_list(self):
"""Returns the tags as a comma-separated string."""
Expand Down
16 changes: 15 additions & 1 deletion src/apps/video/serializers/VideoSerializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

from django.contrib.auth import get_user_model
from rest_framework import serializers
from drf_spectacular.utils import extend_schema_field
from src.apps.video.models import Video, Type, Discipline
from .SubtitleSerializer import SubtitleSerializer
from django.contrib.auth.hashers import make_password
Expand Down Expand Up @@ -39,7 +40,7 @@ class VideoSerializer(serializers.ModelSerializer):
created_at = serializers.DateTimeField(read_only=True)
updated_at = serializers.DateTimeField(read_only=True)
date_to_delete = serializers.DateField(required=False, allow_null=True)
thumbnail_url = serializers.ReadOnlyField()
thumbnail_url = serializers.SerializerMethodField()
type_id = serializers.PrimaryKeyRelatedField(
queryset=Type.objects.all(), source="type", write_only=True, required=False
)
Expand Down Expand Up @@ -112,6 +113,19 @@ def get_encodings(self, obj):
"""Returns a list of available encoded resolutions (e.g., ['1080p', '720p'])."""
return [enc.resolution for enc in obj.encodings.all()]

@extend_schema_field(serializers.URLField(allow_null=True))
def get_thumbnail_url(self, obj):
"""Returns the absolute URL of the video thumbnail."""
request = self.context.get("request")
url = obj.thumbnail_url
if (
url
and request
and not (url.startswith("http://") or url.startswith("https://"))
):
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

est-ce qu'on peut simplifier en mettant simplement and not url.startswith("http") ?

return request.build_absolute_uri(url)
return url

def validate_password(self, value):
"""Hashes the password if it is provided."""
if value:
Expand Down
2 changes: 1 addition & 1 deletion src/config/defaults/video.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"TITLE_ETB": "University name",
}

DEFAULT_THUMBNAIL = "img/default.svg"
DEFAULT_THUMBNAIL = "img/default_thumbnail.png"
DEFAULT_TYPE_ID = 1

ACCOMMODATION_YEARS = {}
Expand Down
Loading