Display other videos in playlist

This commit is contained in:
Kumi 2022-05-05 18:27:47 +02:00
parent 467e8001d8
commit 2dd7b7c89d
Signed by: kumi
GPG key ID: 5D1CE6AF1805ECA2
3 changed files with 73 additions and 35 deletions

View file

@ -0,0 +1,20 @@
from random import choices
from django import template
from backend.models import Playlist
register = template.Library()
@register.simple_tag
def other_videos(playlist, video, count=4):
videos = playlist.videos.all().order_by("-published")
older = list(videos.filter(published__lt=video.published))
newer = list(videos.filter(published__gt=video.published))
newer_out = newer[:count]
older_out = older[-count-len(newer_out):]
return sorted(older_out + newer_out, key=lambda x: x.published)

View file

@ -40,7 +40,8 @@
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{page_obj.next_page_number}}">{{page_obj.next_page_number}}</a></li>
<a class="page-link" href="?page={{page_obj.next_page_number}}">{{page_obj.next_page_number}}</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{page_obj.paginator.num_pages}}">Last</a>
</li>

View file

@ -1,40 +1,57 @@
{% extends "frontend/base.html" %}
{% load random %}
{% load playlists %}
{% block content %}
<section class="portfolio-block project">
<div class="container">
<div class="heading">
<h2>{{object.title}}</h2>
<section class="portfolio-block project">
<div class="container">
<div class="heading">
<h2>{{object.title}}</h2>
</div>
<div class="image"><video controls poster="{{object.get_thumbnail_url}}" src="{{object.get_video_url}}"
width="100%" height="100%"></div>
<div class="row">
<div class="col-12 col-md-6 offset-md-1 info">
<h3>Description</h3>
<p>{{object.description|linebreaksbr}}</p>
</div>
<div class="col-12 col-md-3 offset-md-1 meta">
<div class="tags"><span class="meta-heading">Tags</span>
{% for tag in object.tags %}
<a href="#">{{tag}}</a>
{% endfor %}
</div>
<div class="image"><video controls poster="{{object.get_thumbnail_url}}" src="{{object.get_video_url}}" width="100%" height="100%"></div>
<div class="row">
<div class="col-12 col-md-6 offset-md-1 info">
<h3>Description</h3>
<p>{{object.description|linebreaksbr}}</p>
</div>
<div class="col-12 col-md-3 offset-md-1 meta">
<div class="tags"><span class="meta-heading">Tags</span>
{% for tag in object.tags %}
<a href="#">{{tag}}</a>
{% endfor %}
</div>
<hr>
<div class="tags"><span class="meta-heading">Date</span>
{{ object.published.date }}
</div>
</div>
</div>
<div class="more-projects">
<h3 class="text-center">Random Videos</h3>
<div class="row gallery">
{% random_videos as suggestions %}
{% for video in suggestions %}
<div class="col-md-4 col-lg-3">
<div class="item"><a href="{{video.get_absolute_url}}"><img class="img-fluid scale-on-hover" src="{{video.get_thumbnail_url}}">{{video.title}}</a></div>
</div>
{% endfor %}
</div>
<hr>
<div class="tags"><span class="meta-heading">Date</span>
{{ object.published.date }}
</div>
</div>
</section>
{% endblock %}
</div>
{% for playlist in object.playlist_set.all %}
<div class="more-projects">
<h3 class="text-center">Other videos in {{playlist.title}}</h3>
<div class="row gallery">
{% other_videos playlist object as suggestions %}
{% for video in suggestions %}
<div class="col-md-4 col-lg-3">
<div class="item"><a href="{{video.get_absolute_url}}"><img class="img-fluid scale-on-hover"
src="{{video.get_thumbnail_url}}">{{video.title}}</a></div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
<div class="more-projects">
<h3 class="text-center">Random Videos</h3>
<div class="row gallery">
{% random_videos as suggestions %}
{% for video in suggestions %}
<div class="col-md-4 col-lg-3">
<div class="item"><a href="{{video.get_absolute_url}}"><img class="img-fluid scale-on-hover"
src="{{video.get_thumbnail_url}}">{{video.title}}</a></div>
</div>
{% endfor %}
</div>
</div>
</div>
</section>
{% endblock %}