33 lines
888 B
Python
33 lines
888 B
Python
from random import choices
|
|
|
|
from django import template
|
|
|
|
from backend.models import Playlist
|
|
|
|
|
|
register = template.Library()
|
|
|
|
|
|
@register.simple_tag
|
|
def other_videos(playlist, video):
|
|
videos = playlist.videos.all().order_by("-published")
|
|
|
|
older = sorted(
|
|
list(videos.filter(published__lt=video.published)), key=lambda x: x.published)
|
|
newer = sorted(
|
|
list(videos.filter(published__gt=video.published)), key=lambda x: x.published)
|
|
|
|
len_newer = min(3 if older else 4, len(newer))
|
|
len_older = min(4 - len_newer, len(older))
|
|
|
|
newer_out = newer[:len_newer]
|
|
older_out = older[-len_older:]
|
|
|
|
return sorted(older_out + newer_out, key=lambda x: x.published)
|
|
|
|
@register.simple_tag
|
|
def next_video(playlist, video):
|
|
try:
|
|
return playlist.videos.filter(published__gt=video.published).order_by('published').first()
|
|
except:
|
|
return None |