$def with (lst, new=False, admin_only=False)
$putctx('cssfile', 'list-edit')
$var title: $(_("Create a list") if new else _("Editing list: %(list_name)s", list_name=lst.name))
$putctx("robots", "noindex,nofollow")
$ can_save = True
$if admin_only:
$ can_save = (ctx.user and ctx.user.is_admin())
$:macros.databarEdit(lst)
$(_("Create a list") if new else _("Edit List"))
$if admin_only:
$_("⚠️ Saving global lists is admin-only while the feature is under development.")
$# Render the ith seed input field
$jsdef render_seed_field(i, seed):
$# seed['key'] errors in python; seed.get('key') errors in js. So need
$# to run different code on the server and client.
$if jsdef_get(seed, 'key') != None:
$ seed = { 'thing': seed, 'notes': '' }
$ key = ''
$if seed['thing']:
$ key = seed['thing']['key']
≡ #$(i + 1)
$# Displayed
$# Note: Cannot use "in" because this is a jsdef function
$if key:
$ prefix = key.split('/')[1]
$if prefix == 'works' or prefix == 'books':
$:lazy_thing_preview(key, 'render_lazy_work_preview')
$elif prefix == 'authors':
$:lazy_thing_preview(key, 'render_lazy_author_preview')
$else:
$key
$else:
$key
$# import the side-effect of the jsdef function
$:render_template('jsdef/LazyWorkPreview', None)
$:render_template('jsdef/LazyAuthorPreview', None)
$jsdef lazy_thing_preview(key, render_fn_name):