diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index e504041b..6fa2e441 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -4,7 +4,6 @@ {% load humanize %} {% load utilities %} {% load static %} -{% load layout %} {% block title %}{{ book|book_title }}{% endblock %} @@ -43,7 +42,7 @@

{% endif %} - {% if book.authors %} + {% if book.authors.exists %}
{% trans "by" %} {% include 'snippets/authors.html' with book=book %}
diff --git a/bookwyrm/templates/snippets/book_titleby.html b/bookwyrm/templates/snippets/book_titleby.html index 5eddabff..1c2bb176 100644 --- a/bookwyrm/templates/snippets/book_titleby.html +++ b/bookwyrm/templates/snippets/book_titleby.html @@ -2,7 +2,7 @@ {% load utilities %} {% spaceless %} -{% if book.authors %} +{% if book.authors.exists %} {% blocktrans trimmed with path=book.local_path title=book|book_title %} {{ title }} by {% endblocktrans %} diff --git a/bookwyrm/templatetags/utilities.py b/bookwyrm/templatetags/utilities.py index abb52499..c8ebd17d 100644 --- a/bookwyrm/templatetags/utilities.py +++ b/bookwyrm/templatetags/utilities.py @@ -55,7 +55,8 @@ def truncatepath(value, arg): @register.simple_tag(takes_context=False) def get_book_cover_thumbnail(book, size="medium", ext="jpg"): - """Returns a book thumbnail at the specified size and extension, with fallback if needed""" + """Returns a book thumbnail at the specified size and extension, + with fallback if needed""" if size == "": size = "medium" try: diff --git a/bookwyrm/tests/views/test_status.py b/bookwyrm/tests/views/test_status.py index ff429e20..6c236b6d 100644 --- a/bookwyrm/tests/views/test_status.py +++ b/bookwyrm/tests/views/test_status.py @@ -281,7 +281,7 @@ class StatusViews(TestCase): ("@nutria@%s" % DOMAIN, user), ) - def test_format_links(self, *_): + def test_format_links_simple_url(self, *_): """find and format urls into a tags""" url = "http://www.fish.com/" self.assertEqual( @@ -291,6 +291,27 @@ class StatusViews(TestCase): views.status.format_links("(%s)" % url), '(www.fish.com/)' % url, ) + + def test_format_links_paragraph_break(self, *_): + """find and format urls into a tags""" + url = """okay + +http://www.fish.com/""" + self.assertEqual( + views.status.format_links(url), + 'okay\n\nwww.fish.com/', + ) + + def test_format_links_parens(self, *_): + """find and format urls into a tags""" + url = "http://www.fish.com/" + self.assertEqual( + views.status.format_links("(%s)" % url), + '(www.fish.com/)' % url, + ) + + def test_format_links_special_chars(self, *_): + """find and format urls into a tags""" url = "https://archive.org/details/dli.granth.72113/page/n25/mode/2up" self.assertEqual( views.status.format_links(url), diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index fe1dfda1..a864d4b7 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -155,9 +155,11 @@ def format_links(content): """detect and format links""" validator = URLValidator() formatted_content = "" - split_content = content.split() + split_content = re.split(r"(\s+)", content) - for index, potential_link in enumerate(split_content): + for potential_link in split_content: + if not potential_link: + continue wrapped = _wrapped(potential_link) if wrapped: wrapper_close = potential_link[-1] @@ -182,8 +184,6 @@ def format_links(content): if wrapped: formatted_content += wrapper_close - if index < len(split_content) - 1: - formatted_content += " " return formatted_content