From 041f2fc41304ccbd8199f57c297a9858cfe9e218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adeodato=20Sim=C3=B3?= Date: Sun, 28 Jul 2024 05:57:57 -0300 Subject: [PATCH] edit_readthrough: set start_date/finish_date iff present in request Fixes: #3164 --- bookwyrm/tests/views/test_status.py | 4 +--- bookwyrm/views/status.py | 11 +++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/bookwyrm/tests/views/test_status.py b/bookwyrm/tests/views/test_status.py index 21dc11dcc..af8a6dc3f 100644 --- a/bookwyrm/tests/views/test_status.py +++ b/bookwyrm/tests/views/test_status.py @@ -1,6 +1,5 @@ """ test for app action functionality """ import json -from unittest import expectedFailure from unittest.mock import patch import dateutil from django.core.exceptions import PermissionDenied @@ -170,7 +169,6 @@ class StatusViews(TestCase): self.assertEqual(status.rating, 4.0) self.assertIsNone(status.edited_date) - @expectedFailure # https://github.com/bookwyrm-social/bookwyrm/issues/3164 def test_create_status_progress(self, *_): """create a status that updates a readthrough""" start_date = timezone.make_aware(dateutil.parser.parse("2024-07-27")) @@ -200,7 +198,7 @@ class StatusViews(TestCase): readthrough.refresh_from_db() self.assertEqual(1, readthrough.progress) - self.assertEqual(start_date, readthrough.start_date) + self.assertEqual(start_date, readthrough.start_date) # not overwritten def test_create_status_wrong_user(self, *_): """You can't compose statuses for someone else""" diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index f2f03405f..85c41e3ec 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -201,12 +201,11 @@ def edit_readthrough(request): # TODO: remove this, it duplicates the code in the ReadThrough view readthrough = get_object_or_404(models.ReadThrough, id=request.POST.get("id")) - readthrough.start_date = load_date_in_user_tz_as_utc( - request.POST.get("start_date"), request.user - ) - readthrough.finish_date = load_date_in_user_tz_as_utc( - request.POST.get("finish_date"), request.user - ) + if start_date := request.POST.get("start_date"): + readthrough.start_date = load_date_in_user_tz_as_utc(start_date, request.user) + + if finish_date := request.POST.get("finish_date"): + readthrough.finish_date = load_date_in_user_tz_as_utc(finish_date, request.user) progress = request.POST.get("progress") try: