fix mark time edge case

This commit is contained in:
Her Email 2023-11-22 22:29:38 -05:00 committed by Henri Dickson
parent a10e7ffc0a
commit 7b70c8499d
4 changed files with 20 additions and 7 deletions

View file

@ -109,7 +109,7 @@ class Setup:
}
)
else:
logger.debug(f"Default relay is disabled.")
logger.info(f"Default relay is disabled.")
else:
if relay_follow:
logger.debug(

View file

@ -194,14 +194,12 @@ class Mark:
self.shelfmember.visibility = visibility
shelfmember_changed = True
# retract most recent post about this status when visibility changed
latest_post = self.shelfmember.latest_post
if latest_post:
Takahe.delete_posts([latest_post.pk])
if self.shelfmember.latest_post:
Takahe.delete_posts([self.shelfmember.latest_post.pk])
if created_time and created_time != self.shelfmember.created_time:
self.shelfmember.created_time = created_time
log_entry.timestamp = created_time
log_entry.save(update_fields=["timestamp"])
self.shelfmember.change_timestamp(created_time)
shelfmember_changed = True
if shelfmember_changed:
self.shelfmember.save()

View file

@ -137,7 +137,7 @@ class ShelfMember(ListMember):
return log
def log_and_delete(self):
ShelfLogEntry.objects.create(
ShelfLogEntry.objects.get_or_create(
owner=self.owner,
shelf_type=None,
item=self.item,
@ -180,6 +180,14 @@ class ShelfLogEntry(models.Model):
"takahe.Post", related_name="log_entries", through="ShelfLogEntryPost"
)
class Meta:
constraints = [
models.UniqueConstraint(
fields=["owner", "item", "timestamp", "shelf_type"],
name="unique_shelf_log_entry",
),
]
def __str__(self):
return f"{self.owner}:{self.shelf_type}:{self.item.uuid}:{self.timestamp}"

View file

@ -131,7 +131,14 @@ def mark(request: AuthedHttpRequest, item_uuid):
)
mark_date = None
if request.POST.get("mark_anotherday"):
dt = parse_datetime(request.POST.get("mark_date", "") + " 20:00:00")
shelf_time_offset = {
ShelfType.WISHLIST: " 20:00:00",
ShelfType.PROGRESS: " 21:00:00",
ShelfType.COMPLETE: " 22:00:00",
}
dt = parse_datetime(
request.POST.get("mark_date", "") + shelf_time_offset[status]
)
mark_date = (
dt.replace(tzinfo=timezone.get_current_timezone()) if dt else None
)