diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html
index 0e2fd5d3..fa098281 100644
--- a/bookwyrm/templates/book/book.html
+++ b/bookwyrm/templates/book/book.html
@@ -12,6 +12,15 @@
{% endblock %}
{% block content %}
+{% if update_error %}
+
diff --git a/bookwyrm/views/books/books.py b/bookwyrm/views/books/books.py
index ad7ee943..a010c300 100644
--- a/bookwyrm/views/books/books.py
+++ b/bookwyrm/views/books/books.py
@@ -12,7 +12,7 @@ from django.views.decorators.http import require_POST
from bookwyrm import forms, models
from bookwyrm.activitypub import ActivitypubResponse
-from bookwyrm.connectors import connector_manager
+from bookwyrm.connectors import connector_manager, ConnectorException
from bookwyrm.connectors.abstract_connector import get_image
from bookwyrm.settings import PAGE_LENGTH
from bookwyrm.views.helpers import is_api_request
@@ -22,7 +22,7 @@ from bookwyrm.views.helpers import is_api_request
class Book(View):
"""a book! this is the stuff"""
- def get(self, request, book_id, user_statuses=False):
+ def get(self, request, book_id, user_statuses=False, update_error=False):
"""info about a book"""
if is_api_request(request):
book = get_object_or_404(
@@ -80,6 +80,7 @@ class Book(View):
else None,
"rating": reviews.aggregate(Avg("rating"))["rating__avg"],
"lists": lists,
+ "update_error": update_error,
}
if request.user.is_authenticated:
@@ -191,6 +192,10 @@ def update_book_from_remote(request, book_id, connector_identifier):
)
book = get_object_or_404(models.Book.objects.select_subclasses(), id=book_id)
- connector.update_book_from_remote(book)
+ try:
+ connector.update_book_from_remote(book)
+ except ConnectorException:
+ # the remote source isn't available or doesn't know this book
+ return Book().get(request, book_id, update_error=True)
return redirect("book", book.id)