From: Radek Czajka Date: Tue, 13 Oct 2026 09:08:15 +0000 (+0200) Subject: Minor changes for app X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/c11903d6a57edc11137c8a7ebf7384da79f58267?ds=sidebyside Minor changes for app --- diff --git a/src/catalogue/api/tojson.py b/src/catalogue/api/tojson.py index b803e73da..d3b7ab539 100644 --- a/src/catalogue/api/tojson.py +++ b/src/catalogue/api/tojson.py @@ -3,6 +3,7 @@ import json import re from sys import argv from lxml import etree +from catalogue.utils import absolute_url, gallery_url tags = { 'utwor': ('_pass', False, None, None, None), @@ -123,7 +124,9 @@ tags = { 'wiersz': ('tr', False, None, None, None), 'kol': ('td', True, None, None, None), - 'ilustr': ('img', False, None, {'src': 'src'}, False), + 'ilustr': ('img', False, None, { + 'src': lambda e, S: absolute_url(gallery_url(S['slug'])) + e.attrib['src'].rsplit('/', 1)[-1], + }, False), 'tab': ('span', False, {'class': 'tab'}, {'szer': 'szer'}, False), } @@ -192,6 +195,8 @@ def toj(elem, S): for k, v in attr_map.items(): if v == '.text': val = elem.text + elif callable(v): + val = v(elem, S) else: val = elem.attrib[v] output['attr'][k] = val @@ -245,7 +250,7 @@ def toj(elem, S): return [] return output -def conv(tree): +def conv(tree, slug): S = { 'index': 0, 'vindex': 0, @@ -253,6 +258,7 @@ def conv(tree): 'stack': [], 'front1': [], 'front2': [], + 'slug': slug, } output = toj(tree.getroot(), S) if not len(output): return {} diff --git a/src/catalogue/api/views.py b/src/catalogue/api/views.py index 3449339e5..2d7fe7d29 100644 --- a/src/catalogue/api/views.py +++ b/src/catalogue/api/views.py @@ -584,5 +584,5 @@ from rest_framework.views import APIView class BookJsonView(APIView): def get(self, request, slug): book = get_object_or_404(Book, slug=slug) - js = conv(etree.parse(book.xml_file.path)) + js = conv(etree.parse(book.xml_file.path), slug) return JsonResponse(js, json_dumps_params={'ensure_ascii': False})