diff --git a/bookwyrm/connectors/abstract_connector.py b/bookwyrm/connectors/abstract_connector.py index 767188232..db80677f3 100644 --- a/bookwyrm/connectors/abstract_connector.py +++ b/bookwyrm/connectors/abstract_connector.py @@ -217,6 +217,10 @@ def dict_from_mappings(data, mappings): the subclass""" result = {} for mapping in mappings: + # sometimes there are multiple mappings for one field, don't + # overwrite earlier writes in that case + if mapping.local_field in result and result[mapping.local_field]: + continue result[mapping.local_field] = mapping.get_value(data) return result diff --git a/bookwyrm/connectors/inventaire.py b/bookwyrm/connectors/inventaire.py index dc27f2c02..c13ef7f8a 100644 --- a/bookwyrm/connectors/inventaire.py +++ b/bookwyrm/connectors/inventaire.py @@ -21,6 +21,7 @@ class Connector(AbstractConnector): ] self.book_mappings = [ Mapping("title", remote_field="wdt:P1476", formatter=get_first), + Mapping("title", remote_field="labels", formatter=get_language_code), Mapping("subtitle", remote_field="wdt:P1680", formatter=get_first), Mapping("inventaireId", remote_field="uri"), Mapping( @@ -211,4 +212,8 @@ class Connector(AbstractConnector): def get_language_code(options, code="en"): """when there are a bunch of translation but we need a single field""" - return options.get(code) + result = options.get(code) + if result: + return result + values = list(options.values()) + return values[0] if values else None diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 980061840..40da64861 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -155,9 +155,12 @@ {% if user_authenticated %} +
-

{% trans "Your reading activity" %}

+
+

{% trans "Your reading activity" %}

+
{% trans "Add read dates" as button_text %} {% include 'snippets/toggle/open_button.html' with text=button_text icon="plus" class="is-small" controls_text="add-readthrough" %} @@ -184,11 +187,88 @@ {% include 'snippets/readthrough.html' with readthrough=readthrough %} {% endfor %}
+
{% include 'snippets/create_status.html' with book=book hide_cover=True %}
{% endif %} +
+ {% if request.user.is_authenticated %} + {% if user_statuses.review_count or user_statuses.comment_count or user_stuatses.quotation_count %} + + {% endif %} + {% endif %} + + {% for review in statuses %} +
+ {% with status=review hide_book=True depth=1 %} + {% include 'snippets/status/status.html' %} + {% endwith %} +
+ {% endfor %} + +
+ {% for rating in ratings %} + {% with user=rating.user %} +
+
+
+ {% include 'snippets/avatar.html' %} +
+ +
+ +
+

{% trans "rated it" %}

+ + {% include 'snippets/stars.html' with rating=rating.rating %} +
+ +
+
+
+ {% endwith %} + {% endfor %} +
+
+ {% include 'snippets/pagination.html' with page=statuses path=request.path anchor="#reviews" %} +
+
{% if book.subjects %} @@ -247,80 +327,6 @@
-
- {% if request.user.is_authenticated %} - - {% endif %} - - {% for review in statuses %} -
- {% with status=review hide_book=True depth=1 %} - {% include 'snippets/status/status.html' %} - {% endwith %} -
- {% endfor %} - -
- {% for rating in ratings %} - {% with user=rating.user %} -
-
-
- {% include 'snippets/avatar.html' %} -
- -
- -
-

{% trans "rated it" %}

- - {% include 'snippets/stars.html' with rating=rating.rating %} -
- -
-
-
- {% endwith %} - {% endfor %} -
-
- {% include 'snippets/pagination.html' with page=statuses path=request.path anchor="#reviews" %} -
-
{% endwith %} {% endblock %} diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index 9243d3afb..2902f793f 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -44,8 +44,15 @@
- {% include 'snippets/book_titleby.html' %} - {% include 'snippets/stars.html' with rating=item.book|rating:request.user %} +

+ {% include 'snippets/book_titleby.html' %} +

+

+ {% include 'snippets/stars.html' with rating=item.book|rating:request.user %} +

+

+ {{ book|book_description|to_markdown|default:""|safe|truncatewords_html:20 }} +

{% include 'snippets/shelve_button/shelve_button.html' %}
diff --git a/bookwyrm/templates/snippets/readthrough.html b/bookwyrm/templates/snippets/readthrough.html index a240a8215..d5e79b864 100644 --- a/bookwyrm/templates/snippets/readthrough.html +++ b/bookwyrm/templates/snippets/readthrough.html @@ -1,7 +1,7 @@ {% load i18n %} {% load humanize %} {% load tz %} -
+
@@ -48,7 +48,9 @@ {% endif %} {% endif %} + {% if readthrough.start_date %}
  • {{ readthrough.start_date | localtime | naturalday }}: {% trans "started" %}
  • + {% endif %}
    diff --git a/bookwyrm/templates/user/user.html b/bookwyrm/templates/user/user.html index fead8fcf6..99698575b 100644 --- a/bookwyrm/templates/user/user.html +++ b/bookwyrm/templates/user/user.html @@ -53,11 +53,6 @@

    {% now 'Y' %} Reading Goal

    {% include 'snippets/goal_progress.html' with goal=goal %}
    -{% elif user == request.user %} - {% endif %}
    diff --git a/bookwyrm/tests/connectors/test_inventaire_connector.py b/bookwyrm/tests/connectors/test_inventaire_connector.py index 4058b0670..71e407e95 100644 --- a/bookwyrm/tests/connectors/test_inventaire_connector.py +++ b/bookwyrm/tests/connectors/test_inventaire_connector.py @@ -5,7 +5,7 @@ from django.test import TestCase import responses from bookwyrm import models -from bookwyrm.connectors.inventaire import Connector +from bookwyrm.connectors.inventaire import Connector, get_language_code class Inventaire(TestCase): @@ -156,3 +156,18 @@ class Inventaire(TestCase): formatted.cover, "https://covers.inventaire.io/img/entities/12345", ) + + def test_get_language_code(self): + """get english or whatever is in reach""" + options = { + "de": "bip", + "en": "hi", + "fr": "there", + } + self.assertEqual(get_language_code(options), "hi") + + options = { + "fr": "there", + } + self.assertEqual(get_language_code(options), "there") + self.assertIsNone(get_language_code({}))