fnp
/
wolnelektury.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
8753250
)
sync data in api
author
Radek Czajka
<rczajka@rczajka.pl>
Wed, 12 Nov 2025 11:13:42 +0000
(12:13 +0100)
committer
Radek Czajka
<rczajka@rczajka.pl>
Wed, 12 Nov 2025 11:13:42 +0000
(12:13 +0100)
src/catalogue/api/serializers.py
patch
|
blob
|
history
src/catalogue/api/urls2.py
patch
|
blob
|
history
src/catalogue/api/views.py
patch
|
blob
|
history
src/catalogue/models/book.py
patch
|
blob
|
history
diff --git
a/src/catalogue/api/serializers.py
b/src/catalogue/api/serializers.py
index
609fa74
..
617ebe8
100644
(file)
--- a/
src/catalogue/api/serializers.py
+++ b/
src/catalogue/api/serializers.py
@@
-169,7
+169,7
@@
class BookSerializer2(serializers.ModelSerializer):
'cover_thumb', 'cover',
'isbn_pdf', 'isbn_epub', 'isbn_mobi',
'abstract',
'cover_thumb', 'cover',
'isbn_pdf', 'isbn_epub', 'isbn_mobi',
'abstract',
- 'has_mp3_file',
+ 'has_mp3_file',
'has_sync_file',
]
class BookSerializer11Labs(serializers.ModelSerializer):
]
class BookSerializer11Labs(serializers.ModelSerializer):
diff --git
a/src/catalogue/api/urls2.py
b/src/catalogue/api/urls2.py
index
ad96d7a
..
46f2a36
100644
(file)
--- a/
src/catalogue/api/urls2.py
+++ b/
src/catalogue/api/urls2.py
@@
-28,6
+28,9
@@
urlpatterns = [
),
path('books/<slug:slug>.json',
views.BookJsonView.as_view()),
),
path('books/<slug:slug>.json',
views.BookJsonView.as_view()),
+ path('books/<slug:slug>/sync/',
+ views.BookSyncView.as_view()
+ ),
path('suggested-tags/',
piwik_track_view(views.SuggestedTags.as_view()),
path('suggested-tags/',
piwik_track_view(views.SuggestedTags.as_view()),
diff --git
a/src/catalogue/api/views.py
b/src/catalogue/api/views.py
index
ed5d10f
..
941b122
100644
(file)
--- a/
src/catalogue/api/views.py
+++ b/
src/catalogue/api/views.py
@@
-251,6
+251,15
@@
class BookDetail2(RetrieveAPIView):
serializer_class = serializers.BookSerializer2
serializer_class = serializers.BookSerializer2
+class BookSyncView(RetrieveAPIView):
+ queryset = Book.objects.all()
+ lookup_field = 'slug'
+
+ def retrieve(self, request, *args, **kwargs):
+ instance = self.get_object()
+ return Response(json.loads(instance.get_sync()))
+
+
@vary_on_auth # Because of embargo links.
class EbookList(BookList):
serializer_class = serializers.EbookSerializer
@vary_on_auth # Because of embargo links.
class EbookList(BookList):
serializer_class = serializers.EbookSerializer
@@
-546,6
+555,7
@@
class BookMediaView(ListAPIView):
from .tojson import conv
from lxml import etree
from rest_framework.views import APIView
from .tojson import conv
from lxml import etree
from rest_framework.views import APIView
+
class BookJsonView(APIView):
def get(self, request, slug):
book = get_object_or_404(Book, slug=slug)
class BookJsonView(APIView):
def get(self, request, slug):
book = get_object_or_404(Book, slug=slug)
diff --git
a/src/catalogue/models/book.py
b/src/catalogue/models/book.py
index
b2148e6
..
35ca3c1
100644
(file)
--- a/
src/catalogue/models/book.py
+++ b/
src/catalogue/models/book.py
@@
-473,6
+473,8
@@
class Book(models.Model):
def get_sync(self):
def get_sync(self):
+ if not self.has_sync_file():
+ return '[]'
with self.get_media('sync').first().file.open('r') as f:
sync = f.read().split('\n')
offset = float(sync[0])
with self.get_media('sync').first().file.open('r') as f:
sync = f.read().split('\n')
offset = float(sync[0])