From f958ee5ad8213b116a155638cdd6bd9617bc59df Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Wed, 26 Nov 2025 03:48:48 +0000 Subject: [PATCH] feat: trigger update_pseudo_materialized_fields on Post and Question admin save When saving a Post or Question in the Django admin, this now triggers the update_pseudo_materialized_fields method to ensure all pseudo materialized fields (scheduled/actual close/resolve times, etc.) are properly updated. Fixes #3832 Co-authored-by: Luke Sabor --- posts/admin.py | 4 ++++ questions/admin.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/posts/admin.py b/posts/admin.py index 8d15f9f112..7c569929d7 100644 --- a/posts/admin.py +++ b/posts/admin.py @@ -161,6 +161,10 @@ def mark_as_deleted(self, request, queryset: QuerySet[Post]): mark_as_deleted.short_description = "Mark as DELETED" + def save_model(self, request, obj, form, change): + super().save_model(request, obj, form, change) + obj.update_pseudo_materialized_fields() + def get_fields(self, request, obj=None): fields = super().get_fields(request, obj) for field in ["view_questions"]: diff --git a/questions/admin.py b/questions/admin.py index 058c8fd3f8..01a8a4c5fd 100644 --- a/questions/admin.py +++ b/questions/admin.py @@ -90,6 +90,12 @@ def should_update_translations(self, obj): return not is_private and is_approved + def save_model(self, request, obj, form, change): + super().save_model(request, obj, form, change) + post = obj.get_post() + if post: + post.update_pseudo_materialized_fields() + def get_fields(self, request, obj=None): fields = super().get_fields(request, obj) for field in ["post_link", "view_forecasts"]: