code quality

This commit is contained in:
bkfox
2023-03-13 17:47:00 +01:00
parent 934817da8a
commit 112770eddf
162 changed files with 4798 additions and 4069 deletions

View File

@ -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
)

View File

@ -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()})