Languages edit widget for EM page

This commit is contained in:
Kovid Goyal 2018-03-14 10:40:24 +05:30
parent c088f7e818
commit d543c10f12
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 16 additions and 3 deletions

View File

@ -27,7 +27,7 @@ from calibre.srv.routes import endpoint, json
from calibre.srv.utils import get_library_data, get_use_roman
from calibre.utils.config import prefs, tweaks
from calibre.utils.icu import sort_key, numeric_sort_key
from calibre.utils.localization import get_lang
from calibre.utils.localization import get_lang, lang_map_for_ui
from calibre.utils.search_query_parser import ParseException
POSTABLE = frozenset({'GET', 'POST', 'HEAD'})
@ -387,11 +387,22 @@ def tag_browser(ctx, rd):
return rd.etagged_dynamic_response(etag, generate)
def all_lang_names():
ans = getattr(all_lang_names, 'ans', None)
if ans is None:
ans = all_lang_names.ans = tuple(sorted(lang_map_for_ui().itervalues(), key=numeric_sort_key))
return ans
@endpoint('/interface-data/field-names/{field}', postprocess=json)
def field_names(ctx, rd, field):
'''
Get a list of all names for the specified field
Optional: ?library_id=<default library>
'''
if field == 'languages':
ans = all_lang_names()
else:
db, library_id = get_library_data(ctx, rd)[:2]
return tuple(sorted(db.all_field_names(field), key=numeric_sort_key))
ans = tuple(sorted(db.all_field_names(field), key=numeric_sort_key))
return ans

View File

@ -256,6 +256,8 @@ def multiple_line_edit(list_to_ui, ui_to_list, container_id, book_id, field, fm,
name = fm.name or field
le = E.input(type='text', name=name.replace('#', '_c_'), style='width: 100%', oninput=line_edit_updated.bind(None, container_id, field))
val = (resolved_metadata(mi, field) or v'[]')
if field is 'languages':
val = [mi.lang_names[l] or l for l in val]
if list_to_ui:
val = val.join(list_to_ui)
le.value = val