From 1d3c8afcd95fedbf786befe1345adb04fd21b760 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 12 Jan 2023 17:13:23 -0500 Subject: [PATCH] allow mark in a different date; shelf change will send new toot instead of edit; log shelf change for future display --- .../0004_alter_shelflogentry_timestamp.py | 18 ++++++++++++++++++ journal/models.py | 14 ++++++-------- journal/tests.py | 2 +- 3 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 journal/migrations/0004_alter_shelflogentry_timestamp.py diff --git a/journal/migrations/0004_alter_shelflogentry_timestamp.py b/journal/migrations/0004_alter_shelflogentry_timestamp.py new file mode 100644 index 00000000..da5c7dc7 --- /dev/null +++ b/journal/migrations/0004_alter_shelflogentry_timestamp.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.16 on 2023-01-12 22:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("journal", "0003_auto_20230113_0506"), + ] + + operations = [ + migrations.AlterField( + model_name="shelflogentry", + name="timestamp", + field=models.DateTimeField(), + ), + ] diff --git a/journal/models.py b/journal/models.py index 2579931c..e9440463 100644 --- a/journal/models.py +++ b/journal/models.py @@ -590,7 +590,9 @@ class ShelfManager: if metadata is None: metadata = last_metadata or {} log_time = ( - new_shelfmember.created_time if new_shelfmember else timezone.now() + new_shelfmember.created_time + if new_shelfmember and new_shelfmember != last_shelfmember + else timezone.now() ) ShelfLogEntry.objects.create( owner=self.owner, @@ -927,8 +929,8 @@ class Mark: log = ShelfLogEntry.objects.filter( owner=self.owner, item=self.item, - created_time=self.shelfmember.created_time, - ) + timestamp=self.shelfmember.created_time, + ).first() self.shelfmember.created_time = created_time self.shelfmember.save(update_fields=["created_time"]) if log: @@ -937,7 +939,7 @@ class Mark: else: ShelfLogEntry.objects.create( owner=self.owner, - shelf=self.shelf, + shelf_type=shelf_type, item=self.item, metadata=self.metadata, timestamp=created_time, @@ -963,14 +965,10 @@ class Mark: self.save = lambda **args: None if not share_mark(self): raise ValueError("sharing failed") - if not self.shelfmember.metadata: - self.shelfmember.metadata = {} if self.shelfmember.metadata.get("shared_link") != self.shared_link: self.shelfmember.metadata["shared_link"] = self.shared_link self.shelfmember.save() elif share_as_new_post and self.shelfmember: - if not self.shelfmember.metadata: - self.shelfmember.metadata = {} self.shelfmember.metadata["shared_link"] = None self.shelfmember.save() diff --git a/journal/tests.py b/journal/tests.py index d0bd8fcc..8f29bf04 100644 --- a/journal/tests.py +++ b/journal/tests.py @@ -60,7 +60,7 @@ class ShelfTest(TestCase): self.assertEqual(log.count(), 2) self.assertEqual(log.last().metadata, {}) shelf_manager.move_item(book1, ShelfType.PROGRESS, metadata={"progress": 1}) - time.sleep(0.01) + time.sleep(0.001) self.assertEqual(q1.members.all().count(), 1) self.assertEqual(q2.members.all().count(), 1) log = shelf_manager.get_log_for_item(book1)