Display other videos in playlist
This commit is contained in:
parent
467e8001d8
commit
2dd7b7c89d
3 changed files with 73 additions and 35 deletions
20
frontend/templatetags/playlists.py
Normal file
20
frontend/templatetags/playlists.py
Normal 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)
|
|
@ -40,7 +40,8 @@
|
||||||
</li>
|
</li>
|
||||||
{% if page_obj.has_next %}
|
{% if page_obj.has_next %}
|
||||||
<li class="page-item">
|
<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">
|
<li class="page-item">
|
||||||
<a class="page-link" href="?page={{page_obj.paginator.num_pages}}">Last</a>
|
<a class="page-link" href="?page={{page_obj.paginator.num_pages}}">Last</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
{% extends "frontend/base.html" %}
|
{% extends "frontend/base.html" %}
|
||||||
{% load random %}
|
{% load random %}
|
||||||
|
{% load playlists %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<section class="portfolio-block project">
|
<section class="portfolio-block project">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="heading">
|
<div class="heading">
|
||||||
<h2>{{object.title}}</h2>
|
<h2>{{object.title}}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="image"><video controls poster="{{object.get_thumbnail_url}}" src="{{object.get_video_url}}" width="100%" height="100%"></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="row">
|
||||||
<div class="col-12 col-md-6 offset-md-1 info">
|
<div class="col-12 col-md-6 offset-md-1 info">
|
||||||
<h3>Description</h3>
|
<h3>Description</h3>
|
||||||
|
@ -24,13 +26,28 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</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">
|
<div class="more-projects">
|
||||||
<h3 class="text-center">Random Videos</h3>
|
<h3 class="text-center">Random Videos</h3>
|
||||||
<div class="row gallery">
|
<div class="row gallery">
|
||||||
{% random_videos as suggestions %}
|
{% random_videos as suggestions %}
|
||||||
{% for video in suggestions %}
|
{% for video in suggestions %}
|
||||||
<div class="col-md-4 col-lg-3">
|
<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 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>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue