]> git.parisson.com Git - teleforma.git/commitdiff
add media.poster_url, update poster urls
authorGuillaume Pellerin <guillaume.pellerin@parisson.com>
Tue, 4 Aug 2026 13:12:22 +0000 (15:12 +0200)
committerGuillaume Pellerin <guillaume.pellerin@parisson.com>
Tue, 4 Aug 2026 13:12:22 +0000 (15:12 +0200)
teleforma/models/core.py
teleforma/templates/teleforma/course_media.html
teleforma/templates/teleforma/inc/media_list.html
teleforma/views/core.py

index 3447b199b5c50650b25fd9cb56d972d128a3554b..8f957f9c194f547364064627ffe20810d91f6dde 100644 (file)
@@ -458,6 +458,7 @@ class Conference(models.Model):
     notified = models.BooleanField(_('notified'), default=False)
     notified_live = models.BooleanField("Notifié live", default=False)
     imported = models.BooleanField(_('imported'), default=False)
+    s3_exported = models.BooleanField(_('S3 exported'), default=False)
     test = models.BooleanField(_('test'), default=False)
 
     @property
@@ -1068,6 +1069,14 @@ class Media(MediaBase):
         max_length=255,
         null=True,
         blank=False)
+    poster_file_s3 = models.FileField(
+        _('poster S3 file'),
+        upload_to='items/%Y/%m/%d',
+        max_length=1024,
+        null=True,
+        blank=True,
+        storage=media_storage,
+        )
     duration = models.DurationField(
         _("duration"),
         blank=True,
@@ -1108,12 +1117,11 @@ class Media(MediaBase):
             self.set_duration()
         super(Media, self).save(**kwargs)
 
-    def poster_url(self, geometry='640'):
-        url = ''
-        if self.poster_file:
-            url = sorl_default.backend.get_thumbnail(
-                self.poster_file, geometry).url
-        return url
+    def poster_url(self):
+        poster_file = self.get_poster_file()
+        if poster_file:
+            return poster_file.url
+        return ""
 
     def get_file(self):
         if self.file_s3:
@@ -1123,6 +1131,14 @@ class Media(MediaBase):
         else:
             return None
 
+    def get_poster_file(self):
+        if self.poster_file_s3:
+            return self.poster_file_s3
+        elif self.poster_file:
+            return self.poster_file
+        else:
+            return None
+
     def set_duration(self):
         result = subprocess.run(["ffprobe", "-v", "error", "-show_entries",
                              "format=duration", "-of",
index 83c173afcf69df709964a40e9cd55dcbc8a2201a..3ac0723770d33a16eb5ee3fd1bfb8e13ea2e7b30 100644 (file)
@@ -50,18 +50,6 @@ $(document).ready(function(){
 
 {% endblock extra_javascript %}
 
-{% comment %}
-{% block module-action %}
-    {% if media.file and media.conference.status == 3 or user.is_superuser or user.is_staff %}
-        {% if not "video" in media.mime_type or request.user_agent.os.family == 'iOS' %}
-            <div class="module_action">
-                <a href="{{ MEDIA_URL }}{{ media.item.file }}" class="component_icon button" id="action_red" download><img src="/static/teleforma/images/download_media.png" alt="" style="vertical-align:middle" />&nbsp;{% trans "Download" %}</a>
-            </div>
-        {% endif %}
-    {% endif %}
-{% endblock module-action %}
-{% endcomment %}
-
 {% block course %}
 <div class="course_media">
 
@@ -100,7 +88,11 @@ $(document).ready(function(){
         width="100%"
         height="auto"
         data-setup='{"playbackRates": [1, 1.25, 1.5, 2]}'
-        {% if media.poster_file %}{% thumbnail media.poster_file '640' as im %}poster="{{ im.url }}"{% endthumbnail %}{% endif %}
+        {% if media.poster_url %}
+            {% thumbnail media.poster_url '640' as im %}
+                poster="{{ im.url }}"
+            {% endthumbnail %}
+        {% endif %}
         >
             <source src="{% url 'teleforma-media-stream' period.id media.id %}" type="{{ media.mime_type }}" />
         <p class="vjs-no-js">
@@ -128,7 +120,7 @@ $(document).ready(function(){
 <div style="margin-top:1em;">
 {% if media.poster_file %}
 
-   {% thumbnail media.poster_file "300" as im %}
+   {% thumbnail media.poster_url "300" as im %}
     <img src="{{ im.url }}" width="300px" alt="preview" />
    {% endthumbnail %}
 
index 3738c884e5f5dc0528fa3f80d56fbd732a9132d3..d72596f49c7fa2d3c4e79251f3ce2b2abab3dc87 100644 (file)
@@ -17,7 +17,7 @@
             <td {% if forloop.first %}class="border-top"{% endif %} width="230px" style="vertical-align:middle">
             <a href="{% url 'teleforma-media-detail' period.id conference.video.id %}" title="{% trans "Play" %}">
             {% if conference.video.poster_file %}
-               {% thumbnail conference.video.poster_file "168x96" as im %}
+               {% thumbnail conference.video.poster_url "168x96" as im %}
                 <div style="background: no-repeat url('{{ im.url }}') 0 1px; background-size: 100%; background-color: #dfdfdf;">
                  <img src="/static/teleforma/images/play_168.png" width="100%" alt="{% trans 'Click here' %}" />
                 </div>
index 948a5ac2f32a151fc1b39bb2e6dea47d2f3e167d..08186d99f024d4fe316f59953a4fe07e26be19d3 100644 (file)
@@ -676,6 +676,7 @@ class MediaView(CourseAccessMixin, DetailView):
         context['mime_type'] = media.mime_type
         context['course'] = course
         context['type'] = course_type
+
         # context['notes'] = media.notes.all().filter(author=self.request.user)
         content_type = ContentType.objects.get(
             app_label="teleforma", model="course")