forked from mirrors/bookwyrm
Adds very simple author pages
This commit is contained in:
parent
0f1240ca1f
commit
964c56079c
5 changed files with 36 additions and 3 deletions
|
@ -19,11 +19,12 @@ def book_search(query):
|
|||
for doc in data['docs'][:5]:
|
||||
key = doc['key']
|
||||
key = key.split('/')[-1]
|
||||
author = doc.get('author_name') or ['Unknown']
|
||||
results.append({
|
||||
'title': doc.get('title'),
|
||||
'olkey': key,
|
||||
'year': doc.get('first_publish_year'),
|
||||
'author': doc.get('author_name')[0],
|
||||
'author': author[0],
|
||||
})
|
||||
return results
|
||||
|
||||
|
@ -68,7 +69,7 @@ def get_or_create_book(olkey, user=None, update=False):
|
|||
author_id = author_id.split('/')[-1]
|
||||
book.authors.add(get_or_create_author(author_id))
|
||||
|
||||
if data['covers'] and len(data['covers']):
|
||||
if data.get('covers') and len(data['covers']):
|
||||
book.cover.save(*get_cover(data['covers'][0]), save=True)
|
||||
|
||||
return book
|
||||
|
|
15
fedireads/templates/author.html
Normal file
15
fedireads/templates/author.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
{% extends 'layout.html' %}
|
||||
{% load fr_display %}
|
||||
{% block content %}
|
||||
<div id="content">
|
||||
<div>
|
||||
<h2>{{ author.data.name }}</h2>
|
||||
{% for book in books %}
|
||||
<div class="book-preview">
|
||||
{% include 'snippets/book.html' with book=book size=large description=True %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<p class="title">
|
||||
<a href="/book/{{ book.openlibrary_key }}">{{ book.data.title }}</a>
|
||||
</p>
|
||||
<p>by <a href="/author/{{ book.author.id }}" class="author">{{ book.authors.first.data.name }}</a></p>
|
||||
<p>by <a href="/author/{{ book.authors.first.openlibrary_key }}" class="author">{{ book.authors.first.data.name }}</a></p>
|
||||
|
||||
{% if rating %}
|
||||
{{ rating | stars }} {{ rating }}
|
||||
|
|
|
@ -29,6 +29,7 @@ urlpatterns = [
|
|||
re_path(r'^user/(?P<username>[\w@\.]+)/?$', views.user_profile),
|
||||
re_path(r'^user/(?P<username>\w+)/edit/?$', views.user_profile_edit),
|
||||
re_path(r'^book/(?P<book_identifier>\w+)/?$', views.book_page),
|
||||
re_path(r'^author/(?P<author_identifier>\w+)/?$', views.author_page),
|
||||
|
||||
# internal action endpoints
|
||||
re_path(r'^review/?$', views.review),
|
||||
|
|
|
@ -190,6 +190,22 @@ def book_page(request, book_identifier):
|
|||
return TemplateResponse(request, 'book.html', data)
|
||||
|
||||
|
||||
@login_required
|
||||
def author_page(request, author_identifier):
|
||||
''' landing page for an author '''
|
||||
try:
|
||||
author = models.Author.objects.get(openlibrary_key=author_identifier)
|
||||
except ValueError:
|
||||
return HttpResponseNotFound()
|
||||
|
||||
books = models.Book.objects.filter(authors=author)
|
||||
data = {
|
||||
'author': author,
|
||||
'books': books,
|
||||
}
|
||||
return TemplateResponse(request, 'author.html', data)
|
||||
|
||||
|
||||
@login_required
|
||||
def shelve(request, shelf_id, book_id, reshelve=True):
|
||||
''' put a book on a user's shelf '''
|
||||
|
|
Loading…
Reference in a new issue