forked from rc/aircox
- save & load
- key navigation - ui improvements
This commit is contained in:
@ -6,7 +6,7 @@ from django.contrib.admin.templatetags.admin_urls import admin_urlname
|
||||
from django.urls import reverse
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
from aircox.models import Page, Diffusion, Log
|
||||
from aircox.models import Diffusion, Log
|
||||
|
||||
random.seed()
|
||||
register = template.Library()
|
||||
@ -17,7 +17,8 @@ def do_admin_url(obj, arg, pass_id=True):
|
||||
""" Reverse admin url for object """
|
||||
name = admin_urlname(obj._meta, arg)
|
||||
return reverse(name, args=(obj.id,)) if pass_id else reverse(name)
|
||||
|
||||
|
||||
|
||||
@register.filter(name='get_tracks')
|
||||
def do_get_tracks(obj):
|
||||
""" Get a list of track for the provided log, diffusion, or episode """
|
||||
@ -28,6 +29,7 @@ def do_get_tracks(obj):
|
||||
obj = obj.episode
|
||||
return obj.track_set.all()
|
||||
|
||||
|
||||
@register.simple_tag(name='has_perm', takes_context=True)
|
||||
def do_has_perm(context, obj, perm, user=None):
|
||||
""" Return True if ``user.has_perm('[APP].[perm]_[MODEL]')`` """
|
||||
@ -36,17 +38,21 @@ def do_has_perm(context, obj, perm, user=None):
|
||||
return user.has_perm('{}.{}_{}'.format(
|
||||
obj._meta.app_label, perm, obj._meta.model_name))
|
||||
|
||||
|
||||
@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=""):
|
||||
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)
|
||||
obj = {k: getattr(obj, k, None)
|
||||
for k in ','.split(fields)}
|
||||
return mark_safe(json.dumps(obj))
|
||||
|
||||
|
||||
@register.simple_tag(name='nav_items', takes_context=True)
|
||||
def do_nav_items(context, menu, **kwargs):
|
||||
@ -55,6 +61,7 @@ def do_nav_items(context, menu, **kwargs):
|
||||
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. """
|
||||
@ -65,6 +72,7 @@ def do_update_query(obj, **kwargs):
|
||||
obj.pop(k)
|
||||
return obj
|
||||
|
||||
|
||||
@register.filter(name='verbose_name')
|
||||
def do_verbose_name(obj, plural=False):
|
||||
"""
|
||||
@ -72,6 +80,5 @@ def do_verbose_name(obj, plural=False):
|
||||
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
|
||||
|
||||
obj._meta.verbose_name_plural if plural else \
|
||||
obj._meta.verbose_name
|
||||
|
@ -1,16 +1,27 @@
|
||||
from django import template
|
||||
from django.contrib import admin
|
||||
|
||||
from ..serializers import AdminTrackSerializer
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.simple_tag(name='get_admin_tools')
|
||||
def do_get_admin_tools():
|
||||
return admin.site.get_tools()
|
||||
|
||||
|
||||
@register.filter(name='serialize_track')
|
||||
def do_serialize_track(instance):
|
||||
ser = AdminTrackSerializer(instance=instance)
|
||||
return ser.data
|
||||
@register.filter(name='inline_data')
|
||||
def do_inline_data(formset):
|
||||
items = []
|
||||
for form in formset.forms:
|
||||
item = {name: form[name].value()
|
||||
for name in form.fields.keys()}
|
||||
item['__errors__'] = form.errors
|
||||
|
||||
# hack for playlist editor
|
||||
tags = item.get('tags')
|
||||
if tags and not isinstance(tags, str):
|
||||
item['tags'] = ', '.join(tag.name for tag in tags)
|
||||
items.append(item)
|
||||
return {"items": items}
|
||||
|
||||
|
Reference in New Issue
Block a user