forked from rc/aircox
code quality
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import random
|
||||
import json
|
||||
import random
|
||||
|
||||
from django import template
|
||||
from django.contrib.admin.templatetags.admin_urls import admin_urlname
|
||||
@ -11,16 +11,16 @@ random.seed()
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.filter(name='admin_url')
|
||||
@register.filter(name="admin_url")
|
||||
def do_admin_url(obj, arg, pass_id=True):
|
||||
""" Reverse admin url for object """
|
||||
"""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')
|
||||
@register.filter(name="get_tracks")
|
||||
def do_get_tracks(obj):
|
||||
""" Get a list of track for the provided log, diffusion, or episode """
|
||||
"""Get a list of track for the provided log, diffusion, or episode."""
|
||||
if isinstance(obj, Log):
|
||||
return (obj.track,)
|
||||
|
||||
@ -29,65 +29,71 @@ def do_get_tracks(obj):
|
||||
return obj.track_set.all()
|
||||
|
||||
|
||||
@register.simple_tag(name='has_perm', takes_context=True)
|
||||
@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]')`` """
|
||||
"""Return True if ``user.has_perm('[APP].[perm]_[MODEL]')``"""
|
||||
if user is None:
|
||||
user = context['request'].user
|
||||
return user.has_perm('{}.{}_{}'.format(
|
||||
obj._meta.app_label, perm, obj._meta.model_name))
|
||||
user = context["request"].user
|
||||
return user.has_perm(
|
||||
"{}.{}_{}".format(obj._meta.app_label, perm, obj._meta.model_name)
|
||||
)
|
||||
|
||||
|
||||
@register.filter(name='is_diffusion')
|
||||
@register.filter(name="is_diffusion")
|
||||
def do_is_diffusion(obj):
|
||||
""" Return True if object is a Diffusion. """
|
||||
"""Return True if object is a Diffusion."""
|
||||
return isinstance(obj, Diffusion)
|
||||
|
||||
|
||||
@register.filter(name='json')
|
||||
@register.filter(name="json")
|
||||
def do_json(obj, fields=""):
|
||||
""" Return object as json """
|
||||
"""Return object as json."""
|
||||
if fields:
|
||||
obj = {k: getattr(obj, k, None)
|
||||
for k in ','.split(fields)}
|
||||
obj = {k: getattr(obj, k, None) for k in ",".split(fields)}
|
||||
return json.dumps(obj)
|
||||
|
||||
|
||||
@register.simple_tag(name='player_live_attr', takes_context=True)
|
||||
@register.simple_tag(name="player_live_attr", takes_context=True)
|
||||
def do_player_live_attr(context):
|
||||
""" Player 'live-args' attribute value """
|
||||
station = getattr(context['request'], 'station', None)
|
||||
return json.dumps({
|
||||
'url': reverse('api:live'),
|
||||
'src': station and station.audio_streams.split('\n')
|
||||
})
|
||||
"""Player 'live-args' attribute value."""
|
||||
station = getattr(context["request"], "station", None)
|
||||
return json.dumps(
|
||||
{
|
||||
"url": reverse("api:live"),
|
||||
"src": station and station.audio_streams.split("\n"),
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@register.simple_tag(name='nav_items', takes_context=True)
|
||||
@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)]
|
||||
"""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')
|
||||
@register.simple_tag(name="update_query")
|
||||
def do_update_query(obj, **kwargs):
|
||||
""" Replace provided querydict's values with **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]
|
||||
obj[k] = list(v) if hasattr(v, "__iter__") else [v]
|
||||
elif k in obj:
|
||||
obj.pop(k)
|
||||
return obj
|
||||
|
||||
|
||||
@register.filter(name='verbose_name')
|
||||
@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
|
||||
"""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
|
||||
)
|
||||
|
@ -1,63 +1,65 @@
|
||||
import json
|
||||
|
||||
from django import template
|
||||
from django.contrib import admin
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from aircox.serializers.admin import UserSettingsSerializer
|
||||
|
||||
|
||||
__all__ = ('register', 'do_get_admin_tools', 'do_track_inline_data')
|
||||
__all__ = ("register", "do_get_admin_tools", "do_track_inline_data")
|
||||
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.simple_tag(name='get_admin_tools')
|
||||
@register.simple_tag(name="get_admin_tools")
|
||||
def do_get_admin_tools():
|
||||
return admin.site.get_tools()
|
||||
|
||||
|
||||
@register.simple_tag(name='track_inline_data', takes_context=True)
|
||||
@register.simple_tag(name="track_inline_data", takes_context=True)
|
||||
def do_track_inline_data(context, formset):
|
||||
"""
|
||||
Return initial data for playlist editor as dict. Keys are:
|
||||
"""Return initial data for playlist editor as dict. Keys are:
|
||||
|
||||
- ``items``: list of items. Extra keys:
|
||||
- ``__error__``: dict of form fields errors
|
||||
- ``settings``: user's settings
|
||||
"""
|
||||
items = []
|
||||
for form in formset.forms:
|
||||
item = {name: form[name].value()
|
||||
for name in form.fields.keys()}
|
||||
item['__errors__'] = form.errors
|
||||
item = {name: form[name].value() for name in form.fields.keys()}
|
||||
item["__errors__"] = form.errors
|
||||
|
||||
# hack for playlist editor
|
||||
tags = item.get('tags')
|
||||
tags = item.get("tags")
|
||||
if tags and not isinstance(tags, str):
|
||||
item['tags'] = ', '.join(tag.name for tag in tags)
|
||||
item["tags"] = ", ".join(tag.name for tag in tags)
|
||||
items.append(item)
|
||||
|
||||
data = {"items": items}
|
||||
user = context['request'].user
|
||||
settings = getattr(user, 'aircox_settings', None)
|
||||
data['settings'] = settings and UserSettingsSerializer(settings).data
|
||||
user = context["request"].user
|
||||
settings = getattr(user, "aircox_settings", None)
|
||||
data["settings"] = settings and UserSettingsSerializer(settings).data
|
||||
source = json.dumps(data)
|
||||
return source
|
||||
|
||||
|
||||
track_inline_labels_ = {
|
||||
'artist': _('Artist'), 'album': _('Album'), 'title': _('Title'),
|
||||
'tags': _('Tags'), 'year': _('Year'),
|
||||
'save_settings': _('Save Settings'),
|
||||
'discard_changes': _('Discard changes'),
|
||||
'columns': _('Columns'),
|
||||
'add_track': _('Add a track'),
|
||||
'remove_track': _('Remove'),
|
||||
'timestamp': _('Timestamp'),
|
||||
"artist": _("Artist"),
|
||||
"album": _("Album"),
|
||||
"title": _("Title"),
|
||||
"tags": _("Tags"),
|
||||
"year": _("Year"),
|
||||
"save_settings": _("Save Settings"),
|
||||
"discard_changes": _("Discard changes"),
|
||||
"columns": _("Columns"),
|
||||
"add_track": _("Add a track"),
|
||||
"remove_track": _("Remove"),
|
||||
"timestamp": _("Timestamp"),
|
||||
}
|
||||
|
||||
|
||||
@register.simple_tag(name='track_inline_labels')
|
||||
@register.simple_tag(name="track_inline_labels")
|
||||
def do_track_inline_labels():
|
||||
""" Return labels for columns in playlist editor as dict """
|
||||
"""Return labels for columns in playlist editor as dict."""
|
||||
return json.dumps({k: str(v) for k, v in track_inline_labels_.items()})
|
||||
|
Reference in New Issue
Block a user