work on player

This commit is contained in:
bkfox
2020-10-22 00:30:02 +02:00
parent c10a114393
commit 2a0d0b1758
50 changed files with 19630 additions and 2193 deletions

View File

@ -1,4 +1,5 @@
import random
import json
from django import template
@ -8,32 +9,6 @@ random.seed()
register = template.Library()
@register.filter(name='verbose_name')
def do_verbose_name(obj, plural=False):
"""
Return model's verbose name (singular or plural) or `obj` if it is a
string (can act for default values).
"""
return obj if isinstance(obj, str) else \
obj._meta.verbose_name_plural if plural else \
obj._meta.verbose_name
@register.simple_tag(name='update_query')
def do_update_query(obj, **kwargs):
""" Replace provided querydict's values with **kwargs. """
for k, v in kwargs.items():
if v is not None:
obj[k] = list(v) if hasattr(v, '__iter__') else [v]
elif k in obj:
obj.pop(k)
return obj
@register.filter(name='is_diffusion')
def do_is_diffusion(obj):
return isinstance(obj, Diffusion)
@register.filter(name='get_tracks')
def do_get_tracks(obj):
""" Get a list of track for the provided log, diffusion, or episode """
@ -44,20 +19,42 @@ def do_get_tracks(obj):
obj = obj.episode
return obj.track_set.all()
@register.filter(name='is_diffusion')
def do_is_diffusion(obj):
""" Return True if object is a Diffusion. """
return isinstance(obj, Diffusion)
@register.filter(name='json')
def do_json(obj,fields=""):
""" Return object as json """
if fields:
obj = { k: getattr(obj,k,None) for k in ','.split(fields) }
return json.dumps(obj)
@register.simple_tag(name='nav_items', takes_context=True)
def do_nav_items(context, menu, **kwargs):
""" Render navigation items for the provided menu name. """
station, request = context['station'], context['request']
return [(item, item.render(request, **kwargs))
for item in station.navitem_set.filter(menu=menu)]
@register.simple_tag(name='update_query')
def do_update_query(obj, **kwargs):
""" Replace provided querydict's values with **kwargs. """
for k, v in kwargs.items():
if v is not None:
obj[k] = list(v) if hasattr(v, '__iter__') else [v]
elif k in obj:
obj.pop(k)
return obj
# FIXME: used?
@register.simple_tag(name='unique_id')
def do_unique_id(prefix=''):
value = str(random.random()).replace('.', '')
return prefix + '_' + value if prefix else value
@register.filter(name='verbose_name')
def do_verbose_name(obj, plural=False):
"""
Return model's verbose name (singular or plural) or `obj` if it is a
string (can act for default values).
"""
return obj if isinstance(obj, str) else \
obj._meta.verbose_name_plural if plural else \
obj._meta.verbose_name