When a book fails to open, a '!' button appears next to it in the list. Clicking it prompts for the original file; the file is re-encrypted with the current key and replaces the broken ciphertext on the server while keeping all metadata, progress, highlights and bookmarks intact. - Add POST /books/<pk>/replace-data/ endpoint (updates data only) - Add _evictCachedBook() to clear IndexedDB cache for a single book - Replace complex client-side re-encryption on password change with a simple confirm() warning that books will need to be re-uploaded Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
14 lines
709 B
Python
14 lines
709 B
Python
from django.urls import path
|
|
from . import views
|
|
|
|
urlpatterns = [
|
|
path('', views.book_list, name='book_list'),
|
|
path('upload/', views.upload_book, name='upload_book'),
|
|
path('<int:pk>/data/', views.get_book_data, name='get_book_data'),
|
|
path('<int:pk>/delete/', views.delete_book, name='delete_book'),
|
|
path('<int:pk>/replace-data/', views.replace_book_data, name='replace_book_data'),
|
|
path('<int:pk>/rekey/', views.rekey_book, name='rekey_book'),
|
|
path('<int:pk>/progress/', views.save_progress, name='save_book_progress'),
|
|
path('<int:pk>/highlights/', views.book_highlights, name='book_highlights'),
|
|
path('<int:pk>/bookmarks/', views.book_bookmarks, name='book_bookmarks'),
|
|
]
|