forked from rc/aircox
- various __all__
- serializer: track search, reorder module files - autocomplete: allow simple string value selection - playlist editor: - ui & flow improve - init data - save user settings - autocomplete - fix bugs - discard changes
This commit is contained in:
@ -1,5 +1,14 @@
|
||||
import json
|
||||
from django import template
|
||||
from django.contrib import admin
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import gettext_lazy as _, gettext as __
|
||||
|
||||
from aircox.serializers.admin import UserSettingsSerializer
|
||||
|
||||
|
||||
__all__ = ('register', 'do_get_admin_tools', 'do_track_inline_data',
|
||||
'do_track_inline_column_labels')
|
||||
|
||||
|
||||
register = template.Library()
|
||||
@ -10,8 +19,14 @@ def do_get_admin_tools():
|
||||
return admin.site.get_tools()
|
||||
|
||||
|
||||
@register.filter(name='inline_data')
|
||||
def do_inline_data(formset):
|
||||
@register.simple_tag(name='track_inline_data', takes_context=True)
|
||||
def do_track_inline_data(context, formset, safe_string=False):
|
||||
"""
|
||||
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()
|
||||
@ -23,5 +38,23 @@ def do_inline_data(formset):
|
||||
if tags and not isinstance(tags, str):
|
||||
item['tags'] = ', '.join(tag.name for tag in tags)
|
||||
items.append(item)
|
||||
return {"items": items}
|
||||
|
||||
|
||||
data = {"items": items}
|
||||
user = context['request'].user
|
||||
settings = getattr(user, 'aircox_settings', None)
|
||||
data['settings'] = settings and UserSettingsSerializer(settings).data
|
||||
source = json.dumps(data)
|
||||
return safe_string and mark_safe(source) or source
|
||||
|
||||
|
||||
@register.simple_tag(name='track_inline_labels')
|
||||
def do_track_inline_labels():
|
||||
""" Return labels for columns in playlist editor as dict """
|
||||
return json.dumps({
|
||||
'artist': __('Artist'), 'album': __('Album'), 'title': __('Title'),
|
||||
'tags': __('Tags'), 'year': __('Year'),
|
||||
'save_settings': __('Save Settings'),
|
||||
'discard_changes': __('Discard changes'),
|
||||
'columns': __('Columns'),
|
||||
})
|
||||
|
||||
|
Reference in New Issue
Block a user